diff --git a/web/src/images/example.png b/web/public/example.png similarity index 100% rename from web/src/images/example.png rename to web/public/example.png diff --git a/web/src/App.js b/web/src/App.js index e71b27cf..ff0abbbb 100644 --- a/web/src/App.js +++ b/web/src/App.js @@ -1,15 +1,15 @@ import React, { lazy, Suspense } from 'react'; import { Route, Routes, useLocation } from 'react-router-dom'; -import Loading from './components/Loading'; +import Loading from './components/common/Loading.js'; import User from './pages/User'; import { AuthRedirect, PrivateRoute } from './helpers'; -import RegisterForm from './components/RegisterForm'; -import LoginForm from './components/LoginForm'; +import RegisterForm from './components/auth/RegisterForm.js'; +import LoginForm from './components/auth/LoginForm.js'; import NotFound from './pages/NotFound'; import Setting from './pages/Setting'; import EditUser from './pages/User/EditUser'; -import PasswordResetForm from './components/PasswordResetForm'; -import PasswordResetConfirm from './components/PasswordResetConfirm'; +import PasswordResetForm from './components/auth/PasswordResetForm.js'; +import PasswordResetConfirm from './components/auth/PasswordResetConfirm.js'; import Channel from './pages/Channel'; import Token from './pages/Token'; import EditChannel from './pages/Channel/EditChannel'; @@ -22,8 +22,8 @@ import Midjourney from './pages/Midjourney'; import Pricing from './pages/Pricing/index.js'; import Task from './pages/Task/index.js'; import Playground from './pages/Playground/index.js'; -import OAuth2Callback from './components/OAuth2Callback.js'; -import PersonalSetting from './components/PersonalSetting.js'; +import OAuth2Callback from './components/auth/OAuth2Callback.js'; +import PersonalSetting from './components/settings/PersonalSetting.js'; import Setup from './pages/Setup/index.js'; import SetupCheck from './components/SetupCheck'; diff --git a/web/src/components/LoginForm.js b/web/src/components/auth/LoginForm.js similarity index 98% rename from web/src/components/LoginForm.js rename to web/src/components/auth/LoginForm.js index aa7d40da..26ec53a4 100644 --- a/web/src/components/LoginForm.js +++ b/web/src/components/auth/LoginForm.js @@ -1,6 +1,6 @@ import React, { useContext, useEffect, useState } from 'react'; import { Link, useNavigate, useSearchParams } from 'react-router-dom'; -import { UserContext } from '../context/User'; +import { UserContext } from '../../context/User/index.js'; import { API, getLogo, @@ -13,7 +13,7 @@ import { onGitHubOAuthClicked, onOIDCClicked, onLinuxDOOAuthClicked -} from '../helpers'; +} from '../../helpers/index.js'; import Turnstile from 'react-turnstile'; import { Button, @@ -28,11 +28,11 @@ import Text from '@douyinfe/semi-ui/lib/es/typography/text'; import TelegramLoginButton from 'react-telegram-login'; import { IconGithubLogo, IconMail, IconLock } from '@douyinfe/semi-icons'; -import OIDCIcon from './common/logo/OIDCIcon.js'; -import WeChatIcon from './common/logo/WeChatIcon.js'; -import LinuxDoIcon from './common/logo/LinuxDoIcon.js'; +import OIDCIcon from '../common/logo/OIDCIcon.js'; +import WeChatIcon from '../common/logo/WeChatIcon.js'; +import LinuxDoIcon from '../common/logo/LinuxDoIcon.js'; import { useTranslation } from 'react-i18next'; -import Background from '../images/example.png'; +import Background from '/example.png'; const LoginForm = () => { const [inputs, setInputs] = useState({ diff --git a/web/src/components/OAuth2Callback.js b/web/src/components/auth/OAuth2Callback.js similarity index 96% rename from web/src/components/OAuth2Callback.js rename to web/src/components/auth/OAuth2Callback.js index 8a36b443..83f9db46 100644 --- a/web/src/components/OAuth2Callback.js +++ b/web/src/components/auth/OAuth2Callback.js @@ -1,8 +1,8 @@ import React, { useContext, useEffect, useState } from 'react'; import { Spin, Typography, Space } from '@douyinfe/semi-ui'; import { useNavigate, useSearchParams } from 'react-router-dom'; -import { API, showError, showSuccess, updateAPI, setUserData } from '../helpers'; -import { UserContext } from '../context/User'; +import { API, showError, showSuccess, updateAPI, setUserData } from '../../helpers'; +import { UserContext } from '../../context/User'; const OAuth2Callback = (props) => { const [searchParams, setSearchParams] = useSearchParams(); diff --git a/web/src/components/PasswordResetConfirm.js b/web/src/components/auth/PasswordResetConfirm.js similarity index 98% rename from web/src/components/PasswordResetConfirm.js rename to web/src/components/auth/PasswordResetConfirm.js index 7ed089bf..dc69ccdc 100644 --- a/web/src/components/PasswordResetConfirm.js +++ b/web/src/components/auth/PasswordResetConfirm.js @@ -1,10 +1,10 @@ import React, { useEffect, useState } from 'react'; -import { API, copy, showError, showNotice, getLogo, getSystemName } from '../helpers'; +import { API, copy, showError, showNotice, getLogo, getSystemName } from '../../helpers'; import { useSearchParams, Link } from 'react-router-dom'; import { Button, Card, Form, Typography } from '@douyinfe/semi-ui'; import { IconMail, IconLock } from '@douyinfe/semi-icons'; import { useTranslation } from 'react-i18next'; -import Background from '../images/example.png'; +import Background from '/example.png'; const { Text, Title } = Typography; diff --git a/web/src/components/PasswordResetForm.js b/web/src/components/auth/PasswordResetForm.js similarity index 98% rename from web/src/components/PasswordResetForm.js rename to web/src/components/auth/PasswordResetForm.js index f256f290..6abdfaa5 100644 --- a/web/src/components/PasswordResetForm.js +++ b/web/src/components/auth/PasswordResetForm.js @@ -1,11 +1,11 @@ import React, { useEffect, useState } from 'react'; -import { API, getLogo, showError, showInfo, showSuccess, getSystemName } from '../helpers'; +import { API, getLogo, showError, showInfo, showSuccess, getSystemName } from '../../helpers'; import Turnstile from 'react-turnstile'; import { Button, Card, Form, Typography } from '@douyinfe/semi-ui'; import { IconMail } from '@douyinfe/semi-icons'; import { Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import Background from '../images/example.png'; +import Background from '/example.png'; const { Text, Title } = Typography; diff --git a/web/src/components/RegisterForm.js b/web/src/components/auth/RegisterForm.js similarity index 98% rename from web/src/components/RegisterForm.js rename to web/src/components/auth/RegisterForm.js index 23ff94df..e87e586c 100644 --- a/web/src/components/RegisterForm.js +++ b/web/src/components/auth/RegisterForm.js @@ -9,7 +9,7 @@ import { updateAPI, getSystemName, setUserData -} from '../helpers'; +} from '../../helpers/index.js'; import Turnstile from 'react-turnstile'; import { Button, @@ -26,14 +26,14 @@ import { onGitHubOAuthClicked, onLinuxDOOAuthClicked, onOIDCClicked, -} from '../helpers'; -import OIDCIcon from './common/logo/OIDCIcon.js'; -import LinuxDoIcon from './common/logo/LinuxDoIcon.js'; -import WeChatIcon from './common/logo/WeChatIcon.js'; +} from '../../helpers/index.js'; +import OIDCIcon from '../common/logo/OIDCIcon.js'; +import LinuxDoIcon from '../common/logo/LinuxDoIcon.js'; +import WeChatIcon from '../common/logo/WeChatIcon.js'; import TelegramLoginButton from 'react-telegram-login/src'; -import { UserContext } from '../context/User/index.js'; +import { UserContext } from '../../context/User/index.js'; import { useTranslation } from 'react-i18next'; -import Background from '../images/example.png'; +import Background from '/example.png'; const RegisterForm = () => { const { t } = useTranslation(); diff --git a/web/src/components/Loading.js b/web/src/components/common/Loading.js similarity index 100% rename from web/src/components/Loading.js rename to web/src/components/common/Loading.js diff --git a/web/src/components/Footer.js b/web/src/components/layout/Footer.js similarity index 97% rename from web/src/components/Footer.js rename to web/src/components/layout/Footer.js index fbc33158..d549a4e0 100644 --- a/web/src/components/Footer.js +++ b/web/src/components/layout/Footer.js @@ -1,8 +1,8 @@ import React, { useEffect, useState, useMemo, useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { Typography } from '@douyinfe/semi-ui'; -import { getFooterHTML, getLogo, getSystemName } from '../helpers'; -import { StatusContext } from '../context/Status'; +import { getFooterHTML, getLogo, getSystemName } from '../../helpers'; +import { StatusContext } from '../../context/Status'; const FooterBar = () => { const { t } = useTranslation(); diff --git a/web/src/components/HeaderBar.js b/web/src/components/layout/HeaderBar.js similarity index 98% rename from web/src/components/HeaderBar.js rename to web/src/components/layout/HeaderBar.js index d4afac2c..c78ba299 100644 --- a/web/src/components/HeaderBar.js +++ b/web/src/components/layout/HeaderBar.js @@ -1,12 +1,12 @@ import React, { useContext, useEffect, useState } from 'react'; import { Link, useNavigate, useLocation } from 'react-router-dom'; -import { UserContext } from '../context/User'; -import { useSetTheme, useTheme } from '../context/Theme'; +import { UserContext } from '../../context/User/index.js'; +import { useSetTheme, useTheme } from '../../context/Theme/index.js'; import { useTranslation } from 'react-i18next'; -import { API, getLogo, getSystemName, showSuccess, stringToColor } from '../helpers'; +import { API, getLogo, getSystemName, showSuccess, stringToColor } from '../../helpers/index.js'; import fireworks from 'react-fireworks'; import { CN, GB } from 'country-flag-icons/react/3x2'; -import NoticeModal from './NoticeModal'; +import NoticeModal from './NoticeModal.js'; import { IconClose, @@ -29,8 +29,8 @@ import { Typography, Skeleton, } from '@douyinfe/semi-ui'; -import { StatusContext } from '../context/Status/index.js'; -import { useStyle, styleActions } from '../context/Style/index.js'; +import { StatusContext } from '../../context/Status/index.js'; +import { useStyle, styleActions } from '../../context/Style/index.js'; const HeaderBar = () => { const { t, i18n } = useTranslation(); diff --git a/web/src/components/NoticeModal.js b/web/src/components/layout/NoticeModal.js similarity index 98% rename from web/src/components/NoticeModal.js rename to web/src/components/layout/NoticeModal.js index df45a581..626d8d17 100644 --- a/web/src/components/NoticeModal.js +++ b/web/src/components/layout/NoticeModal.js @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { Button, Modal, Empty } from '@douyinfe/semi-ui'; import { useTranslation } from 'react-i18next'; -import { API, showError } from '../helpers'; +import { API, showError } from '../../helpers'; import { marked } from 'marked'; import { IllustrationNoContent, IllustrationNoContentDark } from '@douyinfe/semi-illustrations'; diff --git a/web/src/components/PageLayout.js b/web/src/components/layout/PageLayout.js similarity index 94% rename from web/src/components/PageLayout.js rename to web/src/components/layout/PageLayout.js index 76d8e6b7..6b0c4c6d 100644 --- a/web/src/components/PageLayout.js +++ b/web/src/components/layout/PageLayout.js @@ -1,15 +1,15 @@ import HeaderBar from './HeaderBar.js'; import { Layout } from '@douyinfe/semi-ui'; import SiderBar from './SiderBar.js'; -import App from '../App.js'; +import App from '../../App.js'; import FooterBar from './Footer.js'; import { ToastContainer } from 'react-toastify'; import React, { useContext, useEffect } from 'react'; -import { useStyle } from '../context/Style/index.js'; +import { useStyle } from '../../context/Style/index.js'; import { useTranslation } from 'react-i18next'; -import { API, getLogo, getSystemName, showError, setStatusData } from '../helpers'; -import { UserContext } from '../context/User/index.js'; -import { StatusContext } from '../context/Status/index.js'; +import { API, getLogo, getSystemName, showError, setStatusData } from '../../helpers/index.js'; +import { UserContext } from '../../context/User/index.js'; +import { StatusContext } from '../../context/Status/index.js'; import { useLocation } from 'react-router-dom'; const { Sider, Content, Header, Footer } = Layout; diff --git a/web/src/components/SiderBar.js b/web/src/components/layout/SiderBar.js similarity index 96% rename from web/src/components/SiderBar.js rename to web/src/components/layout/SiderBar.js index 97a4bb03..30117eee 100644 --- a/web/src/components/SiderBar.js +++ b/web/src/components/layout/SiderBar.js @@ -1,14 +1,12 @@ import React, { useContext, useEffect, useMemo, useState } from 'react'; -import { Link, useNavigate, useLocation } from 'react-router-dom'; -import { UserContext } from '../context/User'; -import { StatusContext } from '../context/Status'; +import { Link, useLocation } from 'react-router-dom'; +import { StatusContext } from '../../context/Status/index.js'; import { useTranslation } from 'react-i18next'; import { isAdmin, showError -} from '../helpers'; -import '../index.css'; +} from '../../helpers/index.js'; import { IconCalendarClock, @@ -17,26 +15,19 @@ import { IconTerminal, IconCreditCard, IconGift, - IconHelpCircle, IconHistogram, - IconHome, IconImage, IconKey, IconLayers, - IconPriceTag, IconSetting, IconUser, } from '@douyinfe/semi-icons'; import { - Avatar, - Dropdown, - Layout, Nav, - Switch, Divider, } from '@douyinfe/semi-ui'; -import { useSetTheme, useTheme } from '../context/Theme/index.js'; -import { useStyle, styleActions } from '../context/Style/index.js'; +import { useSetTheme, useTheme } from '../../context/Theme/index.js'; +import { useStyle, styleActions } from '../../context/Style/index.js'; import Text from '@douyinfe/semi-ui/lib/es/typography/text'; // 自定义侧边栏按钮样式 diff --git a/web/src/components/ModelSetting.js b/web/src/components/settings/ModelSetting.js similarity index 89% rename from web/src/components/ModelSetting.js rename to web/src/components/settings/ModelSetting.js index 9c60a390..1d583634 100644 --- a/web/src/components/ModelSetting.js +++ b/web/src/components/settings/ModelSetting.js @@ -1,11 +1,11 @@ import React, { useEffect, useState } from 'react'; import { Card, Spin, Tabs } from '@douyinfe/semi-ui'; -import { API, showError, showSuccess } from '../helpers'; +import { API, showError, showSuccess } from '../../helpers'; import { useTranslation } from 'react-i18next'; -import SettingGeminiModel from '../pages/Setting/Model/SettingGeminiModel.js'; -import SettingClaudeModel from '../pages/Setting/Model/SettingClaudeModel.js'; -import SettingGlobalModel from '../pages/Setting/Model/SettingGlobalModel.js'; +import SettingGeminiModel from '../../pages/Setting/Model/SettingGeminiModel.js'; +import SettingClaudeModel from '../../pages/Setting/Model/SettingClaudeModel.js'; +import SettingGlobalModel from '../../pages/Setting/Model/SettingGlobalModel.js'; const ModelSetting = () => { const { t } = useTranslation(); diff --git a/web/src/components/OperationSetting.js b/web/src/components/settings/OperationSetting.js similarity index 82% rename from web/src/components/OperationSetting.js rename to web/src/components/settings/OperationSetting.js index 28fb3a8f..2dc0b88e 100644 --- a/web/src/components/OperationSetting.js +++ b/web/src/components/settings/OperationSetting.js @@ -1,20 +1,20 @@ import React, { useEffect, useState } from 'react'; import { Card, Spin, Tabs } from '@douyinfe/semi-ui'; -import SettingsGeneral from '../pages/Setting/Operation/SettingsGeneral.js'; -import SettingsDrawing from '../pages/Setting/Operation/SettingsDrawing.js'; -import SettingsSensitiveWords from '../pages/Setting/Operation/SettingsSensitiveWords.js'; -import SettingsLog from '../pages/Setting/Operation/SettingsLog.js'; -import SettingsDataDashboard from '../pages/Setting/Operation/SettingsDataDashboard.js'; -import SettingsMonitoring from '../pages/Setting/Operation/SettingsMonitoring.js'; -import SettingsCreditLimit from '../pages/Setting/Operation/SettingsCreditLimit.js'; -import ModelSettingsVisualEditor from '../pages/Setting/Operation/ModelSettingsVisualEditor.js'; -import GroupRatioSettings from '../pages/Setting/Operation/GroupRatioSettings.js'; -import ModelRatioSettings from '../pages/Setting/Operation/ModelRatioSettings.js'; +import SettingsGeneral from '../../pages/Setting/Operation/SettingsGeneral.js'; +import SettingsDrawing from '../../pages/Setting/Operation/SettingsDrawing.js'; +import SettingsSensitiveWords from '../../pages/Setting/Operation/SettingsSensitiveWords.js'; +import SettingsLog from '../../pages/Setting/Operation/SettingsLog.js'; +import SettingsDataDashboard from '../../pages/Setting/Operation/SettingsDataDashboard.js'; +import SettingsMonitoring from '../../pages/Setting/Operation/SettingsMonitoring.js'; +import SettingsCreditLimit from '../../pages/Setting/Operation/SettingsCreditLimit.js'; +import ModelSettingsVisualEditor from '../../pages/Setting/Operation/ModelSettingsVisualEditor.js'; +import GroupRatioSettings from '../../pages/Setting/Operation/GroupRatioSettings.js'; +import ModelRatioSettings from '../../pages/Setting/Operation/ModelRatioSettings.js'; -import { API, showError, showSuccess } from '../helpers'; -import SettingsChats from '../pages/Setting/Operation/SettingsChats.js'; +import { API, showError, showSuccess } from '../../helpers'; +import SettingsChats from '../../pages/Setting/Operation/SettingsChats.js'; import { useTranslation } from 'react-i18next'; -import ModelRatioNotSetEditor from '../pages/Setting/Operation/ModelRationNotSetEditor.js'; +import ModelRatioNotSetEditor from '../../pages/Setting/Operation/ModelRationNotSetEditor.js'; const OperationSetting = () => { const { t } = useTranslation(); diff --git a/web/src/components/OtherSetting.js b/web/src/components/settings/OtherSetting.js similarity index 99% rename from web/src/components/OtherSetting.js rename to web/src/components/settings/OtherSetting.js index 570a86f8..a054e0da 100644 --- a/web/src/components/OtherSetting.js +++ b/web/src/components/settings/OtherSetting.js @@ -9,10 +9,10 @@ import { Space, Card, } from '@douyinfe/semi-ui'; -import { API, showError, showSuccess, timestamp2string } from '../helpers'; +import { API, showError, showSuccess, timestamp2string } from '../../helpers'; import { marked } from 'marked'; import { useTranslation } from 'react-i18next'; -import { StatusContext } from '../context/Status/index.js'; +import { StatusContext } from '../../context/Status/index.js'; import Text from '@douyinfe/semi-ui/lib/es/typography/text'; const OtherSetting = () => { diff --git a/web/src/components/PersonalSetting.js b/web/src/components/settings/PersonalSetting.js similarity index 99% rename from web/src/components/PersonalSetting.js rename to web/src/components/settings/PersonalSetting.js index 7314308c..d0717854 100644 --- a/web/src/components/PersonalSetting.js +++ b/web/src/components/settings/PersonalSetting.js @@ -15,9 +15,9 @@ import { onGitHubOAuthClicked, onOIDCClicked, onLinuxDOOAuthClicked -} from '../helpers'; +} from '../../helpers'; import Turnstile from 'react-turnstile'; -import { UserContext } from '../context/User'; +import { UserContext } from '../../context/User'; import { Avatar, Banner, diff --git a/web/src/components/RateLimitSetting.js b/web/src/components/settings/RateLimitSetting.js similarity index 87% rename from web/src/components/RateLimitSetting.js rename to web/src/components/settings/RateLimitSetting.js index 5f0200e1..4d061363 100644 --- a/web/src/components/RateLimitSetting.js +++ b/web/src/components/settings/RateLimitSetting.js @@ -1,10 +1,10 @@ import React, { useEffect, useState } from 'react'; import { Card, Spin, Tabs } from '@douyinfe/semi-ui'; -import { API, showError, showSuccess } from '../helpers'; -import SettingsChats from '../pages/Setting/Operation/SettingsChats.js'; +import { API, showError, showSuccess } from '../../helpers/index.js'; +import SettingsChats from '../../pages/Setting/Operation/SettingsChats.js'; import { useTranslation } from 'react-i18next'; -import RequestRateLimit from '../pages/Setting/RateLimit/SettingsRequestRateLimit.js'; +import RequestRateLimit from '../../pages/Setting/RateLimit/SettingsRequestRateLimit.js'; const RateLimitSetting = () => { const { t } = useTranslation(); diff --git a/web/src/components/SystemSetting.js b/web/src/components/settings/SystemSetting.js similarity index 99% rename from web/src/components/SystemSetting.js rename to web/src/components/settings/SystemSetting.js index fa97df48..8219159b 100644 --- a/web/src/components/SystemSetting.js +++ b/web/src/components/settings/SystemSetting.js @@ -18,7 +18,7 @@ import { showError, showSuccess, verifyJSON -} from '../helpers'; +} from '../../helpers'; import axios from 'axios'; const SystemSetting = () => { diff --git a/web/src/components/ChannelsTable.js b/web/src/components/table/ChannelsTable.js similarity index 99% rename from web/src/components/ChannelsTable.js rename to web/src/components/table/ChannelsTable.js index 33c8c398..9081aa63 100644 --- a/web/src/components/ChannelsTable.js +++ b/web/src/components/table/ChannelsTable.js @@ -8,9 +8,9 @@ import { renderGroup, renderNumberWithPoint, renderQuota -} from '../helpers'; +} from '../../helpers/index.js'; -import { CHANNEL_OPTIONS, ITEMS_PER_PAGE } from '../constants'; +import { CHANNEL_OPTIONS, ITEMS_PER_PAGE } from '../../constants/index.js'; import { Button, Divider, @@ -29,7 +29,7 @@ import { Card, Select } from '@douyinfe/semi-ui'; -import EditChannel from '../pages/Channel/EditChannel'; +import EditChannel from '../../pages/Channel/EditChannel.js'; import { IconList, IconTreeTriangleDown, @@ -46,8 +46,8 @@ import { IconCopy, IconSmallTriangleRight } from '@douyinfe/semi-icons'; -import { loadChannelModels } from '../helpers'; -import EditTagModal from '../pages/Channel/EditTagModal.js'; +import { loadChannelModels } from '../../helpers/index.js'; +import EditTagModal from '../../pages/Channel/EditTagModal.js'; import { useTranslation } from 'react-i18next'; const ChannelsTable = () => { diff --git a/web/src/components/LogsTable.js b/web/src/components/table/LogsTable.js similarity index 99% rename from web/src/components/LogsTable.js rename to web/src/components/table/LogsTable.js index 5f2970cb..88992452 100644 --- a/web/src/components/LogsTable.js +++ b/web/src/components/table/LogsTable.js @@ -20,7 +20,7 @@ import { renderQuota, stringToColor, getLogOther -} from '../helpers'; +} from '../../helpers'; import { Avatar, @@ -41,7 +41,7 @@ import { Input, DatePicker, } from '@douyinfe/semi-ui'; -import { ITEMS_PER_PAGE } from '../constants'; +import { ITEMS_PER_PAGE } from '../../constants'; import Paragraph from '@douyinfe/semi-ui/lib/es/typography/paragraph'; import { IconRefresh, diff --git a/web/src/components/MjLogsTable.js b/web/src/components/table/MjLogsTable.js similarity index 99% rename from web/src/components/MjLogsTable.js rename to web/src/components/table/MjLogsTable.js index 08c47e7d..077512dc 100644 --- a/web/src/components/MjLogsTable.js +++ b/web/src/components/table/MjLogsTable.js @@ -7,7 +7,7 @@ import { showError, showSuccess, timestamp2string, -} from '../helpers'; +} from '../../helpers'; import { Button, @@ -25,7 +25,7 @@ import { Tag, Typography, } from '@douyinfe/semi-ui'; -import { ITEMS_PER_PAGE } from '../constants'; +import { ITEMS_PER_PAGE } from '../../constants'; import { IconEyeOpened, IconSearch, diff --git a/web/src/components/ModelPricing.js b/web/src/components/table/ModelPricing.js similarity index 99% rename from web/src/components/ModelPricing.js rename to web/src/components/table/ModelPricing.js index 39daa168..a9f06713 100644 --- a/web/src/components/ModelPricing.js +++ b/web/src/components/table/ModelPricing.js @@ -1,5 +1,5 @@ import React, { useContext, useEffect, useRef, useMemo, useState } from 'react'; -import { API, copy, showError, showInfo, showSuccess } from '../helpers'; +import { API, copy, showError, showInfo, showSuccess } from '../../helpers/index.js'; import { useTranslation } from 'react-i18next'; import { @@ -26,9 +26,9 @@ import { IconInfoCircle, IconCrown, } from '@douyinfe/semi-icons'; -import { UserContext } from '../context/User/index.js'; +import { UserContext } from '../../context/User/index.js'; import { AlertCircle } from 'lucide-react'; -import { MODEL_CATEGORIES } from '../constants'; +import { MODEL_CATEGORIES } from '../../constants/index.js'; const ModelPricing = () => { const { t } = useTranslation(); diff --git a/web/src/components/RedemptionsTable.js b/web/src/components/table/RedemptionsTable.js similarity index 99% rename from web/src/components/RedemptionsTable.js rename to web/src/components/table/RedemptionsTable.js index 637c7bdf..23813bbb 100644 --- a/web/src/components/RedemptionsTable.js +++ b/web/src/components/table/RedemptionsTable.js @@ -6,9 +6,9 @@ import { showSuccess, timestamp2string, renderQuota -} from '../helpers'; +} from '../../helpers'; -import { ITEMS_PER_PAGE } from '../constants'; +import { ITEMS_PER_PAGE } from '../../constants'; import { Button, Card, @@ -33,7 +33,7 @@ import { IconPlay, IconMore, } from '@douyinfe/semi-icons'; -import EditRedemption from '../pages/Redemption/EditRedemption'; +import EditRedemption from '../../pages/Redemption/EditRedemption'; import { useTranslation } from 'react-i18next'; const { Text } = Typography; diff --git a/web/src/components/TaskLogsTable.js b/web/src/components/table/TaskLogsTable.js similarity index 99% rename from web/src/components/TaskLogsTable.js rename to web/src/components/table/TaskLogsTable.js index c4a8414b..791ae9ce 100644 --- a/web/src/components/TaskLogsTable.js +++ b/web/src/components/table/TaskLogsTable.js @@ -7,7 +7,7 @@ import { showError, showSuccess, timestamp2string, -} from '../helpers'; +} from '../../helpers'; import { Button, @@ -24,7 +24,7 @@ import { Tag, Typography, } from '@douyinfe/semi-ui'; -import { ITEMS_PER_PAGE } from '../constants'; +import { ITEMS_PER_PAGE } from '../../constants'; import { IconEyeOpened, IconSearch, diff --git a/web/src/components/TokensTable.js b/web/src/components/table/TokensTable.js similarity index 99% rename from web/src/components/TokensTable.js rename to web/src/components/table/TokensTable.js index a3f21f1d..d4637953 100644 --- a/web/src/components/TokensTable.js +++ b/web/src/components/table/TokensTable.js @@ -8,9 +8,9 @@ import { timestamp2string, renderGroup, renderQuota -} from '../helpers'; +} from '../../helpers'; -import { ITEMS_PER_PAGE } from '../constants'; +import { ITEMS_PER_PAGE } from '../../constants'; import { Button, Card, @@ -40,9 +40,9 @@ import { IconHistogram, IconRotate, } from '@douyinfe/semi-icons'; -import EditToken from '../pages/Token/EditToken'; +import EditToken from '../../pages/Token/EditToken'; import { useTranslation } from 'react-i18next'; -import { UserContext } from '../context/User'; +import { UserContext } from '../../context/User'; function renderTimestamp(timestamp) { return <>{timestamp2string(timestamp)}; diff --git a/web/src/components/UsersTable.js b/web/src/components/table/UsersTable.js similarity index 98% rename from web/src/components/UsersTable.js rename to web/src/components/table/UsersTable.js index d4bc74a3..b5e5f7da 100644 --- a/web/src/components/UsersTable.js +++ b/web/src/components/table/UsersTable.js @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { API, showError, showSuccess, renderGroup, renderNumber, renderQuota } from '../helpers'; +import { API, showError, showSuccess, renderGroup, renderNumber, renderQuota } from '../../helpers'; import { Button, Card, @@ -25,9 +25,9 @@ import { IconArrowUp, IconArrowDown, } from '@douyinfe/semi-icons'; -import { ITEMS_PER_PAGE } from '../constants'; -import AddUser from '../pages/User/AddUser'; -import EditUser from '../pages/User/EditUser'; +import { ITEMS_PER_PAGE } from '../../constants'; +import AddUser from '../../pages/User/AddUser'; +import EditUser from '../../pages/User/EditUser'; import { useTranslation } from 'react-i18next'; const { Text } = Typography; diff --git a/web/src/index.js b/web/src/index.js index 978f39d5..dc0c438d 100644 --- a/web/src/index.js +++ b/web/src/index.js @@ -7,8 +7,9 @@ import { StatusProvider } from './context/Status'; import { Layout } from '@douyinfe/semi-ui'; import { ThemeProvider } from './context/Theme'; import { StyleProvider } from './context/Style/index.js'; -import PageLayout from './components/PageLayout.js'; +import PageLayout from './components/layout/PageLayout.js'; import './i18n/i18n.js'; +import './index.css'; // initialization diff --git a/web/src/pages/Channel/index.js b/web/src/pages/Channel/index.js index 523ea27c..dc9f8c48 100644 --- a/web/src/pages/Channel/index.js +++ b/web/src/pages/Channel/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import ChannelsTable from '../../components/ChannelsTable'; +import ChannelsTable from '../../components/table/ChannelsTable'; const File = () => { return ( diff --git a/web/src/pages/Home/index.js b/web/src/pages/Home/index.js index f676fe69..ba0c738c 100644 --- a/web/src/pages/Home/index.js +++ b/web/src/pages/Home/index.js @@ -5,9 +5,9 @@ import { StatusContext } from '../../context/Status'; import { marked } from 'marked'; import { useTranslation } from 'react-i18next'; import { IconGithubLogo } from '@douyinfe/semi-icons'; -import exampleImage from '../../images/example.png'; +import exampleImage from '..//example.png'; import { Link } from 'react-router-dom'; -import NoticeModal from '../../components/NoticeModal'; +import NoticeModal from '../../components/layout/NoticeModal'; import { Moonshot, OpenAI, XAI, Zhipu, Volcengine, Cohere, Claude, Gemini, Suno, Minimax, Wenxin, Spark, Qingyan, DeepSeek, Qwen, Midjourney, Grok, AzureAI, Hunyuan, Xinference } from '@lobehub/icons'; const { Text } = Typography; diff --git a/web/src/pages/Log/index.js b/web/src/pages/Log/index.js index 4ee109ca..4b6f8ba3 100644 --- a/web/src/pages/Log/index.js +++ b/web/src/pages/Log/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import LogsTable from '../../components/LogsTable'; +import LogsTable from '../../components/table/LogsTable'; const Token = () => ( <> diff --git a/web/src/pages/Midjourney/index.js b/web/src/pages/Midjourney/index.js index ed22ecd0..7c605bd4 100644 --- a/web/src/pages/Midjourney/index.js +++ b/web/src/pages/Midjourney/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import MjLogsTable from '../../components/MjLogsTable'; +import MjLogsTable from '../../components/table/MjLogsTable'; const Midjourney = () => ( <> diff --git a/web/src/pages/Pricing/index.js b/web/src/pages/Pricing/index.js index cb56a477..21fd7256 100644 --- a/web/src/pages/Pricing/index.js +++ b/web/src/pages/Pricing/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import ModelPricing from '../../components/ModelPricing.js'; +import ModelPricing from '../../components/table/ModelPricing.js'; const Pricing = () => ( <> diff --git a/web/src/pages/Redemption/index.js b/web/src/pages/Redemption/index.js index f877b601..0154d979 100644 --- a/web/src/pages/Redemption/index.js +++ b/web/src/pages/Redemption/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import RedemptionsTable from '../../components/RedemptionsTable'; +import RedemptionsTable from '../../components/table/RedemptionsTable'; const Redemption = () => { return ( diff --git a/web/src/pages/Setting/index.js b/web/src/pages/Setting/index.js index 0619ab9a..056fc207 100644 --- a/web/src/pages/Setting/index.js +++ b/web/src/pages/Setting/index.js @@ -3,13 +3,13 @@ import { Layout, TabPane, Tabs } from '@douyinfe/semi-ui'; import { useNavigate, useLocation } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import SystemSetting from '../../components/SystemSetting'; +import SystemSetting from '../../components/settings/SystemSetting.js'; import { isRoot } from '../../helpers'; -import OtherSetting from '../../components/OtherSetting'; -import PersonalSetting from '../../components/PersonalSetting'; -import OperationSetting from '../../components/OperationSetting'; -import RateLimitSetting from '../../components/RateLimitSetting.js'; -import ModelSetting from '../../components/ModelSetting.js'; +import OtherSetting from '../../components/settings/OtherSetting'; +import PersonalSetting from '../../components/settings/PersonalSetting.js'; +import OperationSetting from '../../components/settings/OperationSetting.js'; +import RateLimitSetting from '../../components/settings/RateLimitSetting.js'; +import ModelSetting from '../../components/settings/ModelSetting.js'; const Setting = () => { const { t } = useTranslation(); diff --git a/web/src/pages/Task/index.js b/web/src/pages/Task/index.js index 47b541b6..05326719 100644 --- a/web/src/pages/Task/index.js +++ b/web/src/pages/Task/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import TaskLogsTable from '../../components/TaskLogsTable.js'; +import TaskLogsTable from '../../components/table/TaskLogsTable.js'; const Task = () => ( <> diff --git a/web/src/pages/Token/index.js b/web/src/pages/Token/index.js index eea68941..d63247a4 100644 --- a/web/src/pages/Token/index.js +++ b/web/src/pages/Token/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import TokensTable from '../../components/TokensTable'; +import TokensTable from '../../components/table/TokensTable'; const Token = () => { return ( diff --git a/web/src/pages/User/index.js b/web/src/pages/User/index.js index f1d04419..59b441ae 100644 --- a/web/src/pages/User/index.js +++ b/web/src/pages/User/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import UsersTable from '../../components/UsersTable'; +import UsersTable from '../../components/table/UsersTable'; const User = () => { return (