diff --git a/CLAUDE.md b/CLAUDE.md index 230607b..776fa97 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -213,25 +213,40 @@ go test -v ./... ### UI 组件使用原则 **重要**: 在开发前端页面时,必须优先使用 UI 框架的组件。 -- **优先使用 antd-mobile 组件**: 项目使用 antd-mobile 作为 UI 框架,开发时应优先查找并使用框架提供的组件 +- **优先使用 Ant Design 组件**: 项目使用 **antd (Ant Design)** 作为 UI 框架,开发时应优先查找并使用框架提供的组件 - **常用组件示例**: - 表单输入: 使用 `Input` 组件,而非原生 `` - 按钮: 使用 `Button` 组件,而非原生 ` - - - diff --git a/web/src/components/TabBarLayout.less b/web/src/components/TabBarLayout.less deleted file mode 100644 index feeb664..0000000 --- a/web/src/components/TabBarLayout.less +++ /dev/null @@ -1,21 +0,0 @@ -// 布局容器 -.tab-bar-layout { - display: flex; - flex-direction: column; - height: 100vh; -} - -// 内容区域 -.tab-bar-content { - flex: 1; - overflow-y: auto; -} - -// 底部导航栏 -.tab-bar-footer { - position: fixed; - bottom: 0; - left: 0; - right: 0; - z-index: 1000; -} diff --git a/web/src/components/TabBarLayout.module.less b/web/src/components/TabBarLayout.module.less new file mode 100644 index 0000000..5e9ffaa --- /dev/null +++ b/web/src/components/TabBarLayout.module.less @@ -0,0 +1,63 @@ +.layout { + min-height: 100vh; +} + +.content { + flex: 1; +} + +.footer { + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + padding: 0; + background: white; + box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1); +} + +.menu { + display: flex; + justify-content: space-around; + border-bottom: none; + + :global { + .ant-menu-item { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 60px; + margin: 0; + padding: 8px 0; + + .anticon { + font-size: 20px; + } + } + + .ant-menu-item-selected { + background-color: transparent; + + &::after { + display: none; + } + } + } +} + +// 响应式设计 - 移动端 +@media (max-width: 768px) { + .footer { + display: block; + } +} + +// 响应式设计 - PC端 +@media (min-width: 769px) { + .footer { + display: none; + } +} diff --git a/web/src/components/TabBarLayout.tsx b/web/src/components/TabBarLayout.tsx index b5c1c9f..988e76e 100644 --- a/web/src/components/TabBarLayout.tsx +++ b/web/src/components/TabBarLayout.tsx @@ -1,52 +1,68 @@ -import React from 'react' +import React, { useState, useEffect } from 'react' import { useNavigate, useLocation, Outlet } from 'react-router-dom' -import { TabBar } from 'antd-mobile' +import { Layout, Menu } from 'antd' import { - AppOutline, - UserOutline, - UnorderedListOutline, -} from 'antd-mobile-icons' -import './TabBarLayout.less' + HomeOutlined, + FileTextOutlined, + UserOutlined, +} from '@ant-design/icons' +import styles from './TabBarLayout.module.less' + +const { Footer, Content } = Layout const TabBarLayout: React.FC = () => { const navigate = useNavigate() const location = useLocation() + const [isMobile, setIsMobile] = useState(window.innerWidth <= 768) - const tabs = [ + useEffect(() => { + const handleResize = () => { + setIsMobile(window.innerWidth <= 768) + } + + window.addEventListener('resize', handleResize) + return () => window.removeEventListener('resize', handleResize) + }, []) + + const menuItems = [ { key: '/', - title: '首页', - icon: , + icon: , + label: '首页', }, { key: '/question', - title: '答题', - icon: , + icon: , + label: '答题', }, { key: '/profile', - title: '我的', - icon: , + icon: , + label: '我的', }, ] - const setRouteActive = (value: string) => { - navigate(value) + const handleMenuClick = (key: string) => { + navigate(key) } return ( -
-
+ + -
-
- - {tabs.map(item => ( - - ))} - -
-
+ + {isMobile && ( +
+ handleMenuClick(key)} + className={styles.menu} + /> +
+ )} + ) } diff --git a/web/src/pages/About.module.less b/web/src/pages/About.module.less index 88b2bb1..747c70a 100644 --- a/web/src/pages/About.module.less +++ b/web/src/pages/About.module.less @@ -1,17 +1,58 @@ -// 变量 -@bg-color: #f5f5f5; - -// 容器 .container { - display: flex; - flex-direction: column; - height: 100vh; - background-color: @bg-color; + min-height: 100vh; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + padding: 0; } -// 内容区域 .content { - flex: 1; - overflow-y: auto; - padding: 16px; + padding: 20px; + padding-bottom: 40px; + max-width: 800px; + margin: 0 auto; +} + +.header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 24px; + padding: 16px 0; +} + +.card { + border-radius: 16px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); + margin-bottom: 20px; +} + +.homeButton { + height: 48px; + font-size: 16px; + font-weight: 500; + border-radius: 12px; + margin-top: 16px; +} + +// 响应式设计 - 移动端 +@media (max-width: 768px) { + .content { + padding: 16px; + } + + .card { + border-radius: 12px; + margin-bottom: 16px; + } + + .homeButton { + height: 44px; + font-size: 15px; + } +} + +// 响应式设计 - PC端 +@media (min-width: 769px) { + .content { + padding: 32px; + } } diff --git a/web/src/pages/About.tsx b/web/src/pages/About.tsx index 31c3cef..2c0d2b5 100644 --- a/web/src/pages/About.tsx +++ b/web/src/pages/About.tsx @@ -1,45 +1,61 @@ import React from 'react' import { useNavigate } from 'react-router-dom' -import { NavBar, Card, List, Space, Button } from 'antd-mobile' +import { Card, List, Button, Typography, Descriptions, Space } from 'antd' +import { LeftOutlined } from '@ant-design/icons' import styles from './About.module.less' +const { Title } = Typography + const About: React.FC = () => { const navigate = useNavigate() return (
- navigate(-1)}>关于 -
- - - - 版本 - 开发者 - 许可证 - +
+ + 关于 +
+
- - - ✅ 响应式移动端设计 - ✅ TypeScript 类型安全 - ✅ Vite 快速构建 - ✅ antd-mobile 组件库 - ✅ React Router 路由 - ✅ API 代理配置 - - - - - + + + 1.0.0 + AnKao Team + MIT + + + + {item}} + /> + + +
) diff --git a/web/src/pages/Home.module.less b/web/src/pages/Home.module.less index 3fa176a..db9ef94 100644 --- a/web/src/pages/Home.module.less +++ b/web/src/pages/Home.module.less @@ -1,200 +1,130 @@ .container { min-height: 100vh; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); - padding: 20px 16px; + padding: 24px; padding-bottom: 80px; } .header { text-align: center; - margin-bottom: 24px; + margin-bottom: 32px; color: white; .title { - font-size: 32px; - font-weight: bold; - margin: 0; - margin-bottom: 8px; - text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + color: white !important; + margin-bottom: 8px !important; + text-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); } .subtitle { - font-size: 14px; - margin: 0; - opacity: 0.9; + color: rgba(255, 255, 255, 0.9); } } .statsCard { - margin-bottom: 24px; + margin-bottom: 32px; border-radius: 16px; - overflow: hidden; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); - - :global { - .adm-card-body { - padding: 20px 16px; - } - } -} - -.statsContent { - display: flex; - justify-content: space-around; - align-items: center; -} - -.statItem { - flex: 1; - text-align: center; - - .statValue { - font-size: 28px; - font-weight: bold; - color: #1677ff; - margin-bottom: 4px; - } - - .statLabel { - font-size: 13px; - color: #666; - } -} - -.statDivider { - width: 1px; - height: 40px; - background: #e5e5e5; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); } .typeSection { - margin-bottom: 24px; + margin-bottom: 32px; .sectionTitle { - font-size: 18px; - font-weight: bold; - color: white; - margin: 0 0 16px 0; + color: white !important; + margin-bottom: 16px !important; display: flex; align-items: center; gap: 8px; } - - .typeGrid { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 16px; - } } .typeCard { border-radius: 16px; - overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); transition: all 0.3s ease; - cursor: pointer; + height: 100%; - &:active { - transform: scale(0.95); - } - - :global { - .adm-card-body { - padding: 24px 16px; - text-align: center; - } + &:hover { + transform: translateY(-4px); + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2); } .typeIcon { margin-bottom: 12px; - display: flex; - justify-content: center; - align-items: center; } .typeTitle { - font-size: 18px; - font-weight: bold; - color: #333; - margin-bottom: 8px; + margin: 8px 0 !important; } .typeDesc { - font-size: 13px; - color: #999; + margin: 0 !important; } } .quickStart { .quickCard { border-radius: 16px; - overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); - cursor: pointer; transition: all 0.3s ease; background: linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%); - &:active { - transform: scale(0.98); - } - - :global { - .adm-card-body { - padding: 20px; - } - } - - .quickIcon { - font-size: 48px; - line-height: 1; - } - - .quickTitle { - font-size: 18px; - font-weight: bold; - color: #333; - margin-bottom: 4px; - } - - .quickDesc { - font-size: 13px; - color: #666; + &:hover { + transform: translateY(-4px); + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2); } } } -// 移动端适配 +// 响应式设计 - 移动端 @media (max-width: 768px) { .container { - padding: 16px 12px; + padding: 16px; padding-bottom: 70px; } .header { + margin-bottom: 24px; + .title { - font-size: 28px; + font-size: 24px !important; } } - .statItem { - .statValue { - font-size: 24px; - } + .statsCard { + margin-bottom: 24px; } - .typeCard { - :global { - .adm-card-body { - padding: 20px 12px; - } - } + .typeSection { + margin-bottom: 24px; - .typeIcon { - font-size: 40px; - } - - .typeTitle { - font-size: 16px; + .sectionTitle { + font-size: 18px !important; + } + } +} + +// 响应式设计 - 平板 +@media (min-width: 769px) and (max-width: 1024px) { + .container { + padding: 32px; + padding-bottom: 80px; + } +} + +// 响应式设计 - PC端 +@media (min-width: 1025px) { + .container { + max-width: 1200px; + margin: 0 auto; + padding: 40px; + padding-bottom: 80px; + } + + .header { + .title { + font-size: 36px !important; } } } diff --git a/web/src/pages/Home.tsx b/web/src/pages/Home.tsx index 485a285..b6ff87a 100644 --- a/web/src/pages/Home.tsx +++ b/web/src/pages/Home.tsx @@ -1,54 +1,53 @@ import React, { useEffect, useState } from 'react' import { useNavigate } from 'react-router-dom' +import { Card, Statistic, Row, Col, Typography, message, Space } from 'antd' import { - Card, - Toast, - Space, -} from 'antd-mobile' -import { - FileOutline, - CheckCircleOutline, - UnorderedListOutline, - EditSOutline, -} from 'antd-mobile-icons' + FileTextOutlined, + CheckCircleOutlined, + UnorderedListOutlined, + EditOutlined, + RocketOutlined, +} from '@ant-design/icons' import * as questionApi from '../api/question' import type { Statistics } from '../types/question' import styles from './Home.module.less' +const { Title, Paragraph } = Typography + // 题型配置 const questionTypes = [ { key: 'single', title: '单选题', - icon: , + icon: , color: '#1677ff', description: '基础知识考察', }, { key: 'multiple', title: '多选题', - icon: , + icon: , color: '#52c41a', description: '综合能力提升', }, { key: 'judge', title: '判断题', - icon: , + icon: , color: '#fa8c16', description: '快速判断训练', }, { key: 'fill', title: '填空题', - icon: , + icon: , color: '#722ed1', description: '填空补充练习', }, { key: 'short', title: '简答题', - icon: , + icon: , color: '#eb2f96', description: '深度理解练习', }, @@ -87,21 +86,12 @@ const Home: React.FC = () => { if (res.success && res.data && res.data.length > 0) { // 跳转到答题页面,并传递题型参数 navigate(`/question?type=${type}`) - Toast.show({ - icon: 'success', - content: `开始${questionTypes.find(t => t.key === type)?.title}练习`, - }) + message.success(`开始${questionTypes.find(t => t.key === type)?.title}练习`) } else { - Toast.show({ - icon: 'fail', - content: '该题型暂无题目', - }) + message.warning('该题型暂无题目') } } catch (error) { - Toast.show({ - icon: 'fail', - content: '加载题目失败', - }) + message.error('加载题目失败') } } @@ -109,63 +99,82 @@ const Home: React.FC = () => {
{/* 头部 */}
-

AnKao 刷题

-

选择题型开始练习

+ AnKao 刷题 + 选择题型开始练习
{/* 统计卡片 */} -
-
-
{statistics.total_questions}
-
题库总数
-
-
-
-
{statistics.answered_questions}
-
已答题数
-
-
-
-
{statistics.accuracy.toFixed(0)}%
-
正确率
-
-
+ + + + + + + + + + +
{/* 题型选择 */}
-

- 选择题型 -

-
+ + <FileTextOutlined /> 选择题型 + + {questionTypes.map(type => ( - handleTypeClick(type.key)} - > -
- {type.icon} -
-
{type.title}
-
{type.description}
-
+ + handleTypeClick(type.key)} + styles={{ + body: { + textAlign: 'center', + padding: '24px', + } + }} + > +
+ {type.icon} +
+ {type.title} + {type.description} +
+ ))} -
+
{/* 快速开始 */}
navigate('/question')} > - -
🎲
+ +
+ +
-
随机练习
-
从所有题型中随机抽取
+ 随机练习 + 从所有题型中随机抽取
diff --git a/web/src/pages/Login.module.less b/web/src/pages/Login.module.less index e7301e6..7bd91b1 100644 --- a/web/src/pages/Login.module.less +++ b/web/src/pages/Login.module.less @@ -1,181 +1,83 @@ .container { min-height: 100vh; display: flex; - flex-direction: column; align-items: center; justify-content: center; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); - padding: 40px 20px; + padding: 20px; +} + +.content { + width: 100%; + max-width: 500px; +} + +.card { + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); + border-radius: 16px; + + :global { + .ant-card-body { + padding: 40px 32px; + } + } } .header { text-align: center; - margin-bottom: 48px; + margin-bottom: 32px; } .title { - font-size: 56px; + margin: 0 0 8px 0 !important; + color: #667eea !important; font-weight: 800; - color: #ffffff; - margin: 0 0 12px 0; - letter-spacing: 3px; - text-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); + letter-spacing: 2px; } .subtitle { - font-size: 16px; - color: rgba(255, 255, 255, 0.9); - margin: 0; - font-weight: 400; -} - -.form { - width: 100%; - max-width: 400px; -} - -.inputGroup { - margin-bottom: 24px; -} - -.label { + font-size: 15px; display: block; - margin-bottom: 10px; - font-size: 15px; - font-weight: 600; - color: #ffffff; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } -.input { - width: 100%; - padding: 14px 16px; - font-size: 15px; - border: 2px solid rgba(255, 255, 255, 0.3); - border-radius: 12px; - background: rgba(255, 255, 255, 0.95); - color: #333; - transition: all 0.3s ease; - outline: none; - box-sizing: border-box; - - &::placeholder { - color: #aaa; +// 响应式设计 - 移动端 +@media (max-width: 768px) { + .container { + padding: 12px; } - &:hover:not(:disabled) { - border-color: rgba(255, 255, 255, 0.6); - background: #ffffff; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + .content { + max-width: 100%; } - &:focus { - border-color: #ffffff; - background: #ffffff; - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); - } - - &:disabled { - opacity: 0.6; - cursor: not-allowed; - } -} - -.passwordWrapper { - position: relative; -} - -.passwordWrapper .input { - padding-right: 48px; -} - -.eyeButton { - position: absolute; - right: 12px; - top: 50%; - transform: translateY(-50%); - background: none; - border: none; - color: #999; - cursor: pointer; - padding: 8px; - display: flex; - align-items: center; - justify-content: center; - transition: color 0.2s ease; - font-size: 20px; - - &:hover { - color: #667eea; - } -} - -.submitButton { - margin-top: 32px; - height: 52px; - font-size: 17px; - font-weight: 700; - border-radius: 12px; - background: #ffffff; - color: #667eea; - border: none; - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); - transition: all 0.3s ease; - - &:not(:disabled):hover { - transform: translateY(-2px); - box-shadow: 0 6px 24px rgba(0, 0, 0, 0.25); - } - - &:not(:disabled):active { - transform: translateY(0); - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2); - } - - :global { - .adm-button { - background: transparent !important; - border: none !important; - color: #667eea !important; + .card { + :global { + .ant-card-body { + padding: 24px 20px; + } } } -} -.switchMode { - margin-top: 32px; - text-align: center; - - p { - margin: 0; - font-size: 15px; - color: rgba(255, 255, 255, 0.95); - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); + .header { + margin-bottom: 24px; } - .linkBtn { - background: none; - border: none; - color: #ffffff; - font-weight: 700; - cursor: pointer; - padding: 0 0 0 8px; - transition: all 0.2s ease; - font-size: 15px; - text-decoration: underline; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); + .title { + font-size: 28px !important; + } - &:hover:not(:disabled) { - opacity: 0.85; - transform: scale(1.05); - } - - &:active:not(:disabled) { - opacity: 0.7; - } - - &:disabled { - opacity: 0.5; - cursor: not-allowed; - } + .subtitle { + font-size: 14px; + } +} + +// 响应式设计 - 平板和PC端 +@media (min-width: 769px) { + .title { + font-size: 36px !important; + } + + .subtitle { + font-size: 16px; } } diff --git a/web/src/pages/Login.tsx b/web/src/pages/Login.tsx index 3c61600..278c7ec 100644 --- a/web/src/pages/Login.tsx +++ b/web/src/pages/Login.tsx @@ -1,9 +1,11 @@ import React, { useState, useEffect } from 'react' import { useNavigate } from 'react-router-dom' -import { Button, Toast } from 'antd-mobile' -import { EyeInvisibleOutline, EyeOutline } from 'antd-mobile-icons' +import { Form, Input, Button, Card, Tabs, message, Typography } from 'antd' +import { UserOutlined, LockOutlined, IdcardOutlined } from '@ant-design/icons' import styles from './Login.module.less' +const { Title, Text } = Typography + interface LoginResponse { success: boolean message: string @@ -19,14 +21,10 @@ interface LoginResponse { const Login: React.FC = () => { const navigate = useNavigate() - const [isLogin, setIsLogin] = useState(true) + const [activeTab, setActiveTab] = useState('login') const [loading, setLoading] = useState(false) - const [showPassword, setShowPassword] = useState(false) - - // 表单字段 - const [username, setUsername] = useState('') - const [password, setPassword] = useState('') - const [nickname, setNickname] = useState('') + const [loginForm] = Form.useForm() + const [registerForm] = Form.useForm() // 如果已登录,重定向到首页 useEffect(() => { @@ -37,15 +35,7 @@ const Login: React.FC = () => { }, [navigate]) // 处理登录 - const handleLogin = async () => { - if (!username || !password) { - Toast.show({ - icon: 'fail', - content: '请输入用户名和密码', - }) - return - } - + const handleLogin = async (values: { username: string; password: string }) => { setLoading(true) try { const response = await fetch('/api/login', { @@ -53,7 +43,7 @@ const Login: React.FC = () => { headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify({ username, password }), + body: JSON.stringify(values), }) const data: LoginResponse = await response.json() @@ -62,23 +52,13 @@ const Login: React.FC = () => { localStorage.setItem('token', data.data.token) localStorage.setItem('user', JSON.stringify(data.data.user)) - Toast.show({ - icon: 'success', - content: '登录成功', - }) - + message.success('登录成功') navigate('/') } else { - Toast.show({ - icon: 'fail', - content: data.message || '登录失败', - }) + message.error(data.message || '登录失败') } } catch (err) { - Toast.show({ - icon: 'fail', - content: '网络错误,请稍后重试', - }) + message.error('网络错误,请稍后重试') console.error('登录错误:', err) } finally { setLoading(false) @@ -86,23 +66,7 @@ const Login: React.FC = () => { } // 处理注册 - const handleRegister = async () => { - if (!username || !password) { - Toast.show({ - icon: 'fail', - content: '请输入用户名和密码', - }) - return - } - - if (password.length < 6) { - Toast.show({ - icon: 'fail', - content: '密码长度至少6位', - }) - return - } - + const handleRegister = async (values: { username: string; password: string; nickname?: string }) => { setLoading(true) try { const response = await fetch('/api/register', { @@ -110,7 +74,7 @@ const Login: React.FC = () => { headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify({ username, password, nickname }), + body: JSON.stringify(values), }) const data: LoginResponse = await response.json() @@ -119,131 +83,134 @@ const Login: React.FC = () => { localStorage.setItem('token', data.data.token) localStorage.setItem('user', JSON.stringify(data.data.user)) - Toast.show({ - icon: 'success', - content: '注册成功', - }) - + message.success('注册成功') navigate('/') } else { - Toast.show({ - icon: 'fail', - content: data.message || '注册失败', - }) + message.error(data.message || '注册失败') } } catch (err) { - Toast.show({ - icon: 'fail', - content: '网络错误,请稍后重试', - }) + message.error('网络错误,请稍后重试') console.error('注册错误:', err) } finally { setLoading(false) } } - const handleSubmit = (e: React.FormEvent) => { - e.preventDefault() - if (isLogin) { - handleLogin() - } else { - handleRegister() - } - } + const loginTabContent = ( +
+ + } + placeholder="请输入用户名" + /> + + + + } + placeholder="请输入密码" + /> + + + + + +
+ ) + + const registerTabContent = ( +
+ + } + placeholder="请输入用户名" + /> + + + + } + placeholder="请输入密码(至少6位)" + /> + + + + } + placeholder="请输入昵称(可选)" + /> + + + + + +
+ ) return (
-
-

AnKao

-

欢迎使用题库系统

-
+
+ +
+ AnKao + 欢迎使用题库系统 +
-
-
- - setUsername(e.target.value)} - placeholder="请输入用户名" - disabled={loading} - className={styles.input} + -
- -
- -
- setPassword(e.target.value)} - placeholder={isLogin ? '请输入密码' : '请输入密码(至少6位)'} - disabled={loading} - className={styles.input} - /> - -
-
- - {!isLogin && ( -
- - setNickname(e.target.value)} - placeholder="请输入昵称" - disabled={loading} - className={styles.input} - /> -
- )} - - -
- -
- {isLogin ? ( -

- 还没有账号? - -

- ) : ( -

- 已有账号? - -

- )} +
) diff --git a/web/src/pages/Profile.module.less b/web/src/pages/Profile.module.less index 0fa1dcf..5970243 100644 --- a/web/src/pages/Profile.module.less +++ b/web/src/pages/Profile.module.less @@ -1,24 +1,25 @@ -// 变量定义 -@bg-color: #f5f5f5; -@text-secondary: #999; - -// 页面容器 -.page { +.container { min-height: 100vh; - background-color: @bg-color; - padding: 16px; - padding-bottom: 70px; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + padding: 24px; + padding-bottom: 80px; +} + +.content { + max-width: 600px; + margin: 0 auto; } -// 用户卡片 .userCard { - margin-bottom: 16px; + border-radius: 16px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); + margin-bottom: 24px; } .userInfo { display: flex; align-items: center; - gap: 16px; + gap: 20px; } .userDetails { @@ -26,17 +27,53 @@ } .userNickname { - font-size: 20px; - font-weight: bold; - margin-bottom: 4px; + margin: 0 !important; } .userUsername { - font-size: 14px; - color: @text-secondary; + display: block; + margin-top: 4px; } -// 登出容器 -.logoutContainer { - margin-top: 24px; +.menuCard { + border-radius: 16px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); + margin-bottom: 24px; +} + +.logoutButton { + height: 48px; + font-size: 16px; + font-weight: 500; + border-radius: 12px; +} + +// 响应式设计 - 移动端 +@media (max-width: 768px) { + .container { + padding: 16px; + padding-bottom: 70px; + } + + .userCard, + .menuCard { + border-radius: 12px; + margin-bottom: 16px; + } + + .userInfo { + gap: 16px; + } + + .logoutButton { + height: 44px; + font-size: 15px; + } +} + +// 响应式设计 - PC端 +@media (min-width: 769px) { + .container { + padding: 32px; + } } diff --git a/web/src/pages/Profile.tsx b/web/src/pages/Profile.tsx index 7763a9d..a527db4 100644 --- a/web/src/pages/Profile.tsx +++ b/web/src/pages/Profile.tsx @@ -5,17 +5,21 @@ import { Avatar, List, Button, - Dialog, - Toast, -} from 'antd-mobile' + Modal, + message, + Typography, + Space, +} from 'antd' import { - RightOutline, - SetOutline, - FileOutline, - UserOutline, -} from 'antd-mobile-icons' + RightOutlined, + SettingOutlined, + FileTextOutlined, + UserOutlined, +} from '@ant-design/icons' import styles from './Profile.module.less' +const { Title, Text } = Typography + interface UserInfo { username: string nickname: string @@ -40,18 +44,17 @@ const Profile: React.FC = () => { } }, []) - const handleLogout = async () => { - const result = await Dialog.confirm({ - content: '确定要退出登录吗?', + const handleLogout = () => { + Modal.confirm({ + title: '确定要退出登录吗?', + onOk: () => { + localStorage.removeItem('token') + localStorage.removeItem('user') + setUserInfo(null) + message.success('已退出登录') + navigate('/login') + }, }) - - if (result) { - localStorage.removeItem('token') - localStorage.removeItem('user') - setUserInfo(null) - Toast.show('已退出登录') - navigate('/login') - } } const handleLogin = () => { @@ -59,70 +62,74 @@ const Profile: React.FC = () => { } return ( -
- {/* 用户信息卡片 */} - - {userInfo ? ( -
- +
+ {/* 用户信息卡片 */} + + {userInfo ? ( +
+ } + /> +
+ {userInfo.nickname} + @{userInfo.username} +
+
+ ) : ( +
+ } /> +
+ 未登录 + +
+
+ )} +
+ + {/* 功能列表 */} + + + message.info('功能开发中')} + style={{ cursor: 'pointer' }} > - {!userInfo.avatar && } - -
-
{userInfo.nickname}
-
@{userInfo.username}
-
-
- ) : ( -
- - - -
-
未登录
- -
-
- )} - + + + 我的题目 + + + + message.info('功能开发中')} + style={{ cursor: 'pointer' }} + > + + + 设置 + + + + + - {/* 功能列表 */} - - } - onClick={() => Toast.show('功能开发中')} - clickable - > - 我的题目 - - - } - onClick={() => Toast.show('功能开发中')} - clickable - > - 设置 - - - - - {/* 退出登录按钮 */} - {userInfo && ( -
- -
- )} + )} +
) } diff --git a/web/src/pages/Question.module.less b/web/src/pages/Question.module.less index a9bb9ce..0bad6f0 100644 --- a/web/src/pages/Question.module.less +++ b/web/src/pages/Question.module.less @@ -1,240 +1,102 @@ -// 变量定义 -@bg-color: #f5f5f5; -@white: #fff; -@primary-color: #1677ff; -@text-color: #333; -@text-secondary: #666; -@text-tertiary: #888; -@border-color: #e8e8e8; -@shadow-light: 0 2px 8px rgba(0, 0, 0, 0.06); -@shadow-medium: 0 2px 8px rgba(0, 0, 0, 0.08); -@success-bg: #f6ffed; -@success-border: #b7eb8f; -@success-color: #52c41a; -@error-bg: #fff2f0; -@error-border: #ffccc7; -@error-color: #ff4d4f; +.container { + min-height: 100vh; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + padding: 20px; + padding-bottom: 80px; +} -// 使用 :global 包裹所有样式,因为 Question 组件使用直接类名 -:global { - // 页面容器 - .question-page { - min-height: 100vh; - background: @bg-color; - padding-bottom: 80px; - } +.content { + max-width: 900px; + margin: 0 auto; +} - // 头部 - .header { - background: @white; - padding: 16px 20px; - display: flex; - justify-content: space-between; - align-items: center; - box-shadow: @shadow-light; - position: sticky; - top: 0; - z-index: 100; +.header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 24px; - h1 { - margin: 0; - font-size: 20px; - font-weight: 600; - color: @primary-color; - } - } - - // 内容区域 - .content { - padding: 16px; - } - - // 题目部分 - .question-header { - display: flex; - gap: 8px; - margin-bottom: 12px; - } - - .question-number { - font-size: 14px; - color: @text-secondary; - margin-bottom: 12px; - } - - .question-content { - font-size: 18px; - font-weight: 500; - color: @text-color; - line-height: 1.6; - margin-bottom: 8px; - - // 填空题样式 - &.fill-content { - display: flex; - flex-wrap: wrap; - align-items: center; - - span { - line-height: 2; - } - - .fill-input { - :global(.adm-input-element) { - border: none; - border-bottom: 2px solid @primary-color; - border-radius: 0; - padding: 4px 8px; - text-align: center; - font-weight: 600; - color: @primary-color; - - &::placeholder { - color: #bfbfbf; - font-weight: normal; - } - } - } - } - } - - // 答案结果 - .answer-result { - margin-top: 20px; - padding: 16px; - border-radius: 8px; - background: @success-bg; - border: 1px solid @success-border; - - &.wrong { - background: @error-bg; - border: 1px solid @error-border; - } - - .result-icon { - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 8px; - } - - &.correct .result-icon { - color: @success-color; - } - - &.wrong .result-icon { - color: @error-color; - } - - .result-text { - font-size: 16px; - font-weight: 600; - margin-bottom: 12px; - text-align: center; - } - - .correct-answer { - font-size: 14px; - color: @text-secondary; - margin-bottom: 8px; - } - - .explanation { - font-size: 14px; - color: @text-tertiary; - line-height: 1.5; - margin-top: 8px; - padding-top: 8px; - border-top: 1px solid @border-color; - } - } - - // 按钮组 - .button-group { - margin-top: 24px; - } - - .action-buttons { - display: flex; - gap: 8px; - padding: 16px; - background: @white; - position: sticky; - bottom: 0; - box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06); - - button { - flex: 1; - } - } - - // 统计内容 - .stats-content { - padding: 20px; - - h2 { - margin: 0 0 20px 0; - text-align: center; - font-size: 20px; - } - } - - .stat-item { - display: flex; - justify-content: space-between; - align-items: center; - padding: 16px 0; - border-bottom: 1px solid #f0f0f0; - - &:last-child { - border-bottom: none; - } - - span { - font-size: 16px; - color: @text-secondary; - } - - strong { - font-size: 20px; - color: @primary-color; - } - } - - // 筛选内容 - .filter-content { - padding: 20px; - - h2 { - margin: 0 0 20px 0; - text-align: center; - font-size: 20px; - } - } - - .filter-group { - margin-bottom: 20px; - - p { - margin: 0 0 12px 0; - font-size: 14px; - color: @text-secondary; - font-weight: 500; - } - } - - // 覆盖 antd-mobile 样式 - .adm-card { - border-radius: 12px; - box-shadow: @shadow-medium; - } - - .adm-list-item { - padding: 12px 16px; - } - - .adm-modal-body { - max-height: 70vh; - overflow-y: auto; + .title { + color: white !important; + margin: 0 !important; + } +} + +.questionCard { + border-radius: 16px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); + margin-bottom: 24px; +} + +.questionNumber { + color: #666; + margin: 8px 0 16px 0 !important; +} + +.questionContent { + font-size: 18px; + line-height: 1.6; + color: #333; + margin-bottom: 16px; +} + +.fillInput { + border-bottom: 2px solid #1677ff !important; + border-radius: 0 !important; +} + +.buttonGroup { + margin-top: 24px; +} + +.actionButtons { + display: flex; + gap: 12px; + flex-wrap: wrap; + justify-content: center; +} + +// 响应式设计 - 移动端 +@media (max-width: 768px) { + .container { + padding: 12px; + padding-bottom: 70px; + } + + .header { + flex-direction: column; + gap: 12px; + align-items: flex-start; + + .title { + font-size: 20px !important; + } + } + + .questionCard { + border-radius: 12px; + margin-bottom: 16px; + } + + .questionContent { + font-size: 16px; + } + + .actionButtons { + button { + flex: 1; + min-width: 100px; + } + } +} + +// 响应式设计 - PC端 +@media (min-width: 769px) { + .container { + padding: 32px; + } + + .header { + margin-bottom: 32px; } } diff --git a/web/src/pages/Question.tsx b/web/src/pages/Question.tsx index ef28389..26ab357 100644 --- a/web/src/pages/Question.tsx +++ b/web/src/pages/Question.tsx @@ -7,23 +7,31 @@ import { Radio, Checkbox, Input, - Toast, - Dialog, + message, Modal, List, Tag, - Selector, -} from 'antd-mobile' + Select, + Statistic, + Alert, + Typography, + Row, + Col, +} from 'antd' import { - RightOutline, - CloseOutline, - PieOutline, - UnorderedListOutline, - FilterOutline, -} from 'antd-mobile-icons' + CheckOutlined, + CloseOutlined, + PieChartOutlined, + UnorderedListOutlined, + FilterOutlined, + ReloadOutlined, +} from '@ant-design/icons' import type { Question, AnswerResult } from '../types/question' import * as questionApi from '../api/question' -import './Question.module.less' +import styles from './Question.module.less' + +const { TextArea } = Input +const { Title, Text } = Typography const QuestionPage: React.FC = () => { const [searchParams] = useSearchParams() @@ -34,7 +42,7 @@ const QuestionPage: React.FC = () => { const [loading, setLoading] = useState(false) const [allQuestions, setAllQuestions] = useState([]) const [currentIndex, setCurrentIndex] = useState(0) - const [fillAnswers, setFillAnswers] = useState([]) // 填空题答案数组 + const [fillAnswers, setFillAnswers] = useState([]) // 统计弹窗 const [statsVisible, setStatsVisible] = useState(false) @@ -50,8 +58,8 @@ const QuestionPage: React.FC = () => { // 筛选弹窗 const [filterVisible, setFilterVisible] = useState(false) - const [filterType, setFilterType] = useState('') - const [filterCategory, setFilterCategory] = useState('') + const [filterType, setFilterType] = useState(undefined) + const [filterCategory, setFilterCategory] = useState(undefined) // 加载随机题目 const loadRandomQuestion = async () => { @@ -66,7 +74,7 @@ const QuestionPage: React.FC = () => { setAnswerResult(null) } } catch (error) { - Toast.show('加载题目失败') + message.error('加载题目失败') } finally { setLoading(false) } @@ -89,7 +97,7 @@ const QuestionPage: React.FC = () => { } } } catch (error) { - Toast.show('加载题目列表失败') + message.error('加载题目列表失败') } finally { setLoading(false) } @@ -103,7 +111,7 @@ const QuestionPage: React.FC = () => { setStatistics(res.data) } } catch (error) { - Toast.show('加载统计失败') + message.error('加载统计失败') } } @@ -113,21 +121,18 @@ const QuestionPage: React.FC = () => { // 检查是否选择了答案 if (currentQuestion.type === 'multiple') { - // 多选题:检查数组长度 if ((selectedAnswer as string[]).length === 0) { - Toast.show('请选择答案') + message.warning('请选择答案') return } } else if (currentQuestion.type === 'fill') { - // 填空题:检查所有填空是否都已填写 if (fillAnswers.length === 0 || fillAnswers.some(a => !a || a.trim() === '')) { - Toast.show('请填写所有空格') + message.warning('请填写所有空格') return } } else { - // 单选题、判断题、简答题:检查是否有值 if (!selectedAnswer || (typeof selectedAnswer === 'string' && selectedAnswer.trim() === '')) { - Toast.show('请填写答案') + message.warning('请填写答案') return } } @@ -144,13 +149,13 @@ const QuestionPage: React.FC = () => { setShowResult(true) if (res.data.correct) { - Toast.show({ icon: 'success', content: '回答正确!' }) + message.success('回答正确!') } else { - Toast.show({ icon: 'fail', content: '回答错误' }) + message.error('回答错误') } } } catch (error) { - Toast.show('提交失败') + message.error('提交失败') } finally { setLoading(false) } @@ -190,32 +195,28 @@ const QuestionPage: React.FC = () => { // 重置进度 const handleReset = async () => { - const result = await Dialog.confirm({ - content: '确定要重置答题进度吗?', + Modal.confirm({ + title: '确定要重置答题进度吗?', + onOk: async () => { + try { + await questionApi.resetProgress() + message.success('重置成功') + loadStatistics() + } catch (error) { + message.error('重置失败') + } + }, }) - - if (result) { - try { - await questionApi.resetProgress() - Toast.show('重置成功') - loadStatistics() - } catch (error) { - Toast.show('重置失败') - } - } } // 初始化 useEffect(() => { - // 从URL参数获取题型 const typeParam = searchParams.get('type') const categoryParam = searchParams.get('category') if (typeParam || categoryParam) { - // 如果有筛选参数,加载筛选后的题目列表 loadQuestions(typeParam || undefined, categoryParam || undefined) } else { - // 否则加载随机题目 loadRandomQuestion() loadQuestions() } @@ -233,36 +234,34 @@ const QuestionPage: React.FC = () => { return typeMap[type] || type } - // 渲染填空题内容(将****替换为输入框) + // 渲染填空题内容 const renderFillContent = () => { if (!currentQuestion) return null const content = currentQuestion.content const parts = content.split('****') - // 如果没有****,说明不是填空题格式 if (parts.length === 1) { - return
{content}
+ return
{content}
} - // 初始化填空答案数组 if (fillAnswers.length === 0) { setFillAnswers(new Array(parts.length - 1).fill('')) } return ( -
+
{parts.map((part, index) => ( {part} {index < parts.length - 1 && ( { + onChange={(e) => { const newAnswers = [...fillAnswers] - newAnswers[index] = val + newAnswers[index] = e.target.value setFillAnswers(newAnswers) setSelectedAnswer(newAnswers) }} @@ -271,8 +270,6 @@ const QuestionPage: React.FC = () => { display: 'inline-block', width: '120px', margin: '0 8px', - borderBottom: '2px solid #1677ff', - borderRadius: 0, }} /> )} @@ -286,34 +283,39 @@ const QuestionPage: React.FC = () => { const renderOptions = () => { if (!currentQuestion) return null - // 填空题:使用特殊渲染(在题目内容中嵌入输入框) if (currentQuestion.type === 'fill') { - return null // 填空题的输入框已在题目内容中渲染 + return null } - // 简答题:使用大文本框 if (currentQuestion.type === 'short') { return ( - setSelectedAnswer(val)} + onChange={(e) => setSelectedAnswer(e.target.value)} disabled={showResult} - style={{ marginTop: 20, minHeight: 100 }} + rows={4} + style={{ marginTop: 20 }} /> ) } if (currentQuestion.type === 'multiple') { + // 按ABCD顺序排序选项 + const sortedOptions = [...currentQuestion.options].sort((a, b) => + a.key.localeCompare(b.key) + ) + return ( setSelectedAnswer(val as string[])} disabled={showResult} + style={{ width: '100%', marginTop: 20 }} > - - {currentQuestion.options.map((option) => ( - + + {sortedOptions.map((option) => ( + {option.key}. {option.value} @@ -324,18 +326,24 @@ const QuestionPage: React.FC = () => { ) } - // 单选和判断题 + // 按ABCD顺序排序选项 + const sortedOptions = [...currentQuestion.options].sort((a, b) => + a.key.localeCompare(b.key) + ) + return ( setSelectedAnswer(val as string)} + onChange={(e) => setSelectedAnswer(e.target.value)} disabled={showResult} + style={{ width: '100%', marginTop: 20 }} > - - {currentQuestion.options.map((option) => ( - + + {sortedOptions.map((option) => ( + - {option.key}. {option.value} + {/* 判断题不显示A、B,只显示选项内容 */} + {currentQuestion.type === 'judge' ? option.value : `${option.key}. ${option.value}`} ))} @@ -345,67 +353,112 @@ const QuestionPage: React.FC = () => { } return ( -
- {/* 头部 */} -
-

AnKao 刷题

- -
+
+
+ {/* 头部 */} +
+ AnKao 刷题 + +
- {/* 题目卡片 */} -
- + {/* 题目卡片 */} + {currentQuestion && ( <> -
- {getTypeName(currentQuestion.type)} - {currentQuestion.category} -
+ + {getTypeName(currentQuestion.type)} + {currentQuestion.category} + -
第 {currentQuestion.id} 题
+ + 第 {currentQuestion.question_id || currentQuestion.id} 题 + - {/* 填空题使用特殊渲染 */} {currentQuestion.type === 'fill' ? renderFillContent() : ( -
{currentQuestion.content}
+
{currentQuestion.content}
)} {renderOptions()} {/* 答案结果 */} {showResult && answerResult && ( -
-
- {answerResult.correct ? : } -
-
{answerResult.correct ? '回答正确!' : '回答错误'}
-
- 正确答案: - {Array.isArray(answerResult.correct_answer) - ? answerResult.correct_answer.join(', ') - : answerResult.correct_answer} -
- {answerResult.explanation &&
{answerResult.explanation}
} -
+ : } + message={ +
+ {answerResult.correct ? '回答正确!' : '回答错误'} +
+ } + description={ +
+
+ 你的答案: + + {(() => { + const answer = Array.isArray(selectedAnswer) + ? selectedAnswer.join(', ') + : selectedAnswer; + // 判断题显示文字而不是 true/false + if (currentQuestion?.type === 'judge') { + return answer === 'true' ? '正确' : answer === 'false' ? '错误' : answer; + } + return answer; + })()} + +
+
+ 正确答案: + + {(() => { + const correctAnswer = answerResult.correct_answer || (answerResult.correct ? selectedAnswer : ''); + let displayAnswer = Array.isArray(correctAnswer) + ? correctAnswer.join(', ') + : correctAnswer || '暂无'; + + // 判断题显示文字而不是 true/false + if (currentQuestion?.type === 'judge') { + displayAnswer = displayAnswer === 'true' ? '正确' : displayAnswer === 'false' ? '错误' : displayAnswer; + } + return displayAnswer; + })()} + +
+ {answerResult.explanation && ( +
+ 解析: +
{answerResult.explanation}
+
+ )} +
+ } + style={{ marginTop: 20 }} + /> )} {/* 按钮 */} -
+
{!showResult ? ( - ) : ( - )} @@ -413,147 +466,126 @@ const QuestionPage: React.FC = () => { )} -
- {/* 功能按钮 */} -
- - - + {/* 功能按钮 */} +
+ + + +
{/* 统计弹窗 */} -

答题统计

-
- 题库总数 - {statistics.total_questions} -
-
- 已答题数 - {statistics.answered_questions} -
-
- 正确数 - {statistics.correct_answers} -
-
- 正确率 - {statistics.accuracy.toFixed(1)}% -
- -
- } - closeOnAction - onClose={() => setStatsVisible(false)} - actions={[{ key: 'close', text: '关闭' }]} - /> + title="答题统计" + open={statsVisible} + onCancel={() => setStatsVisible(false)} + footer={[ + , + , + ]} + > + + + + + + + + + + + + + + + {/* 题目列表弹窗 */} -

题目列表

- - {allQuestions.map((q, index) => ( - handleSelectQuestion(q, index)} - arrow={false} - description={ - - - {getTypeName(q.type)} - - - {q.category} - - - } - > - {q.id}. {q.content} - - ))} - -
- } - closeOnAction - onClose={() => setListVisible(false)} - actions={[{ key: 'close', text: '关闭' }]} - bodyStyle={{ maxHeight: '60vh', overflow: 'auto' }} - /> + title="题目列表" + open={listVisible} + onCancel={() => setListVisible(false)} + footer={null} + width={600} + > + ( + handleSelectQuestion(q, index)} + style={{ cursor: 'pointer' }} + > + + {getTypeName(q.type)} + {q.category} + + } + /> + + )} + style={{ maxHeight: '400px', overflow: 'auto' }} + /> + {/* 筛选弹窗 */} -

筛选题目

-
-

题目类型

- setFilterType(arr[0] || '')} - /> -
-
-

分类

- setFilterCategory(arr[0] || '')} - /> -
- + title="筛选题目" + open={filterVisible} + onCancel={() => setFilterVisible(false)} + onOk={handleApplyFilter} + > + +
+ 题目类型 +
- } - closeOnAction - onClose={() => setFilterVisible(false)} - actions={[{ key: 'close', text: '关闭' }]} - /> +
+ 分类 + +
+
+
) } diff --git a/web/src/types/question.ts b/web/src/types/question.ts index a6a65f4..ebe604d 100644 --- a/web/src/types/question.ts +++ b/web/src/types/question.ts @@ -10,6 +10,7 @@ export interface Option { // 题目 export interface Question { id: number + question_id: string // 题目编号 type: QuestionType content: string options: Option[] diff --git a/web/vite.config.ts b/web/vite.config.ts index 43bfe25..4dada8b 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -14,9 +14,11 @@ export default defineConfig({ preprocessorOptions: { less: { javascriptEnabled: true, - // 可以在这里添加全局 Less 变量 + // antd 主题定制 modifyVars: { - // 例如: '@primary-color': '#1DA57A', + '@primary-color': '#1677ff', // 主色调 + '@link-color': '#1677ff', // 链接色 + '@border-radius-base': '8px', // 组件圆角 }, }, }, diff --git a/web/yarn.lock b/web/yarn.lock index 0298a76..0d111d8 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2,6 +2,91 @@ # yarn lockfile v1 +"@ant-design/colors@^7.0.0", "@ant-design/colors@^7.2.1": + version "7.2.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/colors/-/colors-7.2.1.tgz#3bbc1c6c18550020d1622a0067ff03492318df98" + integrity sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ== + dependencies: + "@ant-design/fast-color" "^2.0.6" + +"@ant-design/colors@^8.0.0": + version "8.0.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/colors/-/colors-8.0.0.tgz#92b5aa1cd44896b62c7b67133b4d5a6a00266162" + integrity sha512-6YzkKCw30EI/E9kHOIXsQDHmMvTllT8STzjMb4K2qzit33RW2pqCJP0sk+hidBntXxE+Vz4n1+RvCTfBw6OErw== + dependencies: + "@ant-design/fast-color" "^3.0.0" + +"@ant-design/cssinjs-utils@^1.1.3": + version "1.1.3" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/cssinjs-utils/-/cssinjs-utils-1.1.3.tgz#5dd79126057920a6992d57b38dd84e2c0b707977" + integrity sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg== + dependencies: + "@ant-design/cssinjs" "^1.21.0" + "@babel/runtime" "^7.23.2" + rc-util "^5.38.0" + +"@ant-design/cssinjs@^1.21.0", "@ant-design/cssinjs@^1.23.0": + version "1.24.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/cssinjs/-/cssinjs-1.24.0.tgz#7db091f03f189abc77a13cbd27a2293802cd7285" + integrity sha512-K4cYrJBsgvL+IoozUXYjbT6LHHNt+19a9zkvpBPxLjFHas1UpPM2A5MlhROb0BT8N8WoavM5VsP9MeSeNK/3mg== + dependencies: + "@babel/runtime" "^7.11.1" + "@emotion/hash" "^0.8.0" + "@emotion/unitless" "^0.7.5" + classnames "^2.3.1" + csstype "^3.1.3" + rc-util "^5.35.0" + stylis "^4.3.4" + +"@ant-design/fast-color@^2.0.6": + version "2.0.6" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/fast-color/-/fast-color-2.0.6.tgz#ab4d4455c1542c9017d367c2fa8ca3e4215d0ba2" + integrity sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA== + dependencies: + "@babel/runtime" "^7.24.7" + +"@ant-design/fast-color@^3.0.0": + version "3.0.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/fast-color/-/fast-color-3.0.0.tgz#fb5178203de825f284809538f5142203d0ef3d80" + integrity sha512-eqvpP7xEDm2S7dUzl5srEQCBTXZMmY3ekf97zI+M2DHOYyKdJGH0qua0JACHTqbkRnD/KHFQP9J1uMJ/XWVzzA== + +"@ant-design/icons-svg@^4.4.0": + version "4.4.2" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz#ed2be7fb4d82ac7e1d45a54a5b06d6cecf8be6f6" + integrity sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA== + +"@ant-design/icons@^5.6.1": + version "5.6.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/icons/-/icons-5.6.1.tgz#7290fcdc3d96ff3fca793ed399053cd29ad5dbd3" + integrity sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg== + dependencies: + "@ant-design/colors" "^7.0.0" + "@ant-design/icons-svg" "^4.4.0" + "@babel/runtime" "^7.24.8" + classnames "^2.2.6" + rc-util "^5.31.1" + +"@ant-design/icons@^6.1.0": + version "6.1.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/icons/-/icons-6.1.0.tgz#97cc14a3c0528b8e2b37f41f232b019f2ca38c2c" + integrity sha512-KrWMu1fIg3w/1F2zfn+JlfNDU8dDqILfA5Tg85iqs1lf8ooyGlbkA+TkwfOKKgqpUmAiRY1PTFpuOU2DAIgSUg== + dependencies: + "@ant-design/colors" "^8.0.0" + "@ant-design/icons-svg" "^4.4.0" + "@rc-component/util" "^1.3.0" + clsx "^2.1.1" + +"@ant-design/react-slick@~1.1.2": + version "1.1.2" + resolved "https://mirrors.yuchat.top/repository/npmjs/@ant-design/react-slick/-/react-slick-1.1.2.tgz#f84ce3e4d0dc941f02b16f1d1d6d7a371ffbb4f1" + integrity sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA== + dependencies: + "@babel/runtime" "^7.10.4" + classnames "^2.2.5" + json2mq "^0.2.0" + resize-observer-polyfill "^1.5.1" + throttle-debounce "^5.0.0" + "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://mirrors.yuchat.top/repository/npmjs/@babel/code-frame/-/code-frame-7.27.1.tgz" @@ -16,7 +101,7 @@ resolved "https://mirrors.yuchat.top/repository/npmjs/@babel/compat-data/-/compat-data-7.28.5.tgz" integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.28.0": +"@babel/core@^7.28.0": version "7.28.5" resolved "https://mirrors.yuchat.top/repository/npmjs/@babel/core/-/core-7.28.5.tgz" integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== @@ -130,9 +215,9 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/runtime@^7.11.1", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0": +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.4", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0": version "7.28.4" - resolved "https://mirrors.yuchat.top/repository/npmjs/@babel/runtime/-/runtime-7.28.4.tgz" + resolved "https://mirrors.yuchat.top/repository/npmjs/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== "@babel/template@^7.27.2": @@ -165,6 +250,126 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/unitless@^0.7.5": + version "0.7.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + "@esbuild/win32-x64@0.21.5": version "0.21.5" resolved "https://mirrors.yuchat.top/repository/npmjs/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz" @@ -202,26 +407,6 @@ resolved "https://mirrors.yuchat.top/repository/npmjs/@eslint/js/-/js-8.57.1.tgz" integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== -"@floating-ui/core@^1.7.3": - version "1.7.3" - resolved "https://mirrors.yuchat.top/repository/npmjs/@floating-ui/core/-/core-1.7.3.tgz" - integrity sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w== - dependencies: - "@floating-ui/utils" "^0.2.10" - -"@floating-ui/dom@^1.4.2": - version "1.7.4" - resolved "https://mirrors.yuchat.top/repository/npmjs/@floating-ui/dom/-/dom-1.7.4.tgz" - integrity sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA== - dependencies: - "@floating-ui/core" "^1.7.3" - "@floating-ui/utils" "^0.2.10" - -"@floating-ui/utils@^0.2.10": - version "0.2.10" - resolved "https://mirrors.yuchat.top/repository/npmjs/@floating-ui/utils/-/utils-0.2.10.tgz" - integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== - "@humanwhocodes/config-array@^0.13.0": version "0.13.0" resolved "https://mirrors.yuchat.top/repository/npmjs/@humanwhocodes/config-array/-/config-array-0.13.0.tgz" @@ -283,7 +468,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://mirrors.yuchat.top/repository/npmjs/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -296,58 +481,94 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@rc-component/mini-decimal@^1.1.0": +"@rc-component/async-validator@^5.0.3": + version "5.0.4" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/async-validator/-/async-validator-5.0.4.tgz#5291ad92f00a14b6766fc81735c234277f83e948" + integrity sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg== + dependencies: + "@babel/runtime" "^7.24.4" + +"@rc-component/color-picker@~2.0.1": + version "2.0.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/color-picker/-/color-picker-2.0.1.tgz#6b9b96152466a9d4475cbe72b40b594bfda164be" + integrity sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q== + dependencies: + "@ant-design/fast-color" "^2.0.6" + "@babel/runtime" "^7.23.6" + classnames "^2.2.6" + rc-util "^5.38.1" + +"@rc-component/context@^1.4.0": + version "1.4.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/context/-/context-1.4.0.tgz#dc6fb021d6773546af8f016ae4ce9aea088395e8" + integrity sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w== + dependencies: + "@babel/runtime" "^7.10.1" + rc-util "^5.27.0" + +"@rc-component/mini-decimal@^1.0.1": version "1.1.0" - resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz#7b7a362b14a0a54cb5bc6fd2b82731f29f11d9b0" integrity sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ== dependencies: "@babel/runtime" "^7.18.0" -"@react-spring/animated@~9.6.1": - version "9.6.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/@react-spring/animated/-/animated-9.6.1.tgz" - integrity sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ== +"@rc-component/mutate-observer@^1.1.0": + version "1.1.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz#ee53cc88b78aade3cd0653609215a44779386fd8" + integrity sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw== dependencies: - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" + "@babel/runtime" "^7.18.0" + classnames "^2.3.2" + rc-util "^5.24.4" -"@react-spring/core@~9.6.1": - version "9.6.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/@react-spring/core/-/core-9.6.1.tgz" - integrity sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ== +"@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.0-9", "@rc-component/portal@^1.0.2", "@rc-component/portal@^1.1.0", "@rc-component/portal@^1.1.1": + version "1.1.2" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/portal/-/portal-1.1.2.tgz#55db1e51d784e034442e9700536faaa6ab63fc71" + integrity sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg== dependencies: - "@react-spring/animated" "~9.6.1" - "@react-spring/rafz" "~9.6.1" - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" + "@babel/runtime" "^7.18.0" + classnames "^2.3.2" + rc-util "^5.24.4" -"@react-spring/rafz@~9.6.1": - version "9.6.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/@react-spring/rafz/-/rafz-9.6.1.tgz" - integrity sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ== - -"@react-spring/shared@~9.6.1": - version "9.6.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/@react-spring/shared/-/shared-9.6.1.tgz" - integrity sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw== +"@rc-component/qrcode@~1.1.0": + version "1.1.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/qrcode/-/qrcode-1.1.0.tgz#4e38f1d7c2c8aae7f62d60ab110a842c1395db3e" + integrity sha512-ABA80Yer0c6I2+moqNY0kF3Y1NxIT6wDP/EINIqbiRbfZKP1HtHpKMh8WuTXLgVGYsoWG2g9/n0PgM8KdnJb4Q== dependencies: - "@react-spring/rafz" "~9.6.1" - "@react-spring/types" "~9.6.1" + "@babel/runtime" "^7.24.7" + classnames "^2.3.2" -"@react-spring/types@~9.6.1": - version "9.6.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/@react-spring/types/-/types-9.6.1.tgz" - integrity sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q== - -"@react-spring/web@~9.6.1": - version "9.6.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/@react-spring/web/-/web-9.6.1.tgz" - integrity sha512-X2zR6q2Z+FjsWfGAmAXlQaoUHbPmfuCaXpuM6TcwXPpLE1ZD4A1eys/wpXboFQmDkjnrlTmKvpVna1MjWpZ5Hw== +"@rc-component/tour@~1.15.1": + version "1.15.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/tour/-/tour-1.15.1.tgz#9b79808254185fc19e964172d99e25e8c6800ded" + integrity sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ== dependencies: - "@react-spring/animated" "~9.6.1" - "@react-spring/core" "~9.6.1" - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" + "@babel/runtime" "^7.18.0" + "@rc-component/portal" "^1.0.0-9" + "@rc-component/trigger" "^2.0.0" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/trigger@^2.0.0", "@rc-component/trigger@^2.1.1", "@rc-component/trigger@^2.3.0": + version "2.3.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/trigger/-/trigger-2.3.0.tgz#9499ada078daca9dd99d01f0f0743ee1ab9e398b" + integrity sha512-iwaxZyzOuK0D7lS+0AQEtW52zUWxoGqTGkke3dRyb8pYiShmRpCjB/8TzPI4R6YySCH7Vm9BZj/31VPiiQTLBg== + dependencies: + "@babel/runtime" "^7.23.2" + "@rc-component/portal" "^1.1.0" + classnames "^2.3.2" + rc-motion "^2.0.0" + rc-resize-observer "^1.3.1" + rc-util "^5.44.0" + +"@rc-component/util@^1.3.0": + version "1.3.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rc-component/util/-/util-1.3.0.tgz#fc8e1ce1e5292592ef7f45839a3c07366288275c" + integrity sha512-hfXE04CVsxI/slmWKeSh6du7sSKpbvVdVEZCa8A+2QWDlL97EsCYme2c3ZWLn1uC9FR21JoewlrhUPWO4QgO8w== + dependencies: + is-mobile "^5.0.0" + react-is "^18.2.0" "@remix-run/router@1.23.0": version "1.23.0" @@ -359,6 +580,106 @@ resolved "https://mirrors.yuchat.top/repository/npmjs/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz" integrity sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA== +"@rollup/rollup-android-arm-eabi@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz#0f44a2f8668ed87b040b6fe659358ac9239da4db" + integrity sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ== + +"@rollup/rollup-android-arm64@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz#25b9a01deef6518a948431564c987bcb205274f5" + integrity sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA== + +"@rollup/rollup-darwin-arm64@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz#8a102869c88f3780c7d5e6776afd3f19084ecd7f" + integrity sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA== + +"@rollup/rollup-darwin-x64@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz#8e526417cd6f54daf1d0c04cf361160216581956" + integrity sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA== + +"@rollup/rollup-freebsd-arm64@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz#0e7027054493f3409b1f219a3eac5efd128ef899" + integrity sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA== + +"@rollup/rollup-freebsd-x64@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz#72b204a920139e9ec3d331bd9cfd9a0c248ccb10" + integrity sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz#ab1b522ebe5b7e06c99504cc38f6cd8b808ba41c" + integrity sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ== + +"@rollup/rollup-linux-arm-musleabihf@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz#f8cc30b638f1ee7e3d18eac24af47ea29d9beb00" + integrity sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ== + +"@rollup/rollup-linux-arm64-gnu@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz#7af37a9e85f25db59dc8214172907b7e146c12cc" + integrity sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg== + +"@rollup/rollup-linux-arm64-musl@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz#a623eb0d3617c03b7a73716eb85c6e37b776f7e0" + integrity sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q== + +"@rollup/rollup-linux-loong64-gnu@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz#76ea038b549c5c6c5f0d062942627c4066642ee2" + integrity sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA== + +"@rollup/rollup-linux-ppc64-gnu@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz#d9a4c3f0a3492bc78f6fdfe8131ac61c7359ccd5" + integrity sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw== + +"@rollup/rollup-linux-riscv64-gnu@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz#87ab033eebd1a9a1dd7b60509f6333ec1f82d994" + integrity sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw== + +"@rollup/rollup-linux-riscv64-musl@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz#bda3eb67e1c993c1ba12bc9c2f694e7703958d9f" + integrity sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg== + +"@rollup/rollup-linux-s390x-gnu@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz#f7bc10fbe096ab44694233dc42a2291ed5453d4b" + integrity sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ== + +"@rollup/rollup-linux-x64-gnu@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz#a151cb1234cc9b2cf5e8cfc02aa91436b8f9e278" + integrity sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q== + +"@rollup/rollup-linux-x64-musl@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz#7859e196501cc3b3062d45d2776cfb4d2f3a9350" + integrity sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg== + +"@rollup/rollup-openharmony-arm64@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz#85d0df7233734df31e547c1e647d2a5300b3bf30" + integrity sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw== + +"@rollup/rollup-win32-arm64-msvc@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz#e62357d00458db17277b88adbf690bb855cac937" + integrity sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w== + +"@rollup/rollup-win32-ia32-msvc@4.52.5": + version "4.52.5" + resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz#fc7cd40f44834a703c1f1c3fe8bcc27ce476cd50" + integrity sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg== + "@rollup/rollup-win32-x64-gnu@4.52.5": version "4.52.5" resolved "https://mirrors.yuchat.top/repository/npmjs/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz" @@ -407,17 +728,12 @@ resolved "https://mirrors.yuchat.top/repository/npmjs/@types/estree/-/estree-1.0.8.tgz" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== -"@types/js-cookie@^3.0.6": - version "3.0.6" - resolved "https://mirrors.yuchat.top/repository/npmjs/@types/js-cookie/-/js-cookie-3.0.6.tgz" - integrity sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ== - "@types/json-schema@^7.0.12": version "7.0.15" resolved "https://mirrors.yuchat.top/repository/npmjs/@types/json-schema/-/json-schema-7.0.15.tgz" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/node@^18.0.0 || >=20.0.0", "@types/node@^20.11.5": +"@types/node@^20.11.5": version "20.19.24" resolved "https://mirrors.yuchat.top/repository/npmjs/@types/node/-/node-20.19.24.tgz" integrity sha512-FE5u0ezmi6y9OZEzlJfg37mqqf6ZDSF2V/NLjUyGrR9uTZ7Sb9F7bLNZ03S4XVUNRWGA7Ck4c1kK+YnuWjl+DA== @@ -434,7 +750,7 @@ resolved "https://mirrors.yuchat.top/repository/npmjs/@types/react-dom/-/react-dom-18.3.7.tgz" integrity sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ== -"@types/react@^18.0.0", "@types/react@^18.2.48": +"@types/react@^18.2.48": version "18.3.26" resolved "https://mirrors.yuchat.top/repository/npmjs/@types/react/-/react-18.3.26.tgz" integrity sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA== @@ -464,7 +780,7 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.19.0": +"@typescript-eslint/parser@^6.19.0": version "6.21.0" resolved "https://mirrors.yuchat.top/repository/npmjs/@typescript-eslint/parser/-/parser-6.21.0.tgz" integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== @@ -538,18 +854,6 @@ resolved "https://mirrors.yuchat.top/repository/npmjs/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== -"@use-gesture/core@10.3.0": - version "10.3.0" - resolved "https://mirrors.yuchat.top/repository/npmjs/@use-gesture/core/-/core-10.3.0.tgz" - integrity sha512-rh+6MND31zfHcy9VU3dOZCqGY511lvGcfyJenN4cWZe0u1BH6brBpBddLVXhF2r4BMqWbvxfsbL7D287thJU2A== - -"@use-gesture/react@10.3.0": - version "10.3.0" - resolved "https://mirrors.yuchat.top/repository/npmjs/@use-gesture/react/-/react-10.3.0.tgz" - integrity sha512-3zc+Ve99z4usVP6l9knYVbVnZgfqhKah7sIG+PS2w+vpig2v2OLct05vs+ZXMzwxdNCMka8B+8WlOo0z6Pn6DA== - dependencies: - "@use-gesture/core" "10.3.0" - "@vitejs/plugin-react@^4.2.1": version "4.7.0" resolved "https://mirrors.yuchat.top/repository/npmjs/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz" @@ -567,27 +871,11 @@ acorn-jsx@^5.3.2: resolved "https://mirrors.yuchat.top/repository/npmjs/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.9.0: +acorn@^8.9.0: version "8.15.0" resolved "https://mirrors.yuchat.top/repository/npmjs/acorn/-/acorn-8.15.0.tgz" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== -ahooks@^3.7.6: - version "3.9.6" - resolved "https://mirrors.yuchat.top/repository/npmjs/ahooks/-/ahooks-3.9.6.tgz" - integrity sha512-Mr7f05swd5SmKlR9SZo5U6M0LsL4ErweLzpdgXjA1JPmnZ78Vr6wzx0jUtvoxrcqGKYnX0Yjc02iEASVxHFPjQ== - dependencies: - "@babel/runtime" "^7.21.0" - "@types/js-cookie" "^3.0.6" - dayjs "^1.9.1" - intersection-observer "^0.12.0" - js-cookie "^3.0.5" - lodash "^4.17.21" - react-fast-compare "^3.2.2" - resize-observer-polyfill "^1.5.1" - screenfull "^5.0.0" - tslib "^2.4.1" - ajv@^6.12.4: version "6.12.6" resolved "https://mirrors.yuchat.top/repository/npmjs/ajv/-/ajv-6.12.6.tgz" @@ -610,41 +898,60 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -antd-mobile-icons@^0.3.0: - version "0.3.0" - resolved "https://mirrors.yuchat.top/repository/npmjs/antd-mobile-icons/-/antd-mobile-icons-0.3.0.tgz" - integrity sha512-rqINQpJWZWrva9moCd1Ye695MZYWmqLPE+bY8d2xLRy7iSQwPsinCdZYjpUPp2zL/LnKYSyXxP2ut2A+DC+whQ== - -antd-mobile-v5-count@^1.0.1: - version "1.0.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/antd-mobile-v5-count/-/antd-mobile-v5-count-1.0.1.tgz" - integrity sha512-YGsiEDCPUDz3SzfXi6gLZn/HpeSMW+jgPc4qiYUr1fSopg3hkUie2TnooJdExgfiETHefH3Ggs58He0OVfegLA== - -antd-mobile@^5.37.1: - version "5.41.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/antd-mobile/-/antd-mobile-5.41.1.tgz" - integrity sha512-fS5sTRLKHca5qryEYLGiPDLANK0rbhx8f8xk0Olu6ef00tLe0P9iqHQm0U3UtEBd8S454cilw5uv2J3I79Tbgg== +antd@^5.28.0: + version "5.28.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/antd/-/antd-5.28.0.tgz#fb5dfc0a2ba5a90ee053c813d71f16e6b66ac994" + integrity sha512-AmCvyhWGHzlDQ6sfnGBBrFm/8sLPbBI8d/NDBsecliKqrTZUMr07TAQldo43iowwKzvgKxxuRoUHaBaYcBMdQA== dependencies: - "@floating-ui/dom" "^1.4.2" - "@rc-component/mini-decimal" "^1.1.0" - "@react-spring/web" "~9.6.1" - "@use-gesture/react" "10.3.0" - ahooks "^3.7.6" - antd-mobile-icons "^0.3.0" - antd-mobile-v5-count "^1.0.1" - classnames "^2.3.2" - dayjs "^1.11.7" - deepmerge "^4.3.1" - nano-memoize "^3.0.16" - rc-field-form "^1.34.2" - rc-segmented "~2.4.1" + "@ant-design/colors" "^7.2.1" + "@ant-design/cssinjs" "^1.23.0" + "@ant-design/cssinjs-utils" "^1.1.3" + "@ant-design/fast-color" "^2.0.6" + "@ant-design/icons" "^5.6.1" + "@ant-design/react-slick" "~1.1.2" + "@babel/runtime" "^7.26.0" + "@rc-component/color-picker" "~2.0.1" + "@rc-component/mutate-observer" "^1.1.0" + "@rc-component/qrcode" "~1.1.0" + "@rc-component/tour" "~1.15.1" + "@rc-component/trigger" "^2.3.0" + classnames "^2.5.1" + copy-to-clipboard "^3.3.3" + dayjs "^1.11.11" + rc-cascader "~3.34.0" + rc-checkbox "~3.5.0" + rc-collapse "~3.9.0" + rc-dialog "~9.6.0" + rc-drawer "~7.3.0" + rc-dropdown "~4.2.1" + rc-field-form "~2.7.1" + rc-image "~7.12.0" + rc-input "~1.8.0" + rc-input-number "~9.5.0" + rc-mentions "~2.20.0" + rc-menu "~9.16.1" + rc-motion "^2.9.5" + rc-notification "~5.6.4" + rc-pagination "~5.1.0" + rc-picker "~4.11.3" + rc-progress "~4.0.0" + rc-rate "~2.13.1" + rc-resize-observer "^1.4.3" + rc-segmented "~2.7.0" + rc-select "~14.16.8" + rc-slider "~11.1.9" + rc-steps "~6.0.1" + rc-switch "~4.1.0" + rc-table "~7.54.0" + rc-tabs "~15.7.0" + rc-textarea "~1.10.2" + rc-tooltip "~6.4.0" + rc-tree "~5.13.1" + rc-tree-select "~5.27.0" + rc-upload "~4.11.0" rc-util "^5.44.4" - react-fast-compare "^3.2.2" - react-is "^18.2.0" - runes2 "^1.1.2" - staged-components "^1.1.3" - tslib "^2.5.0" - use-sync-external-store "^1.2.0" + scroll-into-view-if-needed "^3.1.0" + throttle-debounce "^5.0.2" argparse@^2.0.1: version "2.0.1" @@ -656,11 +963,6 @@ array-union@^2.1.0: resolved "https://mirrors.yuchat.top/repository/npmjs/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -async-validator@^4.1.0: - version "4.2.5" - resolved "https://mirrors.yuchat.top/repository/npmjs/async-validator/-/async-validator-4.2.5.tgz" - integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== - asynckit@^0.4.0: version "0.4.0" resolved "https://mirrors.yuchat.top/repository/npmjs/asynckit/-/asynckit-0.4.0.tgz" @@ -707,7 +1009,7 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" -browserslist@^4.24.0, "browserslist@>= 4.21.0": +browserslist@^4.24.0: version "4.27.0" resolved "https://mirrors.yuchat.top/repository/npmjs/browserslist/-/browserslist-4.27.0.tgz" integrity sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw== @@ -744,11 +1046,16 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -classnames@^2.2.1, classnames@^2.3.2: +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2, classnames@^2.5.1: version "2.5.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/classnames/-/classnames-2.5.1.tgz" + resolved "https://mirrors.yuchat.top/repository/npmjs/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== +clsx@^2.1.1: + version "2.1.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + color-convert@^2.0.1: version "2.0.1" resolved "https://mirrors.yuchat.top/repository/npmjs/color-convert/-/color-convert-2.0.1.tgz" @@ -768,6 +1075,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +compute-scroll-into-view@^3.0.2: + version "3.1.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz#02c3386ec531fb6a9881967388e53e8564f3e9aa" + integrity sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw== + concat-map@0.0.1: version "0.0.1" resolved "https://mirrors.yuchat.top/repository/npmjs/concat-map/-/concat-map-0.0.1.tgz" @@ -785,6 +1097,13 @@ copy-anything@^2.0.1: dependencies: is-what "^3.14.1" +copy-to-clipboard@^3.3.3: + version "3.3.3" + resolved "https://mirrors.yuchat.top/repository/npmjs/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + cross-spawn@^7.0.2: version "7.0.6" resolved "https://mirrors.yuchat.top/repository/npmjs/cross-spawn/-/cross-spawn-7.0.6.tgz" @@ -794,14 +1113,14 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -csstype@^3.0.2: +csstype@^3.0.2, csstype@^3.1.3: version "3.1.3" resolved "https://mirrors.yuchat.top/repository/npmjs/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -dayjs@^1.11.7, dayjs@^1.9.1: +dayjs@^1.11.11: version "1.11.19" - resolved "https://mirrors.yuchat.top/repository/npmjs/dayjs/-/dayjs-1.11.19.tgz" + resolved "https://mirrors.yuchat.top/repository/npmjs/dayjs/-/dayjs-1.11.19.tgz#15dc98e854bb43917f12021806af897c58ae2938" integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw== debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: @@ -816,11 +1135,6 @@ deep-is@^0.1.3: resolved "https://mirrors.yuchat.top/repository/npmjs/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.3.1: - version "4.3.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/deepmerge/-/deepmerge-4.3.1.tgz" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - delayed-stream@~1.0.0: version "1.0.0" resolved "https://mirrors.yuchat.top/repository/npmjs/delayed-stream/-/delayed-stream-1.0.0.tgz" @@ -950,7 +1264,7 @@ eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: resolved "https://mirrors.yuchat.top/repository/npmjs/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.56.0, eslint@>=8.40: +eslint@^8.56.0: version "8.57.1" resolved "https://mirrors.yuchat.top/repository/npmjs/eslint/-/eslint-8.57.1.tgz" integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== @@ -1117,6 +1431,11 @@ fs.realpath@^1.0.0: resolved "https://mirrors.yuchat.top/repository/npmjs/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://mirrors.yuchat.top/repository/npmjs/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://mirrors.yuchat.top/repository/npmjs/function-bind/-/function-bind-1.1.2.tgz" @@ -1278,11 +1597,6 @@ inherits@2: resolved "https://mirrors.yuchat.top/repository/npmjs/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -intersection-observer@^0.12.0: - version "0.12.2" - resolved "https://mirrors.yuchat.top/repository/npmjs/intersection-observer/-/intersection-observer-0.12.2.tgz" - integrity sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg== - is-extglob@^2.1.1: version "2.1.1" resolved "https://mirrors.yuchat.top/repository/npmjs/is-extglob/-/is-extglob-2.1.1.tgz" @@ -1295,6 +1609,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-mobile@^5.0.0: + version "5.0.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/is-mobile/-/is-mobile-5.0.0.tgz#1e08a0ef2c38a67bff84a52af68d67bcef445333" + integrity sha512-Tz/yndySvLAEXh+Uk8liFCxOwVH6YutuR74utvOcu7I9Di+DwM0mtdPVZNaVvvBUM2OXxne/NhOs1zAO7riusQ== + is-number@^7.0.0: version "7.0.0" resolved "https://mirrors.yuchat.top/repository/npmjs/is-number/-/is-number-7.0.0.tgz" @@ -1315,11 +1634,6 @@ isexe@^2.0.0: resolved "https://mirrors.yuchat.top/repository/npmjs/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -js-cookie@^3.0.5: - version "3.0.5" - resolved "https://mirrors.yuchat.top/repository/npmjs/js-cookie/-/js-cookie-3.0.5.tgz" - integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://mirrors.yuchat.top/repository/npmjs/js-tokens/-/js-tokens-4.0.0.tgz" @@ -1352,6 +1666,13 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://mirrors.yuchat.top/repository/npmjs/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json2mq@^0.2.0: + version "0.2.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== + dependencies: + string-convert "^0.2.0" + json5@^2.2.3: version "2.2.3" resolved "https://mirrors.yuchat.top/repository/npmjs/json5/-/json5-2.2.3.tgz" @@ -1364,7 +1685,7 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -less@*, less@^4.4.2: +less@^4.4.2: version "4.4.2" resolved "https://mirrors.yuchat.top/repository/npmjs/less/-/less-4.4.2.tgz" integrity sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g== @@ -1401,11 +1722,6 @@ lodash.merge@^4.6.2: resolved "https://mirrors.yuchat.top/repository/npmjs/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.21: - version "4.17.21" - resolved "https://mirrors.yuchat.top/repository/npmjs/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - loose-envify@^1.1.0: version "1.4.0" resolved "https://mirrors.yuchat.top/repository/npmjs/loose-envify/-/loose-envify-1.4.0.tgz" @@ -1463,13 +1779,6 @@ mime@^1.4.1: resolved "https://mirrors.yuchat.top/repository/npmjs/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://mirrors.yuchat.top/repository/npmjs/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - minimatch@9.0.3: version "9.0.3" resolved "https://mirrors.yuchat.top/repository/npmjs/minimatch/-/minimatch-9.0.3.tgz" @@ -1477,16 +1786,18 @@ minimatch@9.0.3: dependencies: brace-expansion "^2.0.1" +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://mirrors.yuchat.top/repository/npmjs/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + ms@^2.1.3: version "2.1.3" resolved "https://mirrors.yuchat.top/repository/npmjs/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nano-memoize@^3.0.16: - version "3.0.16" - resolved "https://mirrors.yuchat.top/repository/npmjs/nano-memoize/-/nano-memoize-3.0.16.tgz" - integrity sha512-JyK96AKVGAwVeMj3MoMhaSXaUNqgMbCRSQB3trUV8tYZfWEzqUBKdK1qJpfuNXgKeHOx1jv/IEYTM659ly7zUA== - nanoid@^3.3.11: version "3.3.11" resolved "https://mirrors.yuchat.top/repository/npmjs/nanoid/-/nanoid-3.3.11.tgz" @@ -1624,43 +1935,358 @@ queue-microtask@^1.2.2: resolved "https://mirrors.yuchat.top/repository/npmjs/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -rc-field-form@^1.34.2: - version "1.44.0" - resolved "https://mirrors.yuchat.top/repository/npmjs/rc-field-form/-/rc-field-form-1.44.0.tgz" - integrity sha512-el7w87fyDUsca63Y/s8qJcq9kNkf/J5h+iTdqG5WsSHLH0e6Usl7QuYSmSVzJMgtp40mOVZIY/W/QP9zwrp1FA== +rc-cascader@~3.34.0: + version "3.34.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-cascader/-/rc-cascader-3.34.0.tgz#56f936ab6b1229bab7d558701ce9b9e96536582c" + integrity sha512-KpXypcvju9ptjW9FaN2NFcA2QH9E9LHKq169Y0eWtH4e/wHQ5Wh5qZakAgvb8EKZ736WZ3B0zLLOBsrsja5Dag== + dependencies: + "@babel/runtime" "^7.25.7" + classnames "^2.3.1" + rc-select "~14.16.2" + rc-tree "~5.13.0" + rc-util "^5.43.0" + +rc-checkbox@~3.5.0: + version "3.5.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-checkbox/-/rc-checkbox-3.5.0.tgz#3ae2441e3a321774d390f76539e706864fcf5ff0" + integrity sha512-aOAQc3E98HteIIsSqm6Xk2FPKIER6+5vyEFMZfo73TqM+VVAIqOkHoPjgKLqSNtVLWScoaM7vY2ZrGEheI79yg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.3.2" + rc-util "^5.25.2" + +rc-collapse@~3.9.0: + version "3.9.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-collapse/-/rc-collapse-3.9.0.tgz#972404ce7724e1c9d1d2476543e1175404a36806" + integrity sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.3.4" + rc-util "^5.27.0" + +rc-dialog@~9.6.0: + version "9.6.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-dialog/-/rc-dialog-9.6.0.tgz#dc7a255c6ad1cb56021c3a61c7de86ee88c7c371" + integrity sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/portal" "^1.0.0-8" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.21.0" + +rc-drawer@~7.3.0: + version "7.3.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-drawer/-/rc-drawer-7.3.0.tgz#1bb5fe5f9da38b6a2b2a7dffc9fcb647252a328f" + integrity sha512-DX6CIgiBWNpJIMGFO8BAISFkxiuKitoizooj4BDyee8/SnBn0zwO2FHrNDpqqepj0E/TFTDpmEBCyFuTgC7MOg== + dependencies: + "@babel/runtime" "^7.23.9" + "@rc-component/portal" "^1.1.1" + classnames "^2.2.6" + rc-motion "^2.6.1" + rc-util "^5.38.1" + +rc-dropdown@~4.2.0, rc-dropdown@~4.2.1: + version "4.2.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-dropdown/-/rc-dropdown-4.2.1.tgz#44729eb2a4272e0353d31ac060da21e606accb1c" + integrity sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA== + dependencies: + "@babel/runtime" "^7.18.3" + "@rc-component/trigger" "^2.0.0" + classnames "^2.2.6" + rc-util "^5.44.1" + +rc-field-form@~2.7.1: + version "2.7.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-field-form/-/rc-field-form-2.7.1.tgz#8bb1d7c6bf40e2b99b494816972252c327d9b5a0" + integrity sha512-vKeSifSJ6HoLaAB+B8aq/Qgm8a3dyxROzCtKNCsBQgiverpc4kWDQihoUwzUj+zNWJOykwSY4dNX3QrGwtVb9A== dependencies: "@babel/runtime" "^7.18.0" - async-validator "^4.1.0" + "@rc-component/async-validator" "^5.0.3" rc-util "^5.32.2" -rc-motion@^2.4.4: +rc-image@~7.12.0: + version "7.12.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-image/-/rc-image-7.12.0.tgz#95e9314701e668217d113c1f29b4f01ac025cafe" + integrity sha512-cZ3HTyyckPnNnUb9/DRqduqzLfrQRyi+CdHjdqgsyDpI3Ln5UX1kXnAhPBSJj9pVRzwRFgqkN7p9b6HBDjmu/Q== + dependencies: + "@babel/runtime" "^7.11.2" + "@rc-component/portal" "^1.0.2" + classnames "^2.2.6" + rc-dialog "~9.6.0" + rc-motion "^2.6.2" + rc-util "^5.34.1" + +rc-input-number@~9.5.0: + version "9.5.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-input-number/-/rc-input-number-9.5.0.tgz#b47963d0f2cbd85ab2f1badfdc089a904c073f38" + integrity sha512-bKaEvB5tHebUURAEXw35LDcnRZLq3x1k7GxfAqBMzmpHkDGzjAtnUL8y4y5N15rIFIg5IJgwr211jInl3cipag== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/mini-decimal" "^1.0.1" + classnames "^2.2.5" + rc-input "~1.8.0" + rc-util "^5.40.1" + +rc-input@~1.8.0: + version "1.8.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-input/-/rc-input-1.8.0.tgz#d2f4404befebf2fbdc28390d5494c302f74ae974" + integrity sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.18.1" + +rc-mentions@~2.20.0: + version "2.20.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-mentions/-/rc-mentions-2.20.0.tgz#3bbeac0352b02e0ce3e1244adb48701bb6903bf7" + integrity sha512-w8HCMZEh3f0nR8ZEd466ATqmXFCMGMN5UFCzEUL0bM/nGw/wOS2GgRzKBcm19K++jDyuWCOJOdgcKGXU3fXfbQ== + dependencies: + "@babel/runtime" "^7.22.5" + "@rc-component/trigger" "^2.0.0" + classnames "^2.2.6" + rc-input "~1.8.0" + rc-menu "~9.16.0" + rc-textarea "~1.10.0" + rc-util "^5.34.1" + +rc-menu@~9.16.0, rc-menu@~9.16.1: + version "9.16.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-menu/-/rc-menu-9.16.1.tgz#9df1168e41d87dc7164c582173e1a1d32011899f" + integrity sha512-ghHx6/6Dvp+fw8CJhDUHFHDJ84hJE3BXNCzSgLdmNiFErWSOaZNsihDAsKq9ByTALo/xkNIwtDFGIl6r+RPXBg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^2.0.0" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.3.1" + rc-util "^5.27.0" + +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.9.0, rc-motion@^2.9.5: version "2.9.5" - resolved "https://mirrors.yuchat.top/repository/npmjs/rc-motion/-/rc-motion-2.9.5.tgz" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-motion/-/rc-motion-2.9.5.tgz#12c6ead4fd355f94f00de9bb4f15df576d677e0c" integrity sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA== dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" rc-util "^5.44.0" -rc-segmented@~2.4.1: - version "2.4.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/rc-segmented/-/rc-segmented-2.4.1.tgz" - integrity sha512-KUi+JJFdKnumV9iXlm+BJ00O4NdVBp2TEexLCk6bK1x/RH83TvYKQMzIz/7m3UTRPD08RM/8VG/JNjWgWbd4cw== +rc-notification@~5.6.4: + version "5.6.4" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-notification/-/rc-notification-5.6.4.tgz#ea89c39c13cd517fdfd97fe63f03376fabb78544" + integrity sha512-KcS4O6B4qzM3KH7lkwOB7ooLPZ4b6J+VMmQgT51VZCeEcmghdeR4IrMcFq0LG+RPdnbe/ArT086tGM8Snimgiw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.9.0" + rc-util "^5.20.1" + +rc-overflow@^1.3.1, rc-overflow@^1.3.2: + version "1.5.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-overflow/-/rc-overflow-1.5.0.tgz#02e58a15199e392adfcc87e0d6e9e7c8e57f2771" + integrity sha512-Lm/v9h0LymeUYJf0x39OveU52InkdRXqnn2aYXfWmo8WdOonIKB2kfau+GF0fWq6jPgtdO9yMqveGcK6aIhJmg== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.37.0" + +rc-pagination@~5.1.0: + version "5.1.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-pagination/-/rc-pagination-5.1.0.tgz#a6e63a2c5db29e62f991282eb18a2d3ee725ba8b" + integrity sha512-8416Yip/+eclTFdHXLKTxZvn70duYVGTvUUWbckCCZoIl3jagqke3GLsFrMs0bsQBikiYpZLD9206Ej4SOdOXQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.3.2" + rc-util "^5.38.0" + +rc-picker@~4.11.3: + version "4.11.3" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-picker/-/rc-picker-4.11.3.tgz#7e7e3ad83aa461c284b8391c697492d1c34d2cb8" + integrity sha512-MJ5teb7FlNE0NFHTncxXQ62Y5lytq6sh5nUw0iH8OkHL/TjARSEvSHpr940pWgjGANpjCwyMdvsEV55l5tYNSg== + dependencies: + "@babel/runtime" "^7.24.7" + "@rc-component/trigger" "^2.0.0" + classnames "^2.2.1" + rc-overflow "^1.3.2" + rc-resize-observer "^1.4.0" + rc-util "^5.43.0" + +rc-progress@~4.0.0: + version "4.0.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-progress/-/rc-progress-4.0.0.tgz#5382147d9add33d3a5fbd264001373df6440e126" + integrity sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.16.1" + +rc-rate@~2.13.1: + version "2.13.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-rate/-/rc-rate-2.13.1.tgz#29af7a3d4768362e9d4388f955a8b6389526b7fd" + integrity sha512-QUhQ9ivQ8Gy7mtMZPAjLbxBt5y9GRp65VcUyGUMF3N3fhiftivPHdpuDIaWIMOTEprAjZPC08bls1dQB+I1F2Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0, rc-resize-observer@^1.4.3: + version "1.4.3" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-resize-observer/-/rc-resize-observer-1.4.3.tgz#4fd41fa561ba51362b5155a07c35d7c89a1ea569" + integrity sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ== + dependencies: + "@babel/runtime" "^7.20.7" + classnames "^2.2.1" + rc-util "^5.44.1" + resize-observer-polyfill "^1.5.1" + +rc-segmented@~2.7.0: + version "2.7.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-segmented/-/rc-segmented-2.7.0.tgz#f56c2044abf8f03958b3a9a9d32987f10dcc4fc4" + integrity sha512-liijAjXz+KnTRVnxxXG2sYDGd6iLL7VpGGdR8gwoxAXy2KglviKCxLWZdjKYJzYzGSUwKDSTdYk8brj54Bn5BA== dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" rc-motion "^2.4.4" rc-util "^5.17.0" -rc-util@^5.17.0, rc-util@^5.32.2, rc-util@^5.44.0, rc-util@^5.44.4: +rc-select@~14.16.2, rc-select@~14.16.8: + version "14.16.8" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-select/-/rc-select-14.16.8.tgz#78e6782f1ccc1f03d9003bc3effa4ed609d29a97" + integrity sha512-NOV5BZa1wZrsdkKaiK7LHRuo5ZjZYMDxPP6/1+09+FB4KoNi8jcG1ZqLE3AVCxEsYMBe65OBx71wFoHRTP3LRg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^2.1.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.3.1" + rc-util "^5.16.1" + rc-virtual-list "^3.5.2" + +rc-slider@~11.1.9: + version "11.1.9" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-slider/-/rc-slider-11.1.9.tgz#d872130fbf4ec51f28543d62e90451091d6f5208" + integrity sha512-h8IknhzSh3FEM9u8ivkskh+Ef4Yo4JRIY2nj7MrH6GQmrwV6mcpJf5/4KgH5JaVI1H3E52yCdpOlVyGZIeph5A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.36.0" + +rc-steps@~6.0.1: + version "6.0.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-steps/-/rc-steps-6.0.1.tgz#c2136cd0087733f6d509209a84a5c80dc29a274d" + integrity sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g== + dependencies: + "@babel/runtime" "^7.16.7" + classnames "^2.2.3" + rc-util "^5.16.1" + +rc-switch@~4.1.0: + version "4.1.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-switch/-/rc-switch-4.1.0.tgz#f37d81b4e0c5afd1274fd85367b17306bf25e7d7" + integrity sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg== + dependencies: + "@babel/runtime" "^7.21.0" + classnames "^2.2.1" + rc-util "^5.30.0" + +rc-table@~7.54.0: + version "7.54.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-table/-/rc-table-7.54.0.tgz#dedd4ea18d1189f2acdf90a80f04d8ca0111e16a" + integrity sha512-/wDTkki6wBTjwylwAGjpLKYklKo9YgjZwAU77+7ME5mBoS32Q4nAwoqhA2lSge6fobLW3Tap6uc5xfwaL2p0Sw== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/context" "^1.4.0" + classnames "^2.2.5" + rc-resize-observer "^1.1.0" + rc-util "^5.44.3" + rc-virtual-list "^3.14.2" + +rc-tabs@~15.7.0: + version "15.7.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-tabs/-/rc-tabs-15.7.0.tgz#14ca2ee6213d00491a8b67ae26e2d35c256bf19a" + integrity sha512-ZepiE+6fmozYdWf/9gVp7k56PKHB1YYoDsKeQA1CBlJ/POIhjkcYiv0AGP0w2Jhzftd3AVvZP/K+V+Lpi2ankA== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "2.x" + rc-dropdown "~4.2.0" + rc-menu "~9.16.0" + rc-motion "^2.6.2" + rc-resize-observer "^1.0.0" + rc-util "^5.34.1" + +rc-textarea@~1.10.0, rc-textarea@~1.10.2: + version "1.10.2" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-textarea/-/rc-textarea-1.10.2.tgz#459e3574a95c32939c6793045a1e4db04cb514cc" + integrity sha512-HfaeXiaSlpiSp0I/pvWpecFEHpVysZ9tpDLNkxQbMvMz6gsr7aVZ7FpWP9kt4t7DB+jJXesYS0us1uPZnlRnwQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-input "~1.8.0" + rc-resize-observer "^1.0.0" + rc-util "^5.27.0" + +rc-tooltip@~6.4.0: + version "6.4.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-tooltip/-/rc-tooltip-6.4.0.tgz#e832ed0392872025e59928cfc1ad9045656467fd" + integrity sha512-kqyivim5cp8I5RkHmpsp1Nn/Wk+1oeloMv9c7LXNgDxUpGm+RbXJGL+OPvDlcRnx9DBeOe4wyOIl4OKUERyH1g== + dependencies: + "@babel/runtime" "^7.11.2" + "@rc-component/trigger" "^2.0.0" + classnames "^2.3.1" + rc-util "^5.44.3" + +rc-tree-select@~5.27.0: + version "5.27.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-tree-select/-/rc-tree-select-5.27.0.tgz#3daa62972ae80846dac96bf4776d1a9dc9c7c4c6" + integrity sha512-2qTBTzwIT7LRI1o7zLyrCzmo5tQanmyGbSaGTIf7sYimCklAToVVfpMC6OAldSKolcnjorBYPNSKQqJmN3TCww== + dependencies: + "@babel/runtime" "^7.25.7" + classnames "2.x" + rc-select "~14.16.2" + rc-tree "~5.13.0" + rc-util "^5.43.0" + +rc-tree@~5.13.0, rc-tree@~5.13.1: + version "5.13.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-tree/-/rc-tree-5.13.1.tgz#f36a33a94a1282f4b09685216c01487089748910" + integrity sha512-FNhIefhftobCdUJshO7M8uZTA9F4OPGVXqGfZkkD/5soDeOhwO06T/aKTrg0WD8gRg/pyfq+ql3aMymLHCTC4A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.16.1" + rc-virtual-list "^3.5.1" + +rc-upload@~4.11.0: + version "4.11.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-upload/-/rc-upload-4.11.0.tgz#c2ced905a8b38b3e5c48493d388ca0e8373de18b" + integrity sha512-ZUyT//2JAehfHzjWowqROcwYJKnZkIUGWaTE/VogVrepSl7AFNbQf4+zGfX4zl9Vrj/Jm8scLO0R6UlPDKK4wA== + dependencies: + "@babel/runtime" "^7.18.3" + classnames "^2.2.5" + rc-util "^5.2.0" + +rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.40.1, rc-util@^5.43.0, rc-util@^5.44.0, rc-util@^5.44.1, rc-util@^5.44.3, rc-util@^5.44.4: version "5.44.4" - resolved "https://mirrors.yuchat.top/repository/npmjs/rc-util/-/rc-util-5.44.4.tgz" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-util/-/rc-util-5.44.4.tgz#89ee9037683cca01cd60f1a6bbda761457dd6ba5" integrity sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w== dependencies: "@babel/runtime" "^7.18.3" react-is "^18.2.0" -"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", react-dom@^18.2.0, react-dom@>=16.0.0, react-dom@>=16.8, react-dom@>=16.9.0: +rc-virtual-list@^3.14.2, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: + version "3.19.2" + resolved "https://mirrors.yuchat.top/repository/npmjs/rc-virtual-list/-/rc-virtual-list-3.19.2.tgz#1dd2d782c9a3ccbe537bb873447d73f83af8de0f" + integrity sha512-Ys6NcjwGkuwkeaWBDqfI3xWuZ7rDiQXlH1o2zLfFzATfEgXcqpk8CkgMfbJD81McqjcJVez25a3kPxCR807evA== + dependencies: + "@babel/runtime" "^7.20.0" + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.36.0" + +react-dom@^18.2.0: version "18.3.1" resolved "https://mirrors.yuchat.top/repository/npmjs/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -1668,14 +2294,9 @@ rc-util@^5.17.0, rc-util@^5.32.2, rc-util@^5.44.0, rc-util@^5.44.4: loose-envify "^1.1.0" scheduler "^0.23.2" -react-fast-compare@^3.2.2: - version "3.2.2" - resolved "https://mirrors.yuchat.top/repository/npmjs/react-fast-compare/-/react-fast-compare-3.2.2.tgz" - integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== - react-is@^18.2.0: version "18.3.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/react-is/-/react-is-18.3.1.tgz" + resolved "https://mirrors.yuchat.top/repository/npmjs/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== react-refresh@^0.17.0: @@ -1698,7 +2319,7 @@ react-router@6.30.1: dependencies: "@remix-run/router" "1.23.0" -"react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", react@^18.2.0, react@^18.3.1, "react@>= 16.8.0", react@>=16.0.0, react@>=16.8, react@>=16.9.0: +react@^18.2.0: version "18.3.1" resolved "https://mirrors.yuchat.top/repository/npmjs/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -1707,7 +2328,7 @@ react-router@6.30.1: resize-observer-polyfill@^1.5.1: version "1.5.1" - resolved "https://mirrors.yuchat.top/repository/npmjs/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + resolved "https://mirrors.yuchat.top/repository/npmjs/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== resolve-from@^4.0.0: @@ -1765,11 +2386,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -runes2@^1.1.2: - version "1.1.4" - resolved "https://mirrors.yuchat.top/repository/npmjs/runes2/-/runes2-1.1.4.tgz" - integrity sha512-LNPnEDPOOU4ehF71m5JoQyzT2yxwD6ZreFJ7MxZUAoMKNMY1XrAo60H1CUoX5ncSm0rIuKlqn9JZNRrRkNou2g== - "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://mirrors.yuchat.top/repository/npmjs/safer-buffer/-/safer-buffer-2.1.2.tgz" @@ -1787,10 +2403,12 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -screenfull@^5.0.0: - version "5.2.0" - resolved "https://mirrors.yuchat.top/repository/npmjs/screenfull/-/screenfull-5.2.0.tgz" - integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== +scroll-into-view-if-needed@^3.1.0: + version "3.1.0" + resolved "https://mirrors.yuchat.top/repository/npmjs/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz#fa9524518c799b45a2ef6bbffb92bcad0296d01f" + integrity sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ== + dependencies: + compute-scroll-into-view "^3.0.2" semver@^5.6.0: version "5.7.2" @@ -1834,10 +2452,10 @@ source-map@~0.6.0: resolved "https://mirrors.yuchat.top/repository/npmjs/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -staged-components@^1.1.3: - version "1.1.3" - resolved "https://mirrors.yuchat.top/repository/npmjs/staged-components/-/staged-components-1.1.3.tgz" - integrity sha512-9EIswzDqjwlEu+ymkV09TTlJfzSbKgEnNteUnZSTxkpMgr5Wx2CzzA9WcMFWBNCldqVPsHVnRGGrApduq2Se5A== +string-convert@^0.2.0: + version "0.2.1" + resolved "https://mirrors.yuchat.top/repository/npmjs/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== strip-ansi@^6.0.1: version "6.0.1" @@ -1851,6 +2469,11 @@ strip-json-comments@^3.1.1: resolved "https://mirrors.yuchat.top/repository/npmjs/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +stylis@^4.3.4: + version "4.3.6" + resolved "https://mirrors.yuchat.top/repository/npmjs/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320" + integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== + supports-color@^7.1.0: version "7.2.0" resolved "https://mirrors.yuchat.top/repository/npmjs/supports-color/-/supports-color-7.2.0.tgz" @@ -1863,6 +2486,11 @@ text-table@^0.2.0: resolved "https://mirrors.yuchat.top/repository/npmjs/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +throttle-debounce@^5.0.0, throttle-debounce@^5.0.2: + version "5.0.2" + resolved "https://mirrors.yuchat.top/repository/npmjs/throttle-debounce/-/throttle-debounce-5.0.2.tgz#ec5549d84e053f043c9fd0f2a6dd892ff84456b1" + integrity sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://mirrors.yuchat.top/repository/npmjs/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -1870,12 +2498,17 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://mirrors.yuchat.top/repository/npmjs/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + ts-api-utils@^1.0.1: version "1.4.3" resolved "https://mirrors.yuchat.top/repository/npmjs/ts-api-utils/-/ts-api-utils-1.4.3.tgz" integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== -tslib@^2.3.0, tslib@^2.4.1, tslib@^2.5.0: +tslib@^2.3.0: version "2.8.1" resolved "https://mirrors.yuchat.top/repository/npmjs/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -1892,7 +2525,7 @@ type-fest@^0.20.2: resolved "https://mirrors.yuchat.top/repository/npmjs/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typescript@^5.3.3, typescript@>=4.2.0: +typescript@^5.3.3: version "5.9.3" resolved "https://mirrors.yuchat.top/repository/npmjs/typescript/-/typescript-5.9.3.tgz" integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== @@ -1917,12 +2550,7 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -use-sync-external-store@^1.2.0: - version "1.6.0" - resolved "https://mirrors.yuchat.top/repository/npmjs/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz" - integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w== - -"vite@^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", vite@^5.0.11: +vite@^5.0.11: version "5.4.21" resolved "https://mirrors.yuchat.top/repository/npmjs/vite/-/vite-5.4.21.tgz" integrity sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==