From 1019cf7f3abe878edd6e3af5c0ca847ecf8e4fae Mon Sep 17 00:00:00 2001 From: xuyaqist Date: Wed, 10 Jun 2026 16:00:53 +0800 Subject: [PATCH 1/3] Move non-shadcn ui component to other folder --- .../agents/components/agentConfig/SkillBuildModal.tsx | 2 +- .../agents/components/agentConfig/SkillDetailModal.tsx | 2 +- frontend/app/[locale]/chat/components/chatAttachment.tsx | 2 +- frontend/app/[locale]/chat/components/chatInput.tsx | 4 ++-- .../app/[locale]/chat/streaming/chatStreamFinalMessage.tsx | 2 +- frontend/app/[locale]/chat/streaming/taskWindow.tsx | 2 +- .../[locale]/knowledges/components/document/DocumentList.tsx | 4 ++-- .../tenant-resources/components/resources/KnowledgeList.tsx | 2 +- frontend/components/{ui => common}/Diagram.tsx | 0 frontend/components/{ui => common}/PdfViewer.tsx | 0 frontend/components/{ui => common}/copyButton.tsx | 0 frontend/components/{ui => common}/filePreviewDrawer.tsx | 4 ++-- frontend/components/{ui => common}/markdownRenderer.tsx | 4 ++-- frontend/components/{ui => common}/tokenUsageIndicator.tsx | 0 14 files changed, 14 insertions(+), 14 deletions(-) rename frontend/components/{ui => common}/Diagram.tsx (100%) rename frontend/components/{ui => common}/PdfViewer.tsx (100%) rename frontend/components/{ui => common}/copyButton.tsx (100%) rename frontend/components/{ui => common}/filePreviewDrawer.tsx (99%) rename frontend/components/{ui => common}/markdownRenderer.tsx (99%) rename frontend/components/{ui => common}/tokenUsageIndicator.tsx (100%) diff --git a/frontend/app/[locale]/agents/components/agentConfig/SkillBuildModal.tsx b/frontend/app/[locale]/agents/components/agentConfig/SkillBuildModal.tsx index 7f969edb9..8f040d4b3 100644 --- a/frontend/app/[locale]/agents/components/agentConfig/SkillBuildModal.tsx +++ b/frontend/app/[locale]/agents/components/agentConfig/SkillBuildModal.tsx @@ -56,7 +56,7 @@ import { SkillFilesAccessDeniedError, type SkillFileNode, } from "@/services/agentConfigService"; -import { MarkdownRenderer } from "@/components/ui/markdownRenderer"; +import { MarkdownRenderer } from "@/components/common/markdownRenderer"; import log from "@/lib/logger"; const { TextArea } = Input; diff --git a/frontend/app/[locale]/agents/components/agentConfig/SkillDetailModal.tsx b/frontend/app/[locale]/agents/components/agentConfig/SkillDetailModal.tsx index 4161a3b1a..05f11d6a3 100644 --- a/frontend/app/[locale]/agents/components/agentConfig/SkillDetailModal.tsx +++ b/frontend/app/[locale]/agents/components/agentConfig/SkillDetailModal.tsx @@ -10,7 +10,7 @@ import { fetchSkillFileContent, SkillFilesAccessDeniedError, } from "@/services/agentConfigService"; -import { MarkdownRenderer } from "@/components/ui/markdownRenderer"; +import { MarkdownRenderer } from "@/components/common/markdownRenderer"; import { buildTreeData, collectDirKeys, diff --git a/frontend/app/[locale]/chat/components/chatAttachment.tsx b/frontend/app/[locale]/chat/components/chatAttachment.tsx index d12e939cd..69dfbc71a 100644 --- a/frontend/app/[locale]/chat/components/chatAttachment.tsx +++ b/frontend/app/[locale]/chat/components/chatAttachment.tsx @@ -19,7 +19,7 @@ import { } from "@/services/storageService"; import { cn } from "@/lib/utils"; import { AttachmentItem, ChatAttachmentProps } from "@/types/chat"; -import { FilePreviewDrawer } from "@/components/ui/filePreviewDrawer"; +import { FilePreviewDrawer } from "@/components/common/filePreviewDrawer"; import { App } from "antd"; // Selected file state for preview drawer diff --git a/frontend/app/[locale]/chat/components/chatInput.tsx b/frontend/app/[locale]/chat/components/chatInput.tsx index b609bb999..e53b60a52 100644 --- a/frontend/app/[locale]/chat/components/chatInput.tsx +++ b/frontend/app/[locale]/chat/components/chatInput.tsx @@ -18,7 +18,7 @@ import { Input } from "@/components/ui/input"; import { Button } from "antd"; import { Tooltip } from "@/components/ui/tooltip"; import { Textarea } from "@/components/ui/textarea"; -import { FilePreviewDrawer } from "@/components/ui/filePreviewDrawer"; +import { FilePreviewDrawer } from "@/components/common/filePreviewDrawer"; import { conversationService } from "@/services/conversationService"; import { useConfig } from "@/hooks/useConfig"; import { extractColorsFromUri } from "@/lib/avatar"; @@ -27,7 +27,7 @@ import { chatConfig } from "@/const/chatConfig"; import { FilePreview } from "@/types/chat"; import { ChatAgentSelector } from "./chatAgentSelector"; -import { TokenUsageIndicator } from "@/components/ui/tokenUsageIndicator"; +import { TokenUsageIndicator } from "@/components/common/tokenUsageIndicator"; import { TokenMetrics } from "@/types/chat"; // Get file extension diff --git a/frontend/app/[locale]/chat/streaming/chatStreamFinalMessage.tsx b/frontend/app/[locale]/chat/streaming/chatStreamFinalMessage.tsx index 8ed121b00..40ceaa2eb 100644 --- a/frontend/app/[locale]/chat/streaming/chatStreamFinalMessage.tsx +++ b/frontend/app/[locale]/chat/streaming/chatStreamFinalMessage.tsx @@ -10,7 +10,7 @@ import { ThumbsUp, } from "lucide-react"; -import { MarkdownRenderer } from "@/components/ui/markdownRenderer"; +import { MarkdownRenderer } from "@/components/common/markdownRenderer"; /** * Convert custom code tags to standard markdown code fences diff --git a/frontend/app/[locale]/chat/streaming/taskWindow.tsx b/frontend/app/[locale]/chat/streaming/taskWindow.tsx index 665ed8467..5a5e7a89a 100644 --- a/frontend/app/[locale]/chat/streaming/taskWindow.tsx +++ b/frontend/app/[locale]/chat/streaming/taskWindow.tsx @@ -13,7 +13,7 @@ import { import { ScrollArea } from "@/components/ui/scrollArea"; import { Button, message as antdMessage } from "antd"; -import { MarkdownRenderer, CodeBlock } from "@/components/ui/markdownRenderer"; +import { MarkdownRenderer, CodeBlock } from "@/components/common/markdownRenderer"; import { chatConfig } from "@/const/chatConfig"; import { ChatMessageType, diff --git a/frontend/app/[locale]/knowledges/components/document/DocumentList.tsx b/frontend/app/[locale]/knowledges/components/document/DocumentList.tsx index 0bfbe6467..4f75fd66e 100644 --- a/frontend/app/[locale]/knowledges/components/document/DocumentList.tsx +++ b/frontend/app/[locale]/knowledges/components/document/DocumentList.tsx @@ -18,8 +18,8 @@ import { Glasses, CircleOff, } from "lucide-react"; -import { MarkdownRenderer } from "@/components/ui/markdownRenderer"; -import { FilePreviewDrawer } from "@/components/ui/filePreviewDrawer"; +import { MarkdownRenderer } from "@/components/common/markdownRenderer"; +import { FilePreviewDrawer } from "@/components/common/filePreviewDrawer"; import { UI_CONFIG, diff --git a/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx b/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx index 18d70ad51..b8b00598e 100644 --- a/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx +++ b/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx @@ -6,7 +6,7 @@ import { Table, Popconfirm, message, Button, Modal, Tag } from "antd"; import { ColumnsType } from "antd/es/table"; import { Edit, Trash2, BookOpen } from "lucide-react"; import { Tooltip } from "@/components/ui/tooltip"; -import { MarkdownRenderer } from "@/components/ui/markdownRenderer"; +import { MarkdownRenderer } from "@/components/common/markdownRenderer"; import { useKnowledgeList } from "@/hooks/knowledge/useKnowledgeList"; import { useGroupList } from "@/hooks/group/useGroupList"; import knowledgeBaseService from "@/services/knowledgeBaseService"; diff --git a/frontend/components/ui/Diagram.tsx b/frontend/components/common/Diagram.tsx similarity index 100% rename from frontend/components/ui/Diagram.tsx rename to frontend/components/common/Diagram.tsx diff --git a/frontend/components/ui/PdfViewer.tsx b/frontend/components/common/PdfViewer.tsx similarity index 100% rename from frontend/components/ui/PdfViewer.tsx rename to frontend/components/common/PdfViewer.tsx diff --git a/frontend/components/ui/copyButton.tsx b/frontend/components/common/copyButton.tsx similarity index 100% rename from frontend/components/ui/copyButton.tsx rename to frontend/components/common/copyButton.tsx diff --git a/frontend/components/ui/filePreviewDrawer.tsx b/frontend/components/common/filePreviewDrawer.tsx similarity index 99% rename from frontend/components/ui/filePreviewDrawer.tsx rename to frontend/components/common/filePreviewDrawer.tsx index f36a4db3e..409352e15 100644 --- a/frontend/components/ui/filePreviewDrawer.tsx +++ b/frontend/components/common/filePreviewDrawer.tsx @@ -52,13 +52,13 @@ import { MarkdownRenderer, extractMarkdownHeadings, type MarkdownHeading, -} from "@/components/ui/markdownRenderer"; +} from "@/components/common/markdownRenderer"; import { formatFileSize } from "@/lib/utils"; import log from "@/lib/logger"; const PdfViewer = dynamic( () => - import("@/components/ui/PdfViewer").then((mod) => ({ + import("@/components/common/PdfViewer").then((mod) => ({ default: mod.PdfViewer, })), { diff --git a/frontend/components/ui/markdownRenderer.tsx b/frontend/components/common/markdownRenderer.tsx similarity index 99% rename from frontend/components/ui/markdownRenderer.tsx rename to frontend/components/common/markdownRenderer.tsx index 53dfb6962..93dbcce11 100644 --- a/frontend/components/ui/markdownRenderer.tsx +++ b/frontend/components/common/markdownRenderer.tsx @@ -16,8 +16,8 @@ import { visit } from "unist-util-visit"; import { SearchResult } from "@/types/chat"; import { resolveS3UrlToDataUrl } from "@/services/storageService"; import { Tooltip, TooltipProvider } from "@/components/ui/tooltip"; -import { CopyButton } from "@/components/ui/copyButton"; -import { Diagram } from "@/components/ui/Diagram"; +import { CopyButton } from "@/components/common/copyButton"; +import { Diagram } from "@/components/common/Diagram"; interface MarkdownRendererProps { content: string; diff --git a/frontend/components/ui/tokenUsageIndicator.tsx b/frontend/components/common/tokenUsageIndicator.tsx similarity index 100% rename from frontend/components/ui/tokenUsageIndicator.tsx rename to frontend/components/common/tokenUsageIndicator.tsx From acaaba4e6ac25efb5b9df701a3387f54ae871dad Mon Sep 17 00:00:00 2001 From: xuyaqist Date: Thu, 11 Jun 2026 10:57:39 +0800 Subject: [PATCH 2/3] Bugfix: Fix incomplete display of tenant resources page after window resize --- .../agentConfig/skill/SkillConfigModal.tsx | 2 +- .../[locale]/chat/components/chatInput.tsx | 3 +- .../chat/streaming/chatStreamFinalMessage.tsx | 7 +- .../knowledge/KnowledgeBaseList.tsx | 3 +- .../components/UserManageComp.tsx | 312 +++++++++--------- .../components/resources/GroupList.tsx | 4 +- .../components/resources/InvitationList.tsx | 4 +- .../components/resources/KnowledgeList.tsx | 5 +- .../components/resources/ModelList.tsx | 5 +- .../components/resources/SkillList.tsx | 4 +- .../components/resources/UserList.tsx | 8 +- .../components/common/tokenUsageIndicator.tsx | 2 +- .../skill/InstallOfficialSkillsModal.tsx | 3 +- 13 files changed, 181 insertions(+), 181 deletions(-) diff --git a/frontend/app/[locale]/agents/components/agentConfig/skill/SkillConfigModal.tsx b/frontend/app/[locale]/agents/components/agentConfig/skill/SkillConfigModal.tsx index 6f372e2b4..9729007e2 100644 --- a/frontend/app/[locale]/agents/components/agentConfig/skill/SkillConfigModal.tsx +++ b/frontend/app/[locale]/agents/components/agentConfig/skill/SkillConfigModal.tsx @@ -12,13 +12,13 @@ import { message, Tag, Skeleton, + Tooltip } from "antd"; import { Settings } from "lucide-react"; import { CloseOutlined } from "@ant-design/icons"; import { Skill, SkillParam } from "@/types/agentConfig"; import { KnowledgeBase } from "@/types/knowledgeBase"; -import { Tooltip } from "@/components/ui/tooltip"; import { saveSkillInstance } from "@/services/agentConfigService"; import KnowledgeBaseSelectorModal from "@/components/tool-config/KnowledgeBaseSelectorModal"; import { diff --git a/frontend/app/[locale]/chat/components/chatInput.tsx b/frontend/app/[locale]/chat/components/chatInput.tsx index e53b60a52..512f940e9 100644 --- a/frontend/app/[locale]/chat/components/chatInput.tsx +++ b/frontend/app/[locale]/chat/components/chatInput.tsx @@ -15,8 +15,7 @@ import { } from "@ant-design/icons"; import { Input } from "@/components/ui/input"; -import { Button } from "antd"; -import { Tooltip } from "@/components/ui/tooltip"; +import { Button, Tooltip } from "antd"; import { Textarea } from "@/components/ui/textarea"; import { FilePreviewDrawer } from "@/components/common/filePreviewDrawer"; import { conversationService } from "@/services/conversationService"; diff --git a/frontend/app/[locale]/chat/streaming/chatStreamFinalMessage.tsx b/frontend/app/[locale]/chat/streaming/chatStreamFinalMessage.tsx index 40ceaa2eb..285225f23 100644 --- a/frontend/app/[locale]/chat/streaming/chatStreamFinalMessage.tsx +++ b/frontend/app/[locale]/chat/streaming/chatStreamFinalMessage.tsx @@ -30,8 +30,7 @@ const convertToMarkdownCodeFences = (content: string): string => { }); return content; }; -import { Button } from "antd"; -import { Tooltip, TooltipProvider } from "@/components/ui/tooltip"; +import { Button, Tooltip } from "antd"; import { ChatMessageType, MaxStepsInfo } from "@/types/chat"; import { chatConfig, Opinion } from "@/const/chatConfig"; import { conversationService } from "@/services/conversationService"; @@ -403,7 +402,7 @@ function ChatStreamFinalMessageInner({ {/* Tool button */}
- +
{/* Copy button */} - +
)} diff --git a/frontend/app/[locale]/knowledges/components/knowledge/KnowledgeBaseList.tsx b/frontend/app/[locale]/knowledges/components/knowledge/KnowledgeBaseList.tsx index 7f4878523..53758147b 100644 --- a/frontend/app/[locale]/knowledges/components/knowledge/KnowledgeBaseList.tsx +++ b/frontend/app/[locale]/knowledges/components/knowledge/KnowledgeBaseList.tsx @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next"; import log from "@/lib/logger"; -import { Button, Input, Select } from "antd"; +import { Button, Input, Select, Tooltip } from "antd"; import { SyncOutlined, PlusOutlined, @@ -19,7 +19,6 @@ import { SquarePen, CircleOff, } from "lucide-react"; -import { Tooltip } from "@/components/ui/tooltip"; import { Can } from "@/components/permission/Can"; import { useAuthorizationContext } from "@/components/providers/AuthorizationProvider"; import { useGroupList } from "@/hooks/group/useGroupList"; diff --git a/frontend/app/[locale]/tenant-resources/components/UserManageComp.tsx b/frontend/app/[locale]/tenant-resources/components/UserManageComp.tsx index f4d20ae0b..9c215a0ac 100644 --- a/frontend/app/[locale]/tenant-resources/components/UserManageComp.tsx +++ b/frontend/app/[locale]/tenant-resources/components/UserManageComp.tsx @@ -18,6 +18,8 @@ import { Pagination, Alert, Space, + Divider, + Tooltip } from "antd"; import { Users, @@ -62,7 +64,6 @@ import { useDeployment } from "@/components/providers/deploymentProvider"; import { useAuthorizationContext } from "@/components/providers/AuthorizationProvider"; import { USER_ROLES } from "@/const/auth"; import { Can } from "@/components/permission/Can"; -import { Tooltip } from "@/components/ui/tooltip"; import { getPasswordChecks, getStrengthLevel, @@ -1179,167 +1180,170 @@ export default function UserManageComp() { }; return ( -
+
{/* Page header: grouped header without dividing line */} -
- -
-
- -
-
-

