This is an automated email from the ASF dual-hosted git repository.

juzhiyuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-dashboard.git


The following commit(s) were added to refs/heads/master by this push:
     new 6f01f7f2a refactor(consumers): use Outlet to render child routes 
(#3133)
6f01f7f2a is described below

commit 6f01f7f2a936bc9f3ac56b628012568666ed117e
Author: YYYoung <isk...@outlook.com>
AuthorDate: Sat Jul 26 14:13:54 2025 +0800

    refactor(consumers): use Outlet to render child routes (#3133)
---
 .../page-slice/consumers/DetailCredentialsTabs.tsx |   4 +-
 src/routeTree.gen.ts                               | 128 ++++++++++++++-------
 src/routes/consumers/detail.$username.tsx          |  32 ++++++
 .../consumers/detail.$username/credentials/add.tsx |   3 +-
 .../detail.$username/credentials/detail.$id.tsx    |   2 -
 .../detail.$username/credentials/index.tsx         |   2 -
 src/routes/consumers/detail.$username/index.tsx    |  15 +--
 7 files changed, 122 insertions(+), 64 deletions(-)

diff --git a/src/components/page-slice/consumers/DetailCredentialsTabs.tsx 
b/src/components/page-slice/consumers/DetailCredentialsTabs.tsx
index a82ae093b..c605e1508 100644
--- a/src/components/page-slice/consumers/DetailCredentialsTabs.tsx
+++ b/src/components/page-slice/consumers/DetailCredentialsTabs.tsx
@@ -36,9 +36,7 @@ export const DetailCredentialsTabs = () => {
       },
       {
         value: 'credentials',
-        label: t('info.detail.title', {
-          name: t('credentials.singular'),
-        }),
+        label: t('sources.credentials'),
       },
     ],
     [t]
diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts
index fc9023129..09bb7be2c 100644
--- a/src/routeTree.gen.ts
+++ b/src/routeTree.gen.ts
@@ -43,6 +43,7 @@ import { Route as RoutesDetailIdImport } from 
'./routes/routes/detail.$id'
 import { Route as ProtosDetailIdImport } from './routes/protos/detail.$id'
 import { Route as PluginconfigsDetailIdImport } from 
'./routes/plugin_configs/detail.$id'
 import { Route as GlobalrulesDetailIdImport } from 
'./routes/global_rules/detail.$id'
+import { Route as ConsumersDetailUsernameImport } from 
'./routes/consumers/detail.$username'
 import { Route as ConsumergroupsDetailIdImport } from 
'./routes/consumer_groups/detail.$id'
 import { Route as ServicesDetailIdIndexImport } from 
'./routes/services/detail.$id/index'
 import { Route as ConsumersDetailUsernameIndexImport } from 
'./routes/consumers/detail.$username/index'
@@ -251,6 +252,12 @@ const GlobalrulesDetailIdRoute = 
GlobalrulesDetailIdImport.update({
   getParentRoute: () => rootRoute,
 } as any)
 
+const ConsumersDetailUsernameRoute = ConsumersDetailUsernameImport.update({
+  id: '/consumers/detail/$username',
+  path: '/consumers/detail/$username',
+  getParentRoute: () => rootRoute,
+} as any)
+
 const ConsumergroupsDetailIdRoute = ConsumergroupsDetailIdImport.update({
   id: '/consumer_groups/detail/$id',
   path: '/consumer_groups/detail/$id',
@@ -265,9 +272,9 @@ const ServicesDetailIdIndexRoute = 
ServicesDetailIdIndexImport.update({
 
 const ConsumersDetailUsernameIndexRoute =
   ConsumersDetailUsernameIndexImport.update({
-    id: '/consumers/detail/$username/',
-    path: '/consumers/detail/$username/',
-    getParentRoute: () => rootRoute,
+    id: '/',
+    path: '/',
+    getParentRoute: () => ConsumersDetailUsernameRoute,
   } as any)
 
 const SecretsDetailManagerIdRoute = SecretsDetailManagerIdImport.update({
@@ -292,9 +299,9 @@ const ServicesDetailIdRoutesIndexRoute =
 
 const ConsumersDetailUsernameCredentialsIndexRoute =
   ConsumersDetailUsernameCredentialsIndexImport.update({
-    id: '/consumers/detail/$username/credentials/',
-    path: '/consumers/detail/$username/credentials/',
-    getParentRoute: () => rootRoute,
+    id: '/credentials/',
+    path: '/credentials/',
+    getParentRoute: () => ConsumersDetailUsernameRoute,
   } as any)
 
 const ServicesDetailIdStreamroutesAddRoute =
@@ -312,9 +319,9 @@ const ServicesDetailIdRoutesAddRoute = 
ServicesDetailIdRoutesAddImport.update({
 
 const ConsumersDetailUsernameCredentialsAddRoute =
   ConsumersDetailUsernameCredentialsAddImport.update({
-    id: '/consumers/detail/$username/credentials/add',
-    path: '/consumers/detail/$username/credentials/add',
-    getParentRoute: () => rootRoute,
+    id: '/credentials/add',
+    path: '/credentials/add',
+    getParentRoute: () => ConsumersDetailUsernameRoute,
   } as any)
 
 const ServicesDetailIdStreamroutesDetailRouteIdRoute =
@@ -333,9 +340,9 @@ const ServicesDetailIdRoutesDetailRouteIdRoute =
 
 const ConsumersDetailUsernameCredentialsDetailIdRoute =
   ConsumersDetailUsernameCredentialsDetailIdImport.update({
-    id: '/consumers/detail/$username/credentials/detail/$id',
-    path: '/consumers/detail/$username/credentials/detail/$id',
-    getParentRoute: () => rootRoute,
+    id: '/credentials/detail/$id',
+    path: '/credentials/detail/$id',
+    getParentRoute: () => ConsumersDetailUsernameRoute,
   } as any)
 
 // Populate the FileRoutesByPath interface
@@ -517,6 +524,13 @@ declare module '@tanstack/react-router' {
       preLoaderRoute: typeof ConsumergroupsDetailIdImport
       parentRoute: typeof rootRoute
     }
+    '/consumers/detail/$username': {
+      id: '/consumers/detail/$username'
+      path: '/consumers/detail/$username'
+      fullPath: '/consumers/detail/$username'
+      preLoaderRoute: typeof ConsumersDetailUsernameImport
+      parentRoute: typeof rootRoute
+    }
     '/global_rules/detail/$id': {
       id: '/global_rules/detail/$id'
       path: '/global_rules/detail/$id'
@@ -582,10 +596,10 @@ declare module '@tanstack/react-router' {
     }
     '/consumers/detail/$username/': {
       id: '/consumers/detail/$username/'
-      path: '/consumers/detail/$username'
-      fullPath: '/consumers/detail/$username'
+      path: '/'
+      fullPath: '/consumers/detail/$username/'
       preLoaderRoute: typeof ConsumersDetailUsernameIndexImport
-      parentRoute: typeof rootRoute
+      parentRoute: typeof ConsumersDetailUsernameImport
     }
     '/services/detail/$id/': {
       id: '/services/detail/$id/'
@@ -596,10 +610,10 @@ declare module '@tanstack/react-router' {
     }
     '/consumers/detail/$username/credentials/add': {
       id: '/consumers/detail/$username/credentials/add'
-      path: '/consumers/detail/$username/credentials/add'
+      path: '/credentials/add'
       fullPath: '/consumers/detail/$username/credentials/add'
       preLoaderRoute: typeof ConsumersDetailUsernameCredentialsAddImport
-      parentRoute: typeof rootRoute
+      parentRoute: typeof ConsumersDetailUsernameImport
     }
     '/services/detail/$id/routes/add': {
       id: '/services/detail/$id/routes/add'
@@ -617,10 +631,10 @@ declare module '@tanstack/react-router' {
     }
     '/consumers/detail/$username/credentials/': {
       id: '/consumers/detail/$username/credentials/'
-      path: '/consumers/detail/$username/credentials'
+      path: '/credentials'
       fullPath: '/consumers/detail/$username/credentials'
       preLoaderRoute: typeof ConsumersDetailUsernameCredentialsIndexImport
-      parentRoute: typeof rootRoute
+      parentRoute: typeof ConsumersDetailUsernameImport
     }
     '/services/detail/$id/routes/': {
       id: '/services/detail/$id/routes/'
@@ -638,10 +652,10 @@ declare module '@tanstack/react-router' {
     }
     '/consumers/detail/$username/credentials/detail/$id': {
       id: '/consumers/detail/$username/credentials/detail/$id'
-      path: '/consumers/detail/$username/credentials/detail/$id'
+      path: '/credentials/detail/$id'
       fullPath: '/consumers/detail/$username/credentials/detail/$id'
       preLoaderRoute: typeof ConsumersDetailUsernameCredentialsDetailIdImport
-      parentRoute: typeof rootRoute
+      parentRoute: typeof ConsumersDetailUsernameImport
     }
     '/services/detail/$id/routes/detail/$routeId': {
       id: '/services/detail/$id/routes/detail/$routeId'
@@ -662,6 +676,29 @@ declare module '@tanstack/react-router' {
 
 // Create and export the route tree
 
+interface ConsumersDetailUsernameRouteChildren {
+  ConsumersDetailUsernameIndexRoute: typeof ConsumersDetailUsernameIndexRoute
+  ConsumersDetailUsernameCredentialsAddRoute: typeof 
ConsumersDetailUsernameCredentialsAddRoute
+  ConsumersDetailUsernameCredentialsIndexRoute: typeof 
ConsumersDetailUsernameCredentialsIndexRoute
+  ConsumersDetailUsernameCredentialsDetailIdRoute: typeof 
ConsumersDetailUsernameCredentialsDetailIdRoute
+}
+
+const ConsumersDetailUsernameRouteChildren: 
ConsumersDetailUsernameRouteChildren =
+  {
+    ConsumersDetailUsernameIndexRoute: ConsumersDetailUsernameIndexRoute,
+    ConsumersDetailUsernameCredentialsAddRoute:
+      ConsumersDetailUsernameCredentialsAddRoute,
+    ConsumersDetailUsernameCredentialsIndexRoute:
+      ConsumersDetailUsernameCredentialsIndexRoute,
+    ConsumersDetailUsernameCredentialsDetailIdRoute:
+      ConsumersDetailUsernameCredentialsDetailIdRoute,
+  }
+
+const ConsumersDetailUsernameRouteWithChildren =
+  ConsumersDetailUsernameRoute._addFileChildren(
+    ConsumersDetailUsernameRouteChildren,
+  )
+
 interface ServicesDetailIdRouteChildren {
   ServicesDetailIdIndexRoute: typeof ServicesDetailIdIndexRoute
   ServicesDetailIdRoutesAddRoute: typeof ServicesDetailIdRoutesAddRoute
@@ -714,6 +751,7 @@ export interface FileRoutesByFullPath {
   '/stream_routes': typeof StreamroutesIndexRoute
   '/upstreams': typeof UpstreamsIndexRoute
   '/consumer_groups/detail/$id': typeof ConsumergroupsDetailIdRoute
+  '/consumers/detail/$username': typeof 
ConsumersDetailUsernameRouteWithChildren
   '/global_rules/detail/$id': typeof GlobalrulesDetailIdRoute
   '/plugin_configs/detail/$id': typeof PluginconfigsDetailIdRoute
   '/protos/detail/$id': typeof ProtosDetailIdRoute
@@ -723,7 +761,7 @@ export interface FileRoutesByFullPath {
   '/stream_routes/detail/$id': typeof StreamroutesDetailIdRoute
   '/upstreams/detail/$id': typeof UpstreamsDetailIdRoute
   '/secrets/detail/$manager/$id': typeof SecretsDetailManagerIdRoute
-  '/consumers/detail/$username': typeof ConsumersDetailUsernameIndexRoute
+  '/consumers/detail/$username/': typeof ConsumersDetailUsernameIndexRoute
   '/services/detail/$id/': typeof ServicesDetailIdIndexRoute
   '/consumers/detail/$username/credentials/add': typeof 
ConsumersDetailUsernameCredentialsAddRoute
   '/services/detail/$id/routes/add': typeof ServicesDetailIdRoutesAddRoute
@@ -810,6 +848,7 @@ export interface FileRoutesById {
   '/stream_routes/': typeof StreamroutesIndexRoute
   '/upstreams/': typeof UpstreamsIndexRoute
   '/consumer_groups/detail/$id': typeof ConsumergroupsDetailIdRoute
+  '/consumers/detail/$username': typeof 
ConsumersDetailUsernameRouteWithChildren
   '/global_rules/detail/$id': typeof GlobalrulesDetailIdRoute
   '/plugin_configs/detail/$id': typeof PluginconfigsDetailIdRoute
   '/protos/detail/$id': typeof ProtosDetailIdRoute
@@ -860,6 +899,7 @@ export interface FileRouteTypes {
     | '/stream_routes'
     | '/upstreams'
     | '/consumer_groups/detail/$id'
+    | '/consumers/detail/$username'
     | '/global_rules/detail/$id'
     | '/plugin_configs/detail/$id'
     | '/protos/detail/$id'
@@ -869,7 +909,7 @@ export interface FileRouteTypes {
     | '/stream_routes/detail/$id'
     | '/upstreams/detail/$id'
     | '/secrets/detail/$manager/$id'
-    | '/consumers/detail/$username'
+    | '/consumers/detail/$username/'
     | '/services/detail/$id/'
     | '/consumers/detail/$username/credentials/add'
     | '/services/detail/$id/routes/add'
@@ -953,6 +993,7 @@ export interface FileRouteTypes {
     | '/stream_routes/'
     | '/upstreams/'
     | '/consumer_groups/detail/$id'
+    | '/consumers/detail/$username'
     | '/global_rules/detail/$id'
     | '/plugin_configs/detail/$id'
     | '/protos/detail/$id'
@@ -1002,6 +1043,7 @@ export interface RootRouteChildren {
   StreamroutesIndexRoute: typeof StreamroutesIndexRoute
   UpstreamsIndexRoute: typeof UpstreamsIndexRoute
   ConsumergroupsDetailIdRoute: typeof ConsumergroupsDetailIdRoute
+  ConsumersDetailUsernameRoute: typeof ConsumersDetailUsernameRouteWithChildren
   GlobalrulesDetailIdRoute: typeof GlobalrulesDetailIdRoute
   PluginconfigsDetailIdRoute: typeof PluginconfigsDetailIdRoute
   ProtosDetailIdRoute: typeof ProtosDetailIdRoute
@@ -1011,10 +1053,6 @@ export interface RootRouteChildren {
   StreamroutesDetailIdRoute: typeof StreamroutesDetailIdRoute
   UpstreamsDetailIdRoute: typeof UpstreamsDetailIdRoute
   SecretsDetailManagerIdRoute: typeof SecretsDetailManagerIdRoute
-  ConsumersDetailUsernameIndexRoute: typeof ConsumersDetailUsernameIndexRoute
-  ConsumersDetailUsernameCredentialsAddRoute: typeof 
ConsumersDetailUsernameCredentialsAddRoute
-  ConsumersDetailUsernameCredentialsIndexRoute: typeof 
ConsumersDetailUsernameCredentialsIndexRoute
-  ConsumersDetailUsernameCredentialsDetailIdRoute: typeof 
ConsumersDetailUsernameCredentialsDetailIdRoute
 }
 
 const rootRouteChildren: RootRouteChildren = {
@@ -1043,6 +1081,7 @@ const rootRouteChildren: RootRouteChildren = {
   StreamroutesIndexRoute: StreamroutesIndexRoute,
   UpstreamsIndexRoute: UpstreamsIndexRoute,
   ConsumergroupsDetailIdRoute: ConsumergroupsDetailIdRoute,
+  ConsumersDetailUsernameRoute: ConsumersDetailUsernameRouteWithChildren,
   GlobalrulesDetailIdRoute: GlobalrulesDetailIdRoute,
   PluginconfigsDetailIdRoute: PluginconfigsDetailIdRoute,
   ProtosDetailIdRoute: ProtosDetailIdRoute,
@@ -1052,13 +1091,6 @@ const rootRouteChildren: RootRouteChildren = {
   StreamroutesDetailIdRoute: StreamroutesDetailIdRoute,
   UpstreamsDetailIdRoute: UpstreamsDetailIdRoute,
   SecretsDetailManagerIdRoute: SecretsDetailManagerIdRoute,
-  ConsumersDetailUsernameIndexRoute: ConsumersDetailUsernameIndexRoute,
-  ConsumersDetailUsernameCredentialsAddRoute:
-    ConsumersDetailUsernameCredentialsAddRoute,
-  ConsumersDetailUsernameCredentialsIndexRoute:
-    ConsumersDetailUsernameCredentialsIndexRoute,
-  ConsumersDetailUsernameCredentialsDetailIdRoute:
-    ConsumersDetailUsernameCredentialsDetailIdRoute,
 }
 
 export const routeTree = rootRoute
@@ -1096,6 +1128,7 @@ export const routeTree = rootRoute
         "/stream_routes/",
         "/upstreams/",
         "/consumer_groups/detail/$id",
+        "/consumers/detail/$username",
         "/global_rules/detail/$id",
         "/plugin_configs/detail/$id",
         "/protos/detail/$id",
@@ -1104,11 +1137,7 @@ export const routeTree = rootRoute
         "/ssls/detail/$id",
         "/stream_routes/detail/$id",
         "/upstreams/detail/$id",
-        "/secrets/detail/$manager/$id",
-        "/consumers/detail/$username/",
-        "/consumers/detail/$username/credentials/add",
-        "/consumers/detail/$username/credentials/",
-        "/consumers/detail/$username/credentials/detail/$id"
+        "/secrets/detail/$manager/$id"
       ]
     },
     "/": {
@@ -1186,6 +1215,15 @@ export const routeTree = rootRoute
     "/consumer_groups/detail/$id": {
       "filePath": "consumer_groups/detail.$id.tsx"
     },
+    "/consumers/detail/$username": {
+      "filePath": "consumers/detail.$username.tsx",
+      "children": [
+        "/consumers/detail/$username/",
+        "/consumers/detail/$username/credentials/add",
+        "/consumers/detail/$username/credentials/",
+        "/consumers/detail/$username/credentials/detail/$id"
+      ]
+    },
     "/global_rules/detail/$id": {
       "filePath": "global_rules/detail.$id.tsx"
     },
@@ -1223,14 +1261,16 @@ export const routeTree = rootRoute
       "filePath": "secrets/detail.$manager.$id.tsx"
     },
     "/consumers/detail/$username/": {
-      "filePath": "consumers/detail.$username/index.tsx"
+      "filePath": "consumers/detail.$username/index.tsx",
+      "parent": "/consumers/detail/$username"
     },
     "/services/detail/$id/": {
       "filePath": "services/detail.$id/index.tsx",
       "parent": "/services/detail/$id"
     },
     "/consumers/detail/$username/credentials/add": {
-      "filePath": "consumers/detail.$username/credentials/add.tsx"
+      "filePath": "consumers/detail.$username/credentials/add.tsx",
+      "parent": "/consumers/detail/$username"
     },
     "/services/detail/$id/routes/add": {
       "filePath": "services/detail.$id/routes/add.tsx",
@@ -1241,7 +1281,8 @@ export const routeTree = rootRoute
       "parent": "/services/detail/$id"
     },
     "/consumers/detail/$username/credentials/": {
-      "filePath": "consumers/detail.$username/credentials/index.tsx"
+      "filePath": "consumers/detail.$username/credentials/index.tsx",
+      "parent": "/consumers/detail/$username"
     },
     "/services/detail/$id/routes/": {
       "filePath": "services/detail.$id/routes/index.tsx",
@@ -1252,7 +1293,8 @@ export const routeTree = rootRoute
       "parent": "/services/detail/$id"
     },
     "/consumers/detail/$username/credentials/detail/$id": {
-      "filePath": "consumers/detail.$username/credentials/detail.$id.tsx"
+      "filePath": "consumers/detail.$username/credentials/detail.$id.tsx",
+      "parent": "/consumers/detail/$username"
     },
     "/services/detail/$id/routes/detail/$routeId": {
       "filePath": "services/detail.$id/routes/detail.$routeId.tsx",
diff --git a/src/routes/consumers/detail.$username.tsx 
b/src/routes/consumers/detail.$username.tsx
new file mode 100644
index 000000000..97ff4355e
--- /dev/null
+++ b/src/routes/consumers/detail.$username.tsx
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { createFileRoute, Outlet } from '@tanstack/react-router';
+
+import { DetailCredentialsTabs } from 
'@/components/page-slice/consumers/DetailCredentialsTabs';
+
+function RouteComponent() {
+  return (
+    <>
+      <DetailCredentialsTabs />
+      <Outlet />
+    </>
+  );
+}
+
+export const Route = createFileRoute('/consumers/detail/$username')({
+  component: RouteComponent,
+}); 
diff --git a/src/routes/consumers/detail.$username/credentials/add.tsx 
b/src/routes/consumers/detail.$username/credentials/add.tsx
index b5165a394..dd92a9dc6 100644
--- a/src/routes/consumers/detail.$username/credentials/add.tsx
+++ b/src/routes/consumers/detail.$username/credentials/add.tsx
@@ -28,7 +28,6 @@ import { FormPartCredential } from 
'@/components/form-slice/FormPartCredential';
 import { FormTOCBox } from '@/components/form-slice/FormSection';
 import { FormSectionGeneral } from 
'@/components/form-slice/FormSectionGeneral';
 import PageHeader from '@/components/page/PageHeader';
-import { DetailCredentialsTabs } from 
'@/components/page-slice/consumers/DetailCredentialsTabs';
 import { req } from '@/config/req';
 import { APISIX, type APISIXType } from '@/types/schema/apisix';
 import { pipeProduce } from '@/utils/producer';
@@ -77,11 +76,11 @@ const CredentialAddForm = () => {
     </FormProvider>
   );
 };
+
 function RouteComponent() {
   const { t } = useTranslation();
   return (
     <>
-      <DetailCredentialsTabs />
       <PageHeader
         title={t('info.add.title', {
           name: t('credentials.singular'),
diff --git a/src/routes/consumers/detail.$username/credentials/detail.$id.tsx 
b/src/routes/consumers/detail.$username/credentials/detail.$id.tsx
index 7c56cab89..c1d73903a 100644
--- a/src/routes/consumers/detail.$username/credentials/detail.$id.tsx
+++ b/src/routes/consumers/detail.$username/credentials/detail.$id.tsx
@@ -36,7 +36,6 @@ import { FormTOCBox } from 
'@/components/form-slice/FormSection';
 import { FormSectionGeneral } from 
'@/components/form-slice/FormSectionGeneral';
 import { DeleteResourceBtn } from '@/components/page/DeleteResourceBtn';
 import PageHeader from '@/components/page/PageHeader';
-import { DetailCredentialsTabs } from 
'@/components/page-slice/consumers/DetailCredentialsTabs';
 import { API_CREDENTIALS } from '@/config/constant';
 import { req } from '@/config/req';
 import { APISIX, type APISIXType } from '@/types/schema/apisix';
@@ -119,7 +118,6 @@ function RouteComponent() {
 
   return (
     <>
-      <DetailCredentialsTabs />
       <PageHeader
         title={t('info.edit.title', { name: t('credentials.singular') })}
         {...(readOnly && {
diff --git a/src/routes/consumers/detail.$username/credentials/index.tsx 
b/src/routes/consumers/detail.$username/credentials/index.tsx
index d331ec245..d433ba2b5 100644
--- a/src/routes/consumers/detail.$username/credentials/index.tsx
+++ b/src/routes/consumers/detail.$username/credentials/index.tsx
@@ -27,7 +27,6 @@ import {
 import { DeleteResourceBtn } from '@/components/page/DeleteResourceBtn';
 import PageHeader from '@/components/page/PageHeader';
 import { ToAddPageBtn, ToDetailPageBtn } from '@/components/page/ToAddPageBtn';
-import { DetailCredentialsTabs } from 
'@/components/page-slice/consumers/DetailCredentialsTabs';
 import { AntdConfigProvider } from '@/config/antdConfigProvider';
 import { API_CREDENTIALS } from '@/config/constant';
 import { queryClient } from '@/config/global';
@@ -133,7 +132,6 @@ function RouteComponent() {
   const { t } = useTranslation();
   return (
     <>
-      <DetailCredentialsTabs />
       <PageHeader title={t('sources.credentials')} />
       <CredentialsList />
     </>
diff --git a/src/routes/consumers/detail.$username/index.tsx 
b/src/routes/consumers/detail.$username/index.tsx
index 079d62eed..c87835c5f 100644
--- a/src/routes/consumers/detail.$username/index.tsx
+++ b/src/routes/consumers/detail.$username/index.tsx
@@ -36,7 +36,6 @@ import { FormTOCBox } from 
'@/components/form-slice/FormSection';
 import { FormSectionGeneral } from 
'@/components/form-slice/FormSectionGeneral';
 import { DeleteResourceBtn } from '@/components/page/DeleteResourceBtn';
 import PageHeader from '@/components/page/PageHeader';
-import { DetailCredentialsTabs } from 
'@/components/page-slice/consumers/DetailCredentialsTabs';
 import { API_CONSUMERS } from '@/config/constant';
 import { req } from '@/config/req';
 import { APISIX, type APISIXType } from '@/types/schema/apisix';
@@ -50,7 +49,7 @@ type Props = {
 const ConsumerDetailForm = (props: Props) => {
   const { readOnly, setReadOnly } = props;
   const { t } = useTranslation();
-  const { username } = useParams({ from: '/consumers/detail/$username/' });
+  const { username } = useParams({ from: '/consumers/detail/$username' });
 
   const consumerQuery = useSuspenseQuery(getConsumerQueryOptions(username));
   const { data: consumerData, isLoading, refetch } = consumerQuery;
@@ -110,7 +109,7 @@ const ConsumerDetailForm = (props: Props) => {
 const ConsumerDetailTab = () => {
   const { t } = useTranslation();
   const [readOnly, setReadOnly] = useBoolean(true);
-  const { username } = useParams({ from: '/consumers/detail/$username/' });
+  const { username } = useParams({ from: '/consumers/detail/$username' });
   const navigate = useNavigate();
 
   return (
@@ -146,15 +145,7 @@ const ConsumerDetailTab = () => {
   );
 };
 
-function RouteComponent() {
-  return (
-    <>
-      <DetailCredentialsTabs />
-      <ConsumerDetailTab />
-    </>
-  );
-}
 
 export const Route = createFileRoute('/consumers/detail/$username/')({
-  component: RouteComponent,
+  component: ConsumerDetailTab,
 });

Reply via email to