diff --git a/app/modules/cms/routes/pages/admin.py b/app/modules/cms/routes/pages/admin.py
index ac0d17d6..c49d5129 100644
--- a/app/modules/cms/routes/pages/admin.py
+++ b/app/modules/cms/routes/pages/admin.py
@@ -2,7 +2,8 @@
"""
CMS Admin Page Routes (HTML rendering).
-Admin pages for managing platform and store content pages.
+Admin pages for managing platform and store content pages,
+and store theme customization.
"""
from fastapi import APIRouter, Depends, Path, Request
@@ -10,6 +11,7 @@ from fastapi.responses import HTMLResponse
from sqlalchemy.orm import Session
from app.api.deps import get_db, require_menu_access
+from app.modules.core.utils.page_context import get_admin_context
from app.modules.enums import FrontendType
from app.modules.tenancy.models import User
from app.templates_config import templates
@@ -86,3 +88,49 @@ async def admin_content_page_edit(
"page_id": page_id,
},
)
+
+
+# ============================================================================
+# STORE THEMES
+# ============================================================================
+
+
+@router.get("/store-themes", response_class=HTMLResponse, include_in_schema=False)
+async def admin_store_themes_page(
+ request: Request,
+ current_user: User = Depends(
+ require_menu_access("store-themes", FrontendType.ADMIN)
+ ),
+ db: Session = Depends(get_db),
+):
+ """
+ Render store themes selection page.
+ Allows admins to select a store to customize their theme.
+ """
+ return templates.TemplateResponse(
+ "cms/admin/store-themes.html",
+ get_admin_context(request, db, current_user),
+ )
+
+
+@router.get(
+ "/stores/{store_code}/theme",
+ response_class=HTMLResponse,
+ include_in_schema=False,
+)
+async def admin_store_theme_page(
+ request: Request,
+ store_code: str = Path(..., description="Store code"),
+ current_user: User = Depends(
+ require_menu_access("store-themes", FrontendType.ADMIN)
+ ),
+ db: Session = Depends(get_db),
+):
+ """
+ Render store theme customization page.
+ Allows admins to customize colors, fonts, layout, and branding.
+ """
+ return templates.TemplateResponse(
+ "cms/admin/store-theme.html",
+ get_admin_context(request, db, current_user, store_code=store_code),
+ )
diff --git a/app/modules/tenancy/static/admin/js/store-theme.js b/app/modules/cms/static/admin/js/store-theme.js
similarity index 100%
rename from app/modules/tenancy/static/admin/js/store-theme.js
rename to app/modules/cms/static/admin/js/store-theme.js
diff --git a/app/modules/tenancy/static/admin/js/store-themes.js b/app/modules/cms/static/admin/js/store-themes.js
similarity index 100%
rename from app/modules/tenancy/static/admin/js/store-themes.js
rename to app/modules/cms/static/admin/js/store-themes.js
diff --git a/app/modules/tenancy/templates/tenancy/admin/store-theme.html b/app/modules/cms/templates/cms/admin/store-theme.html
similarity index 99%
rename from app/modules/tenancy/templates/tenancy/admin/store-theme.html
rename to app/modules/cms/templates/cms/admin/store-theme.html
index f159e770..d43caced 100644
--- a/app/modules/tenancy/templates/tenancy/admin/store-theme.html
+++ b/app/modules/cms/templates/cms/admin/store-theme.html
@@ -459,5 +459,5 @@
{% endblock %}
{% block extra_scripts %}
-
+
{% endblock %}
diff --git a/app/modules/tenancy/templates/tenancy/admin/store-themes.html b/app/modules/cms/templates/cms/admin/store-themes.html
similarity index 98%
rename from app/modules/tenancy/templates/tenancy/admin/store-themes.html
rename to app/modules/cms/templates/cms/admin/store-themes.html
index 875e13e5..40177648 100644
--- a/app/modules/tenancy/templates/tenancy/admin/store-themes.html
+++ b/app/modules/cms/templates/cms/admin/store-themes.html
@@ -125,5 +125,5 @@
{% block extra_scripts %}
-
+
{% endblock %}
diff --git a/app/modules/tenancy/routes/pages/admin.py b/app/modules/tenancy/routes/pages/admin.py
index 1ac6a178..e5f2134a 100644
--- a/app/modules/tenancy/routes/pages/admin.py
+++ b/app/modules/tenancy/routes/pages/admin.py
@@ -243,52 +243,6 @@ async def admin_store_roles_page(
)
-# ============================================================================
-# STORE THEMES ROUTES
-# ============================================================================
-
-
-@router.get("/store-themes", response_class=HTMLResponse, include_in_schema=False)
-async def admin_store_themes_page(
- request: Request,
- current_user: User = Depends(
- require_menu_access("store-themes", FrontendType.ADMIN)
- ),
- db: Session = Depends(get_db),
-):
- """
- Render store themes selection page.
- Allows admins to select a store to customize their theme.
- """
- return templates.TemplateResponse(
- "tenancy/admin/store-themes.html",
- get_admin_context(request, db, current_user),
- )
-
-
-@router.get(
- "/stores/{store_code}/theme",
- response_class=HTMLResponse,
- include_in_schema=False,
-)
-async def admin_store_theme_page(
- request: Request,
- store_code: str = Path(..., description="Store code"),
- current_user: User = Depends(
- require_menu_access("store-themes", FrontendType.ADMIN)
- ),
- db: Session = Depends(get_db),
-):
- """
- Render store theme customization page.
- Allows admins to customize colors, fonts, layout, and branding.
- """
- return templates.TemplateResponse(
- "tenancy/admin/store-theme.html",
- get_admin_context(request, db, current_user, store_code=store_code),
- )
-
-
# ============================================================================
# MERCHANT USER MANAGEMENT ROUTES (All Admins)
# ============================================================================
diff --git a/docs/proposals/cms-redesign-alignment.md b/docs/proposals/cms-redesign-alignment.md
index 5a09cf73..d480f3c3 100644
--- a/docs/proposals/cms-redesign-alignment.md
+++ b/docs/proposals/cms-redesign-alignment.md
@@ -242,7 +242,7 @@ This proposal covers the CMS foundation. The broader [storefront builder vision]
| Section partials | `app/modules/cms/templates/cms/platform/sections/_*.html` |
| CMS definition (admin menu) | `app/modules/cms/definition.py` |
| Tenancy definition (admin menu) | `app/modules/tenancy/definition.py` |
-| Store theme page | `app/modules/tenancy/templates/tenancy/admin/store-theme.html` |
+| Store theme page | `app/modules/cms/templates/cms/admin/store-theme.html` |
| Store themes list | `app/modules/cms/templates/cms/admin/store-themes.html` |
| Storefront landing templates | `app/modules/cms/templates/cms/storefront/landing-*.html` |
| Seed data | `scripts/seed/create_default_content_pages.py` |