feat(web): keep sidebar on blog & contact for logged-in users
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled

Sidebar linked /blog and /contact pointed at public marketing pages, so
clicking them dropped the user out of the dashboard shell. Extract page
content into shared components (blog-content, contact-content) and add
dashboard-wrapped routes /dashboard/blog, /dashboard/blog/$slug and
/dashboard/contact; sidebar now links to those. Public SEO pages stay
unchanged and remain the canonical URLs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-11 17:25:14 +03:00
parent 4a6e673af1
commit 3c9245bd8b
10 changed files with 499 additions and 353 deletions

View File

@@ -25,7 +25,9 @@ import { Route as DashboardSettingsRouteImport } from './routes/dashboard/settin
import { Route as DashboardServiceTestRouteImport } from './routes/dashboard/service-test'
import { Route as DashboardSearchRouteImport } from './routes/dashboard/search'
import { Route as DashboardHistoryRouteImport } from './routes/dashboard/history'
import { Route as DashboardContactRouteImport } from './routes/dashboard/contact'
import { Route as DashboardChangelogRouteImport } from './routes/dashboard/changelog'
import { Route as DashboardBlogRouteImport } from './routes/dashboard/blog'
import { Route as DashboardBillingRouteImport } from './routes/dashboard/billing'
import { Route as BlogSlugRouteImport } from './routes/blog_/$slug'
import { Route as AuthResetPasswordRouteImport } from './routes/_auth/reset-password'
@@ -38,6 +40,7 @@ import { Route as DashboardCatalogIndexRouteImport } from './routes/dashboard/ca
import { Route as DashboardAdminIndexRouteImport } from './routes/dashboard/admin/index'
import { Route as DemoCategoriesCategoryIdRouteImport } from './routes/demo_/categories_/$categoryId'
import { Route as DashboardOemCodeRouteImport } from './routes/dashboard/oem.$code'
import { Route as DashboardBlogSlugRouteImport } from './routes/dashboard/blog_/$slug'
import { Route as DashboardAdminUsersRouteImport } from './routes/dashboard/admin/users'
import { Route as DashboardAdminReferralsRouteImport } from './routes/dashboard/admin/referrals'
import { Route as DashboardAdminCopyLogsRouteImport } from './routes/dashboard/admin/copy-logs'
@@ -134,11 +137,21 @@ const DashboardHistoryRoute = DashboardHistoryRouteImport.update({
path: '/history',
getParentRoute: () => DashboardRoute,
} as any)
const DashboardContactRoute = DashboardContactRouteImport.update({
id: '/contact',
path: '/contact',
getParentRoute: () => DashboardRoute,
} as any)
const DashboardChangelogRoute = DashboardChangelogRouteImport.update({
id: '/changelog',
path: '/changelog',
getParentRoute: () => DashboardRoute,
} as any)
const DashboardBlogRoute = DashboardBlogRouteImport.update({
id: '/blog',
path: '/blog',
getParentRoute: () => DashboardRoute,
} as any)
const DashboardBillingRoute = DashboardBillingRouteImport.update({
id: '/billing',
path: '/billing',
@@ -201,6 +214,11 @@ const DashboardOemCodeRoute = DashboardOemCodeRouteImport.update({
path: '/oem/$code',
getParentRoute: () => DashboardRoute,
} as any)
const DashboardBlogSlugRoute = DashboardBlogSlugRouteImport.update({
id: '/blog_/$slug',
path: '/blog/$slug',
getParentRoute: () => DashboardRoute,
} as any)
const DashboardAdminUsersRoute = DashboardAdminUsersRouteImport.update({
id: '/admin/users',
path: '/admin/users',
@@ -312,7 +330,9 @@ export interface FileRoutesByFullPath {
'/reset-password': typeof AuthResetPasswordRoute
'/blog/$slug': typeof BlogSlugRoute
'/dashboard/billing': typeof DashboardBillingRoute
'/dashboard/blog': typeof DashboardBlogRoute
'/dashboard/changelog': typeof DashboardChangelogRoute
'/dashboard/contact': typeof DashboardContactRoute
'/dashboard/history': typeof DashboardHistoryRoute
'/dashboard/search': typeof DashboardSearchRoute
'/dashboard/service-test': typeof DashboardServiceTestRoute
@@ -322,6 +342,7 @@ export interface FileRoutesByFullPath {
'/dashboard/admin/copy-logs': typeof DashboardAdminCopyLogsRoute
'/dashboard/admin/referrals': typeof DashboardAdminReferralsRoute
'/dashboard/admin/users': typeof DashboardAdminUsersRoute
'/dashboard/blog/$slug': typeof DashboardBlogSlugRoute
'/dashboard/oem/$code': typeof DashboardOemCodeRoute
'/demo/categories/$categoryId': typeof DemoCategoriesCategoryIdRoute
'/dashboard/admin/': typeof DashboardAdminIndexRoute
@@ -357,7 +378,9 @@ export interface FileRoutesByTo {
'/reset-password': typeof AuthResetPasswordRoute
'/blog/$slug': typeof BlogSlugRoute
'/dashboard/billing': typeof DashboardBillingRoute
'/dashboard/blog': typeof DashboardBlogRoute
'/dashboard/changelog': typeof DashboardChangelogRoute
'/dashboard/contact': typeof DashboardContactRoute
'/dashboard/history': typeof DashboardHistoryRoute
'/dashboard/search': typeof DashboardSearchRoute
'/dashboard/service-test': typeof DashboardServiceTestRoute
@@ -367,6 +390,7 @@ export interface FileRoutesByTo {
'/dashboard/admin/copy-logs': typeof DashboardAdminCopyLogsRoute
'/dashboard/admin/referrals': typeof DashboardAdminReferralsRoute
'/dashboard/admin/users': typeof DashboardAdminUsersRoute
'/dashboard/blog/$slug': typeof DashboardBlogSlugRoute
'/dashboard/oem/$code': typeof DashboardOemCodeRoute
'/demo/categories/$categoryId': typeof DemoCategoriesCategoryIdRoute
'/dashboard/admin': typeof DashboardAdminIndexRoute
@@ -405,7 +429,9 @@ export interface FileRoutesById {
'/_auth/reset-password': typeof AuthResetPasswordRoute
'/blog_/$slug': typeof BlogSlugRoute
'/dashboard/billing': typeof DashboardBillingRoute
'/dashboard/blog': typeof DashboardBlogRoute
'/dashboard/changelog': typeof DashboardChangelogRoute
'/dashboard/contact': typeof DashboardContactRoute
'/dashboard/history': typeof DashboardHistoryRoute
'/dashboard/search': typeof DashboardSearchRoute
'/dashboard/service-test': typeof DashboardServiceTestRoute
@@ -415,6 +441,7 @@ export interface FileRoutesById {
'/dashboard/admin/copy-logs': typeof DashboardAdminCopyLogsRoute
'/dashboard/admin/referrals': typeof DashboardAdminReferralsRoute
'/dashboard/admin/users': typeof DashboardAdminUsersRoute
'/dashboard/blog_/$slug': typeof DashboardBlogSlugRoute
'/dashboard/oem/$code': typeof DashboardOemCodeRoute
'/demo_/categories_/$categoryId': typeof DemoCategoriesCategoryIdRoute
'/dashboard/admin/': typeof DashboardAdminIndexRoute
@@ -453,7 +480,9 @@ export interface FileRouteTypes {
| '/reset-password'
| '/blog/$slug'
| '/dashboard/billing'
| '/dashboard/blog'
| '/dashboard/changelog'
| '/dashboard/contact'
| '/dashboard/history'
| '/dashboard/search'
| '/dashboard/service-test'
@@ -463,6 +492,7 @@ export interface FileRouteTypes {
| '/dashboard/admin/copy-logs'
| '/dashboard/admin/referrals'
| '/dashboard/admin/users'
| '/dashboard/blog/$slug'
| '/dashboard/oem/$code'
| '/demo/categories/$categoryId'
| '/dashboard/admin/'
@@ -498,7 +528,9 @@ export interface FileRouteTypes {
| '/reset-password'
| '/blog/$slug'
| '/dashboard/billing'
| '/dashboard/blog'
| '/dashboard/changelog'
| '/dashboard/contact'
| '/dashboard/history'
| '/dashboard/search'
| '/dashboard/service-test'
@@ -508,6 +540,7 @@ export interface FileRouteTypes {
| '/dashboard/admin/copy-logs'
| '/dashboard/admin/referrals'
| '/dashboard/admin/users'
| '/dashboard/blog/$slug'
| '/dashboard/oem/$code'
| '/demo/categories/$categoryId'
| '/dashboard/admin'
@@ -545,7 +578,9 @@ export interface FileRouteTypes {
| '/_auth/reset-password'
| '/blog_/$slug'
| '/dashboard/billing'
| '/dashboard/blog'
| '/dashboard/changelog'
| '/dashboard/contact'
| '/dashboard/history'
| '/dashboard/search'
| '/dashboard/service-test'
@@ -555,6 +590,7 @@ export interface FileRouteTypes {
| '/dashboard/admin/copy-logs'
| '/dashboard/admin/referrals'
| '/dashboard/admin/users'
| '/dashboard/blog_/$slug'
| '/dashboard/oem/$code'
| '/demo_/categories_/$categoryId'
| '/dashboard/admin/'
@@ -704,6 +740,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof DashboardHistoryRouteImport
parentRoute: typeof DashboardRoute
}
'/dashboard/contact': {
id: '/dashboard/contact'
path: '/contact'
fullPath: '/dashboard/contact'
preLoaderRoute: typeof DashboardContactRouteImport
parentRoute: typeof DashboardRoute
}
'/dashboard/changelog': {
id: '/dashboard/changelog'
path: '/changelog'
@@ -711,6 +754,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof DashboardChangelogRouteImport
parentRoute: typeof DashboardRoute
}
'/dashboard/blog': {
id: '/dashboard/blog'
path: '/blog'
fullPath: '/dashboard/blog'
preLoaderRoute: typeof DashboardBlogRouteImport
parentRoute: typeof DashboardRoute
}
'/dashboard/billing': {
id: '/dashboard/billing'
path: '/billing'
@@ -795,6 +845,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof DashboardOemCodeRouteImport
parentRoute: typeof DashboardRoute
}
'/dashboard/blog_/$slug': {
id: '/dashboard/blog_/$slug'
path: '/blog/$slug'
fullPath: '/dashboard/blog/$slug'
preLoaderRoute: typeof DashboardBlogSlugRouteImport
parentRoute: typeof DashboardRoute
}
'/dashboard/admin/users': {
id: '/dashboard/admin/users'
path: '/admin/users'
@@ -930,7 +987,9 @@ const AuthRouteWithChildren = AuthRoute._addFileChildren(AuthRouteChildren)
interface DashboardRouteChildren {
DashboardBillingRoute: typeof DashboardBillingRoute
DashboardBlogRoute: typeof DashboardBlogRoute
DashboardChangelogRoute: typeof DashboardChangelogRoute
DashboardContactRoute: typeof DashboardContactRoute
DashboardHistoryRoute: typeof DashboardHistoryRoute
DashboardSearchRoute: typeof DashboardSearchRoute
DashboardServiceTestRoute: typeof DashboardServiceTestRoute
@@ -940,6 +999,7 @@ interface DashboardRouteChildren {
DashboardAdminCopyLogsRoute: typeof DashboardAdminCopyLogsRoute
DashboardAdminReferralsRoute: typeof DashboardAdminReferralsRoute
DashboardAdminUsersRoute: typeof DashboardAdminUsersRoute
DashboardBlogSlugRoute: typeof DashboardBlogSlugRoute
DashboardOemCodeRoute: typeof DashboardOemCodeRoute
DashboardAdminIndexRoute: typeof DashboardAdminIndexRoute
DashboardCatalogIndexRoute: typeof DashboardCatalogIndexRoute
@@ -960,7 +1020,9 @@ interface DashboardRouteChildren {
const DashboardRouteChildren: DashboardRouteChildren = {
DashboardBillingRoute: DashboardBillingRoute,
DashboardBlogRoute: DashboardBlogRoute,
DashboardChangelogRoute: DashboardChangelogRoute,
DashboardContactRoute: DashboardContactRoute,
DashboardHistoryRoute: DashboardHistoryRoute,
DashboardSearchRoute: DashboardSearchRoute,
DashboardServiceTestRoute: DashboardServiceTestRoute,
@@ -970,6 +1032,7 @@ const DashboardRouteChildren: DashboardRouteChildren = {
DashboardAdminCopyLogsRoute: DashboardAdminCopyLogsRoute,
DashboardAdminReferralsRoute: DashboardAdminReferralsRoute,
DashboardAdminUsersRoute: DashboardAdminUsersRoute,
DashboardBlogSlugRoute: DashboardBlogSlugRoute,
DashboardOemCodeRoute: DashboardOemCodeRoute,
DashboardAdminIndexRoute: DashboardAdminIndexRoute,
DashboardCatalogIndexRoute: DashboardCatalogIndexRoute,