feat: add dark mode, navigation, and Web Vitals tracking to marketplace

Backend:
- Simplify DatabaseConfig: remove effective_url property and project root finder
- Update to Pydantic v2 model_config (replace nested Config class)
- Add web_vitals router to main.py and __init__.py
- Fix ExplorerService datetime handling (ensure timezone-naive comparisons)
- Fix status_label extraction to handle both enum and string job states

Frontend (Marketplace):
- Add dark mode toggle with system preference detection
This commit is contained in:
oib
2026-02-15 19:02:51 +01:00
parent 72e21fd07f
commit 7062b2cc78
26 changed files with 1945 additions and 769 deletions

View File

@@ -95,6 +95,20 @@
gap: 1rem;
}
.site-header__back {
font-size: 0.85rem;
padding: 0.25rem 0.6rem;
border-radius: 999px;
border: 1px solid rgba(125, 196, 255, 0.3);
transition: background 150ms ease, border-color 150ms ease;
white-space: nowrap;
}
.site-header__back:hover {
background: rgba(125, 196, 255, 0.15);
border-color: rgba(125, 196, 255, 0.5);
}
.site-header__brand {
font-weight: 600;
font-size: 1.15rem;

View File

@@ -4,6 +4,7 @@ export function siteHeader(title: string): string {
return `
<header class="site-header">
<div class="site-header__inner">
<a class="site-header__back" href="/" title="Back to AITBC Home">← Home</a>
<a class="site-header__brand" href="${basePath}/">AITBC Explorer</a>
<div class="site-header__controls">
<div data-role="data-mode-toggle"></div>
@@ -14,6 +15,7 @@ export function siteHeader(title: string): string {
<a href="${basePath}/transactions">Transactions</a>
<a href="${basePath}/addresses">Addresses</a>
<a href="${basePath}/receipts">Receipts</a>
<a href="/marketplace/">Marketplace</a>
</nav>
</div>
</header>