- {t("tenantResources.title") || "Tenant Resource Management"} -

-

- {t("tenantResources.subtitle") || - "Manage tenants, users, groups and resources"} -

-
+
+
+
+
- +
+

+ {t("tenantResources.title") || "Tenant Resource Management"} +

+

+ {t("tenantResources.subtitle") || + "Manage tenants, users, groups and resources"} +

+
+
- - - -
-
-
- setTenantId(id)} - tenants={tenantData?.data || []} - total={tenantData?.total} - page={tenantData?.page} - pageSize={tenantData?.page_size} - totalPages={tenantData?.total_pages} - onPageChange={handlePageChange} - onTenantsRefetch={async () => { - setCurrentPage(1); - return refetchTenants(); - }} - loading={tenantsLoading} - t={t} - onUserListRefresh={() => - setUserListRefreshKey((prev) => prev + 1) - } - onInvitationListRefresh={() => - setInvitationListRefreshKey((prev) => prev + 1) - } - locale={locale} - /> +
+
+ + +
+
+
+ setTenantId(id)} + tenants={tenantData?.data || []} + total={tenantData?.total} + page={tenantData?.page} + pageSize={tenantData?.page_size} + totalPages={tenantData?.total_pages} + onPageChange={handlePageChange} + onTenantsRefetch={async () => { + setCurrentPage(1); + return refetchTenants(); + }} + loading={tenantsLoading} + t={t} + onUserListRefresh={() => + setUserListRefreshKey((prev) => prev + 1) + } + onInvitationListRefresh={() => + setInvitationListRefreshKey((prev) => prev + 1) + } + locale={locale} + /> +
-
- - - -
- {/* Tenant name header */} -
- {isEditingTenantName ? ( - setEditingTenantName(e.target.value)} - onBlur={saveTenantName} - onKeyDown={handleTenantNameKeyDown} - className="text-lg font-semibold text-gray-900 dark:text-gray-100" - placeholder={t("tenantResources.tenants.name")} - /> - ) : ( -
-

- {currentTenantName} -

- + + + +
+ {/* Tenant name header */} +
+ {isEditingTenantName ? ( + setEditingTenantName(e.target.value)} + onBlur={saveTenantName} + onKeyDown={handleTenantNameKeyDown} + className="text-lg font-semibold text-gray-900 dark:text-gray-100" + placeholder={t("tenantResources.tenants.name")} + /> + ) : ( +
+

+ {currentTenantName} +

+ +
+ )} + +
+ +
+ +
+ {tenantId ? ( + + ), + }, + { + key: "groups", + label: t("tenantResources.tabs.groups") || "Groups", + children: , + }, + { + key: "models", + label: t("tenantResources.tabs.models") || "Models", + children: , + }, + { + key: "knowledge", + label: + t("tenantResources.tabs.knowledge") || "Knowledge Base", + children: , + }, + { + key: "agents", + label: t("tenantResources.tabs.agents") || "Agents", + children: , + }, + { + key: "mcp", + label: t("tenantResources.tabs.mcp") || "MCP", + children: , + }, + { + key: "skills", + label: "Skills", + children: , + }, + { + key: "invitations", + label: t("tenantResources.invitation.tab") || "Invitations", + children: ( + + ), + }, + ]} + /> + ) : ( +
+
+ +
+

+ {t("tenantResources.selectTenantFirst") || + "Please select a tenant"} +

+

+ {t("tenantResources.selectTenantDescription") || + "Choose a tenant from the list to manage its users, groups, models, and knowledge base."} +

+
+ )}
- )} -
- {tenantId ? ( - - ), - }, - { - key: "groups", - label: t("tenantResources.tabs.groups") || "Groups", - children: , - }, - { - key: "models", - label: t("tenantResources.tabs.models") || "Models", - children: , - }, - { - key: "knowledge", - label: - t("tenantResources.tabs.knowledge") || "Knowledge Base", - children: , - }, - { - key: "agents", - label: t("tenantResources.tabs.agents") || "Agents", - children: , - }, - { - key: "mcp", - label: t("tenantResources.tabs.mcp") || "MCP", - children: , - }, - { - key: "skills", - label: "Skills", - children: , - }, - { - key: "invitations", - label: t("tenantResources.invitation.tab") || "Invitations", - children: ( - - ), - }, - ]} - /> - ) : ( -
-
- -
-

- {t("tenantResources.selectTenantFirst") || - "Please select a tenant"} -

-

- {t("tenantResources.selectTenantDescription") || - "Choose a tenant from the list to manage its users, groups, models, and knowledge base."} -

- )} -
- - +
+ +
+
); } diff --git a/frontend/app/[locale]/tenant-resources/components/resources/GroupList.tsx b/frontend/app/[locale]/tenant-resources/components/resources/GroupList.tsx index ec3397219..32af131db 100644 --- a/frontend/app/[locale]/tenant-resources/components/resources/GroupList.tsx +++ b/frontend/app/[locale]/tenant-resources/components/resources/GroupList.tsx @@ -12,9 +12,9 @@ import { Popconfirm, message, Select, + Tooltip } from "antd"; import { Edit, Trash2 } from "lucide-react"; -import { Tooltip } from "@/components/ui/tooltip"; import { ColumnsType } from "antd/es/table"; import { useGroupList } from "@/hooks/group/useGroupList"; import { useUserList } from "@/hooks/user/useUserList"; @@ -278,7 +278,7 @@ export default function GroupList({ tenantId }: { tenantId: string | null }) { }; return ( -
+
diff --git a/frontend/app/[locale]/tenant-resources/components/resources/InvitationList.tsx b/frontend/app/[locale]/tenant-resources/components/resources/InvitationList.tsx index 688fda8b1..648936660 100644 --- a/frontend/app/[locale]/tenant-resources/components/resources/InvitationList.tsx +++ b/frontend/app/[locale]/tenant-resources/components/resources/InvitationList.tsx @@ -17,6 +17,7 @@ import { Collapse, DatePicker, Progress, + Tooltip } from "antd"; import { ColumnsType } from "antd/es/table"; import { useInvitationList } from "@/hooks/invitation/useInvitationList"; @@ -41,7 +42,6 @@ import { Copy, CircleSlash, } from "lucide-react"; -import { Tooltip } from "@/components/ui/tooltip"; import { formatDate } from "@/lib/date"; import { useAuthorizationContext } from "@/components/providers/AuthorizationProvider"; import { @@ -443,7 +443,7 @@ export default function InvitationList({ }, [invitations, tenantId]); return ( -
+
diff --git a/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx b/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx index b8b00598e..0ca15065c 100644 --- a/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx +++ b/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx @@ -2,10 +2,9 @@ import React, { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; -import { Table, Popconfirm, message, Button, Modal, Tag } from "antd"; +import { Table, Popconfirm, message, Button, Modal, Tag, Tooltip } from "antd"; import { ColumnsType } from "antd/es/table"; import { Edit, Trash2, BookOpen } from "lucide-react"; -import { Tooltip } from "@/components/ui/tooltip"; import { MarkdownRenderer } from "@/components/common/markdownRenderer"; import { useKnowledgeList } from "@/hooks/knowledge/useKnowledgeList"; import { useGroupList } from "@/hooks/group/useGroupList"; @@ -255,7 +254,7 @@ export default function KnowledgeList({ ]; return ( -
+
+
+
), + width: "20%" }, ], [] @@ -207,7 +210,7 @@ export default function UserList({ tenantId, refreshKey }: { tenantId: string | }; return ( -
+
- Date: Thu, 11 Jun 2026 15:14:34 +0800 Subject: [PATCH 3/3] Bugfix: Fix incomplete display of tenant resources page after window resize --- .../components/AssetOwnerResourcesComp.tsx | 16 +++- .../components/UserManageComp.tsx | 16 +++- .../components/resources/AgentList.tsx | 27 ++++--- .../components/resources/InvitationList.tsx | 6 +- .../components/resources/KnowledgeList.tsx | 6 +- .../components/resources/McpList.tsx | 78 +++++++++---------- .../components/resources/ModelList.tsx | 6 +- .../components/resources/SkillList.tsx | 8 +- .../components/resources/UserList.tsx | 6 +- 9 files changed, 96 insertions(+), 73 deletions(-) diff --git a/frontend/app/[locale]/tenant-resources/components/AssetOwnerResourcesComp.tsx b/frontend/app/[locale]/tenant-resources/components/AssetOwnerResourcesComp.tsx index 38fb3ceb1..6cf23c0a9 100644 --- a/frontend/app/[locale]/tenant-resources/components/AssetOwnerResourcesComp.tsx +++ b/frontend/app/[locale]/tenant-resources/components/AssetOwnerResourcesComp.tsx @@ -54,7 +54,7 @@ export default function AssetOwnerResourcesComp() { ); } + + diff --git a/frontend/app/[locale]/tenant-resources/components/UserManageComp.tsx b/frontend/app/[locale]/tenant-resources/components/UserManageComp.tsx index 9c215a0ac..cfff26fe9 100644 --- a/frontend/app/[locale]/tenant-resources/components/UserManageComp.tsx +++ b/frontend/app/[locale]/tenant-resources/components/UserManageComp.tsx @@ -1234,7 +1234,7 @@ export default function UserManageComp() { -
+
{/* Tenant name header */}
{isEditingTenantName ? ( @@ -1267,7 +1267,7 @@ export default function UserManageComp() { {tenantId ? ( ); } + + diff --git a/frontend/app/[locale]/tenant-resources/components/resources/AgentList.tsx b/frontend/app/[locale]/tenant-resources/components/resources/AgentList.tsx index 41fbf4c93..2e2383ad5 100644 --- a/frontend/app/[locale]/tenant-resources/components/resources/AgentList.tsx +++ b/frontend/app/[locale]/tenant-resources/components/resources/AgentList.tsx @@ -411,20 +411,19 @@ export default function AgentList({ tenantId }: { tenantId: string | null }) { ]; return ( -
-
-
-
- +
+
+
{/* View Modal */} diff --git a/frontend/app/[locale]/tenant-resources/components/resources/InvitationList.tsx b/frontend/app/[locale]/tenant-resources/components/resources/InvitationList.tsx index 648936660..6365ab68a 100644 --- a/frontend/app/[locale]/tenant-resources/components/resources/InvitationList.tsx +++ b/frontend/app/[locale]/tenant-resources/components/resources/InvitationList.tsx @@ -443,7 +443,7 @@ export default function InvitationList({ }, [invitations, tenantId]); return ( -
+
@@ -465,8 +465,8 @@ export default function InvitationList({ loading={isLoading} rowKey="invitation_id" pagination={{ pageSize: 10 }} - scroll={{ x: 1000 }} - className="flex-1" + scroll={{ y: "calc(100vh - 560px)" }} + className="flex-1 [&_.ant-table]:h-full" /> ) : ( // Multi-tenant view with collapse diff --git a/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx b/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx index 0ca15065c..7b1a703b1 100644 --- a/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx +++ b/frontend/app/[locale]/tenant-resources/components/resources/KnowledgeList.tsx @@ -254,15 +254,15 @@ export default function KnowledgeList({ ]; return ( -
+
{/* Edit Knowledge Base Modal */} diff --git a/frontend/app/[locale]/tenant-resources/components/resources/McpList.tsx b/frontend/app/[locale]/tenant-resources/components/resources/McpList.tsx index 19e8e23ae..412ff402f 100644 --- a/frontend/app/[locale]/tenant-resources/components/resources/McpList.tsx +++ b/frontend/app/[locale]/tenant-resources/components/resources/McpList.tsx @@ -760,7 +760,7 @@ export default function McpList({ tenantId }: { tenantId: string | null }) { ]; return ( -
+
-
-
- {t("mcpConfig.serverList.title")} -
`${record.service_name}-${record.mcp_url}`} - loading={loading} - size="small" - pagination={{ pageSize: 7 }} - locale={{ emptyText: t("mcpConfig.serverList.empty") }} - /> - +
+ {t("mcpConfig.serverList.title")} +
`${record.service_name}-${record.mcp_url}`} + loading={loading} + size="small" + pagination={{ pageSize: 7 }} + locale={{ emptyText: t("mcpConfig.serverList.empty") }} + scroll={{ y: "calc(100vh - 560px)" }} + className="flex-1 [&_.ant-table]:h-full" + /> -
- {t("mcpConfig.containerList.title")} -
- + {t("mcpConfig.containerList.title")} +
-
- {t("mcpConfig.openapiService.list.title")} -
- + {t("mcpConfig.openapiService.list.title")} +
{/* Add Modal */} diff --git a/frontend/app/[locale]/tenant-resources/components/resources/ModelList.tsx b/frontend/app/[locale]/tenant-resources/components/resources/ModelList.tsx index b19fd6fc7..6715852f7 100644 --- a/frontend/app/[locale]/tenant-resources/components/resources/ModelList.tsx +++ b/frontend/app/[locale]/tenant-resources/components/resources/ModelList.tsx @@ -360,7 +360,7 @@ export default function ModelList({ tenantId }: { tenantId: string | null }) { ]; return ( -
+
(null); const [savingParams, setSavingParams] = useState(false); @@ -730,8 +729,8 @@ export default function SkillList({ tenantId }: { tenantId: string | null }) { : "closed"; return ( -
-
+
+