From 4ffe1f53822f5c5f6edb332bf70ada21f752609d Mon Sep 17 00:00:00 2001 From: chanx <1243304602@qq.com> Date: Mon, 24 Nov 2025 10:28:34 +0800 Subject: [PATCH] Fix:Modify the personal center style - All form-label font styles are no longer bold - Menus are not highlighted on first visit to the personal center --- .../components/originui/select-with-search.tsx | 9 +++++++-- web/src/components/ui/label.tsx | 2 +- web/src/hooks/common-hooks.tsx | 15 +++++++++++---- web/src/locales/en.ts | 5 ++++- web/src/locales/zh.ts | 2 ++ .../components/user-setting-header/index.tsx | 2 +- .../data-source/data-source-detail-page/index.tsx | 8 +++++--- web/src/pages/user-setting/data-source/index.tsx | 9 +++++++-- .../setting-model/components/system-setting.tsx | 1 + web/src/pages/user-setting/sidebar/hooks.tsx | 13 ++++++++++--- 10 files changed, 49 insertions(+), 17 deletions(-) diff --git a/web/src/components/originui/select-with-search.tsx b/web/src/components/originui/select-with-search.tsx index e3cec6240..4b87792d7 100644 --- a/web/src/components/originui/select-with-search.tsx +++ b/web/src/components/originui/select-with-search.tsx @@ -47,6 +47,7 @@ export type SelectWithSearchFlagProps = { allowClear?: boolean; disabled?: boolean; placeholder?: string; + emptyData?: string; }; function findLabelWithoutOptions( @@ -78,6 +79,7 @@ export const SelectWithSearch = forwardRef< allowClear = false, disabled = false, placeholder = t('common.selectPlaceholder'), + emptyData = t('common.noDataFound'), }, ref, ) => { @@ -183,8 +185,8 @@ export const SelectWithSearch = forwardRef< className=" placeholder:text-text-disabled" /> )} - - {t('common.noDataFound')} + + {emptyData} {options.map((group, idx) => { if (group.options) { return ( @@ -196,6 +198,9 @@ export const SelectWithSearch = forwardRef< value={option.value} disabled={option.disabled} onSelect={handleSelect} + className={ + value === option.value ? 'bg-bg-card' : '' + } > {option.label} diff --git a/web/src/components/ui/label.tsx b/web/src/components/ui/label.tsx index 64a56584c..ce1e55565 100644 --- a/web/src/components/ui/label.tsx +++ b/web/src/components/ui/label.tsx @@ -7,7 +7,7 @@ import * as React from 'react'; import { cn } from '@/lib/utils'; const labelVariants = cva( - 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-text-secondary', + 'text-sm font-normal leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 text-text-secondary', ); const Label = React.forwardRef< diff --git a/web/src/hooks/common-hooks.tsx b/web/src/hooks/common-hooks.tsx index 1d8ca4c42..7f7729ade 100644 --- a/web/src/hooks/common-hooks.tsx +++ b/web/src/hooks/common-hooks.tsx @@ -88,18 +88,18 @@ export const useShowDeleteConfirm = () => { ({ title, content, onOk, onCancel }: IProps): Promise => { return new Promise((resolve, reject) => { Modal.show({ - title: title ?? t('common.deleteModalTitle'), + // title: title ?? t('common.deleteModalTitle'), + closable: false, visible: true, onVisibleChange: () => { Modal.hide(); }, footer: null, - closable: true, maskClosable: false, okText: t('common.yes'), cancelText: t('common.no'), style: { - width: '400px', + width: '450px', }, okButtonClassName: 'bg-state-error text-white hover:bg-state-error hover:text-white', @@ -116,7 +116,14 @@ export const useShowDeleteConfirm = () => { onCancel?.(); Modal.hide(); }, - children: content, + children: ( +
+
+ {title ?? t('common.deleteModalTitle')} +
+
{content}
+
+ ), }); }); }, diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index 8ab8e17b3..122560c0d 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -696,6 +696,9 @@ This auto-tagging feature enhances retrieval by adding another layer of domain-s tocEnhanceTip: ` During the parsing of the document, table of contents information was generated (see the 'Enable Table of Contents Extraction' option in the General method). This allows the large model to return table of contents items relevant to the user's query, thereby using these items to retrieve related chunks and apply weighting to these chunks during the sorting process. This approach is derived from mimicking the behavioral logic of how humans search for knowledge in books.`, }, setting: { + modelEmptyTip: + 'No models available. Please add models from the panel on the right.', + sourceEmptyTip: 'No data sources added yet. Select one below to connect.', seconds: 'seconds', minutes: 'minutes', edit: 'Edit', @@ -716,7 +719,7 @@ Example: https://fsn1.your-objectstorage.com`, deleteSourceModalTitle: 'Delete data source', deleteSourceModalContent: `

Are you sure you want to delete this data source link?

`, - deleteSourceModalConfirmText: 'Comfirm', + deleteSourceModalConfirmText: 'Confirm', errorMsg: 'Error message', newDocs: 'New Docs', timeStarted: 'Time started', diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index 70a78c825..d2f4b1d16 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -685,6 +685,8 @@ General:实体和关系提取提示来自 GitHub - microsoft/graphrag:基于 tocEnhanceTip: `解析文档时生成了目录信息(见General方法的‘启用目录抽取’),让大模型返回和用户问题相关的目录项,从而利用目录项拿到相关chunk,对这些chunk在排序中进行加权。这种方法来源于模仿人类查询书本中知识的行为逻辑`, }, setting: { + modelEmptyTip: '暂无可用模型,请先在右侧面板添加模型。', + sourceEmptyTip: '暂未添加任何数据源,请从下方选择一个进行连接。', seconds: '秒', minutes: '分', edit: '编辑', diff --git a/web/src/pages/user-setting/components/user-setting-header/index.tsx b/web/src/pages/user-setting/components/user-setting-header/index.tsx index 931e2681d..d54e57769 100644 --- a/web/src/pages/user-setting/components/user-setting-header/index.tsx +++ b/web/src/pages/user-setting/components/user-setting-header/index.tsx @@ -10,7 +10,7 @@ export const UserSettingHeader = ({ }) => { return ( <> -
+
{name}
{description && (
{description}
diff --git a/web/src/pages/user-setting/data-source/data-source-detail-page/index.tsx b/web/src/pages/user-setting/data-source/data-source-detail-page/index.tsx index 1962cf07c..fe54dda64 100644 --- a/web/src/pages/user-setting/data-source/data-source-detail-page/index.tsx +++ b/web/src/pages/user-setting/data-source/data-source-detail-page/index.tsx @@ -170,7 +170,7 @@ const SourceDetailPage = () => { - +
{ defaultValues={defaultValues} />
-
-
{t('setting.log')}
+
+
+ {t('setting.log')} +
diff --git a/web/src/pages/user-setting/data-source/index.tsx b/web/src/pages/user-setting/data-source/index.tsx index 9cb58672a..3f4bef73c 100644 --- a/web/src/pages/user-setting/data-source/index.tsx +++ b/web/src/pages/user-setting/data-source/index.tsx @@ -114,6 +114,11 @@ const DataSource = () => {
+ {categorizedList?.length <= 0 && ( +
+ {t('setting.sourceEmptyTip')} +
+ )} {categorizedList.map((item, index) => ( ))} @@ -121,9 +126,9 @@ const DataSource = () => {
{/* */} - + {t('setting.availableSources')} -
+
{t('setting.availableSourcesDescription')}
diff --git a/web/src/pages/user-setting/setting-model/components/system-setting.tsx b/web/src/pages/user-setting/setting-model/components/system-setting.tsx index a8714b998..97906a421 100644 --- a/web/src/pages/user-setting/setting-model/components/system-setting.tsx +++ b/web/src/pages/user-setting/setting-model/components/system-setting.tsx @@ -161,6 +161,7 @@ const SystemSetting = ({ onOk, loading }: IProps) => { options={options} onChange={(value) => handleFieldChange(id, value)} placeholder={t('selectModelPlaceholder')} + emptyData={t('modelEmptyTip')} />
); diff --git a/web/src/pages/user-setting/sidebar/hooks.tsx b/web/src/pages/user-setting/sidebar/hooks.tsx index fcfedcfca..47415a4ea 100644 --- a/web/src/pages/user-setting/sidebar/hooks.tsx +++ b/web/src/pages/user-setting/sidebar/hooks.tsx @@ -1,12 +1,19 @@ import { useLogout } from '@/hooks/login-hooks'; import { Routes } from '@/routes'; -import { useCallback, useState } from 'react'; -import { useNavigate } from 'umi'; +import { useCallback, useEffect, useState } from 'react'; +import { useLocation, useNavigate } from 'umi'; export const useHandleMenuClick = () => { const navigate = useNavigate(); const [active, setActive] = useState(); const { logout } = useLogout(); + const location = useLocation(); + useEffect(() => { + const path = (location.pathname.split('/')?.[2] || '') as Routes; + if (path) { + setActive(('/' + path) as Routes); + } + }, [location]); const handleMenuClick = useCallback( (key: Routes) => () => { @@ -20,5 +27,5 @@ export const useHandleMenuClick = () => { [logout, navigate], ); - return { handleMenuClick, active }; + return { handleMenuClick, active, setActive }; };