@@ -30,6 +30,7 @@ import {
3030}  from  'pages' 
3131import  {  getBasePrefix  }  from  'utils/getBaseprefix' 
3232import  {  colorsLight ,  colorsDark ,  sizes  }  from  'constants/colors' 
33+ import  {  MainLayout  }  from  'templates/MainLayout' 
3334
3435type  TAppProps  =  { 
3536  isFederation ?: boolean 
@@ -54,87 +55,77 @@ export const App: FC<TAppProps> = ({ isFederation, forcedTheme }) => {
5455
5556  const  renderRoutes  =  ( prefix  =  '' )  =>  ( 
5657    < Routes > 
57-       < Route  path = { `${ prefix }  /` }  element = { < MainPage  forcedTheme = { forcedTheme }  /> }  /> 
58-       < Route  path = { `${ prefix }  /clusters` }  element = { < ListClustersPage  forcedTheme = { forcedTheme }  /> }  /> 
59-       < Route  path = { `${ prefix }  /clusters/:clusterName` }  element = { < ListProjectsPage  forcedTheme = { forcedTheme }  /> }  /> 
60-       < Route  path = { `${ prefix }  /inside/` }  element = { < MainPage  forcedTheme = { forcedTheme }  /> }  /> 
61-       < Route 
62-         path = { `${ prefix }  /clusters/:clusterName/projects/:namespace` } 
63-         element = { < ProjectInfoPage  forcedTheme = { forcedTheme }  /> } 
64-       /> 
65-       < Route 
66-         path = { `${ prefix }  /inside/clusters` } 
67-         element = { < ListInsideClustersAndNsPage  forcedTheme = { forcedTheme }  inside  /> } 
68-       /> 
69-       < Route 
70-         path = { `${ prefix }  /inside/:clusterName/:namespace?/apis` } 
71-         element = { < ListInsideApiPage  forcedTheme = { forcedTheme }  inside  /> } 
72-       /> 
73-       < Route 
74-         path = { `${ prefix }  /inside/:clusterName/:namespace?/crds-by-api/:apiGroup/:apiVersion/:apiExtensionVersion` } 
75-         element = { < ListInsideCrdByApiGroupPage  forcedTheme = { forcedTheme }  inside  /> } 
76-       /> 
77-       < Route 
78-         path = { `${ prefix }  /inside/:clusterName/:namespace?/apis-by-api/:apiGroup/:apiVersion/` } 
79-         element = { < ListInsideApiByApiGroupPage  forcedTheme = { forcedTheme }  inside  /> } 
80-       /> 
81-       < Route 
82-         path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/crd-table/:apiGroup/:apiVersion/:apiExtensionVersion/:crdName` } 
83-         element = { < TableCrdPage  forcedTheme = { forcedTheme }  /> } 
84-       /> 
85-       < Route 
86-         path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/api-table/:apiGroup/:apiVersion/:typeName` } 
87-         element = { < TableApiPage  forcedTheme = { forcedTheme }  /> } 
88-       /> 
89-       < Route 
90-         path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/builtin-table/:typeName` } 
91-         element = { < TableBuiltinPage  forcedTheme = { forcedTheme }  /> } 
92-       /> 
93-       < Route 
94-         path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/forms/builtin/:apiVersion/:typeName/:entryName?/` } 
95-         element = { < FormBuiltinPage  forcedTheme = { forcedTheme }  /> } 
96-       /> 
97-       < Route 
98-         path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/forms/apis/:apiGroup/:apiVersion/:typeName/:entryName?/` } 
99-         element = { < FormApiPage  forcedTheme = { forcedTheme }  /> } 
100-       /> 
101-       < Route 
102-         path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/forms/crds/:apiGroup/:apiVersion/:typeName/:entryName?/` } 
103-         element = { < FormCrdPage  forcedTheme = { forcedTheme }  /> } 
104-       /> 
105-       < Route 
106-         path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/crd-table/:apiGroup/:apiVersion/:apiExtensionVersion/:crdName` } 
107-         element = { < TableCrdPage  forcedTheme = { forcedTheme }  inside  /> } 
108-       /> 
109-       < Route 
110-         path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/api-table/:apiGroup/:apiVersion/:typeName` } 
111-         element = { < TableApiPage  forcedTheme = { forcedTheme }  inside  /> } 
112-       /> 
113-       < Route 
114-         path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/builtin-table/:typeName` } 
115-         element = { < TableBuiltinPage  forcedTheme = { forcedTheme }  inside  /> } 
116-       /> 
117-       < Route 
118-         path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/forms/builtin/:apiVersion/:typeName/:entryName?/` } 
119-         element = { < FormBuiltinPage  forcedTheme = { forcedTheme }  inside  /> } 
120-       /> 
121-       < Route 
122-         path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/forms/apis/:apiGroup/:apiVersion/:typeName/:entryName?/` } 
123-         element = { < FormApiPage  forcedTheme = { forcedTheme }  inside  /> } 
124-       /> 
125-       < Route 
126-         path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/forms/crds/:apiGroup/:apiVersion/:typeName/:entryName?/` } 
127-         element = { < FormCrdPage  forcedTheme = { forcedTheme }  inside  /> } 
128-       /> 
129-       < Route 
130-         path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/factory/:key/*` } 
131-         element = { < FactoryPage  forcedTheme = { forcedTheme }  /> } 
132-       /> 
133-       < Route 
134-         path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/search/*` } 
135-         element = { < SearchPage  forcedTheme = { forcedTheme }  /> } 
136-       /> 
137-       < Route  path = { `${ prefix }  /factory-admin/*` }  element = { < FactoryAdminPage  /> }  /> 
58+       < Route  element = { < MainLayout  forcedTheme = { forcedTheme }  /> } > 
59+         < Route  path = { `${ prefix }  /` }  element = { < MainPage  /> }  /> 
60+         < Route  path = { `${ prefix }  /clusters` }  element = { < ListClustersPage  /> }  /> 
61+         < Route  path = { `${ prefix }  /clusters/:clusterName` }  element = { < ListProjectsPage  /> }  /> 
62+         < Route  path = { `${ prefix }  /inside/` }  element = { < MainPage  /> }  /> 
63+         < Route  path = { `${ prefix }  /clusters/:clusterName/projects/:namespace` }  element = { < ProjectInfoPage  /> }  /> 
64+         < Route  path = { `${ prefix }  /inside/clusters` }  element = { < ListInsideClustersAndNsPage  inside  /> }  /> 
65+         < Route  path = { `${ prefix }  /inside/:clusterName/:namespace?/apis` }  element = { < ListInsideApiPage  inside  /> }  /> 
66+         < Route 
67+           path = { `${ prefix }  /inside/:clusterName/:namespace?/crds-by-api/:apiGroup/:apiVersion/:apiExtensionVersion` } 
68+           element = { < ListInsideCrdByApiGroupPage  inside  /> } 
69+         /> 
70+         < Route 
71+           path = { `${ prefix }  /inside/:clusterName/:namespace?/apis-by-api/:apiGroup/:apiVersion/` } 
72+           element = { < ListInsideApiByApiGroupPage  inside  /> } 
73+         /> 
74+         < Route 
75+           path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/crd-table/:apiGroup/:apiVersion/:apiExtensionVersion/:crdName` } 
76+           element = { < TableCrdPage  /> } 
77+         /> 
78+         < Route 
79+           path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/api-table/:apiGroup/:apiVersion/:typeName` } 
80+           element = { < TableApiPage  /> } 
81+         /> 
82+         < Route 
83+           path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/builtin-table/:typeName` } 
84+           element = { < TableBuiltinPage  /> } 
85+         /> 
86+         < Route 
87+           path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/forms/builtin/:apiVersion/:typeName/:entryName?/` } 
88+           element = { < FormBuiltinPage  /> } 
89+         /> 
90+         < Route 
91+           path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/forms/apis/:apiGroup/:apiVersion/:typeName/:entryName?/` } 
92+           element = { < FormApiPage  /> } 
93+         /> 
94+         < Route 
95+           path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/forms/crds/:apiGroup/:apiVersion/:typeName/:entryName?/` } 
96+           element = { < FormCrdPage  /> } 
97+         /> 
98+         < Route 
99+           path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/crd-table/:apiGroup/:apiVersion/:apiExtensionVersion/:crdName` } 
100+           element = { < TableCrdPage  inside  /> } 
101+         /> 
102+         < Route 
103+           path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/api-table/:apiGroup/:apiVersion/:typeName` } 
104+           element = { < TableApiPage  inside  /> } 
105+         /> 
106+         < Route 
107+           path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/builtin-table/:typeName` } 
108+           element = { < TableBuiltinPage  inside  /> } 
109+         /> 
110+         < Route 
111+           path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/forms/builtin/:apiVersion/:typeName/:entryName?/` } 
112+           element = { < FormBuiltinPage  inside  /> } 
113+         /> 
114+         < Route 
115+           path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/forms/apis/:apiGroup/:apiVersion/:typeName/:entryName?/` } 
116+           element = { < FormApiPage  inside  /> } 
117+         /> 
118+         < Route 
119+           path = { `${ prefix }  /inside/:clusterName/:namespace?/:syntheticProject?/forms/crds/:apiGroup/:apiVersion/:typeName/:entryName?/` } 
120+           element = { < FormCrdPage  inside  /> } 
121+         /> 
122+         < Route 
123+           path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/factory/:key/*` } 
124+           element = { < FactoryPage  /> } 
125+         /> 
126+         < Route  path = { `${ prefix }  /:clusterName/:namespace?/:syntheticProject?/search/*` }  element = { < SearchPage  /> }  /> 
127+         < Route  path = { `${ prefix }  /factory-admin/*` }  element = { < FactoryAdminPage  /> }  /> 
128+       </ Route > 
138129    </ Routes > 
139130  ) 
140131
0 commit comments