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, });