feat(merchant): extract merchant portal as first-class frontend with auth, Tailwind fixes, and Gitea CI
Some checks failed
CI / ruff (push) Has been cancelled
CI / pytest (push) Has been cancelled
CI / architecture (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / audit (push) Has been cancelled
CI / docs (push) Has been cancelled

- Extract login/dashboard from billing module into core (matching admin pattern)
- Add merchant auth API with path-isolated cookies (path=/merchants)
- Add merchant base layout with sidebar/header partials and Alpine.js init
- Add frontend detection and login redirect for MERCHANT type
- Wire merchant token in shared api-client.js (get/clear)
- Migrate billing templates to merchant base with dark mode support
- Fix Tailwind: rename shop→storefront in sources and config
- DRY Makefile tailwind targets with TAILWIND_FRONTENDS loop
- Rebuild all Tailwind outputs (production minified)
- Add Gitea Actions CI workflow (ruff, pytest, architecture, docs)
- Add Gitea deployment documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-11 20:25:29 +01:00
parent ecb5309879
commit 0437af67ec
31 changed files with 1925 additions and 780 deletions

View File

@@ -1,11 +1,11 @@
/* Tailwind CSS v4 - Shop Frontend Styles */
/* Tailwind CSS v4 - Storefront Styles */
/* Configuration is CSS-first in v4 */
@import "tailwindcss";
/* Source paths for content scanning */
@source "../../js/**/*.js";
@source "../../../app/templates/shop/**/*.html";
@source "../../../app/templates/storefront/**/*.html";
@source "../../../app/templates/shared/**/*.html";
/* Custom theme configuration */
@@ -198,7 +198,7 @@
}
}
/* Shop-specific component styles */
/* Storefront-specific component styles */
@layer components {
/* Form input styles */
.form-input,
@@ -242,13 +242,13 @@
@apply focus:ring-purple-400 focus:ring-offset-gray-800;
}
/* Shop-specific button using CSS variable for store theming */
.btn-shop-primary {
/* Storefront-specific button using CSS variable for store theming */
.btn-storefront-primary {
background-color: var(--color-primary, #7e3af2);
@apply text-white px-4 py-2 rounded-lg font-medium transition-all;
}
.btn-shop-primary:hover {
.btn-storefront-primary:hover {
filter: brightness(0.9);
}