1 Commits
Author SHA1 Message Date
Lago ab41dd927e Remove public emoji UI and unify booking accent 2026-07-11 12:43:42 +02:00
8 changed files with 90 additions and 13 deletions
+10
View File
@@ -2,6 +2,16 @@
A compact field guide for anyone (human or AI) making changes to this stack. Skim this first.
## 0. Operating mode for agents
When working in this repository, act as an orchestrator rather than a single-threaded implementer:
1. Always make a short plan before changing code or configuration.
2. Delegate both targeted exploration and targeted implementation work to local models when available; the current default is Qwen 3.6 27B.
3. Do not treat delegation as optional for substantive work: research, code changes, refactors, and test updates should be routed through an agent first, then reviewed by the orchestrator.
4. Review delegated output critically, then apply, refine, or reject the result yourself.
5. Keep final responsibility for correctness, verification, and repo consistency in the orchestrating agent.
---
## 1. The deployment model
+5 -1
View File
@@ -54,7 +54,11 @@
<img class="logo-icon" src="/images/MC-Cars-Logo.svg" alt="MC Cars Logo" onerror="this.style.display='none'" />
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="/#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
<a href="/#stimmen" data-i18n="navReviews">Stimmen</a>
+5 -1
View File
@@ -51,7 +51,11 @@
<img class="logo-icon" src="/images/MC-Cars-Logo.svg" alt="MC Cars Logo" onerror="this.style.display='none'" />
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="/#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
<a href="/#stimmen" data-i18n="navReviews">Stimmen</a>
+5 -1
View File
@@ -51,7 +51,11 @@
<img class="logo-icon" src="/images/MC-Cars-Logo.svg" alt="MC Cars Logo" onerror="this.style.display='none'" />
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="/#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
<a href="/#stimmen" data-i18n="navReviews">Stimmen</a>
+22 -6
View File
@@ -109,7 +109,11 @@
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
@@ -214,7 +218,7 @@
<div class="bpf-main">
<!-- Step 1: Vehicle & Time -->
<div class="bpf-panel" id="bpfStep1">
<h3 class="bpf-panel-title">🚗 <span data-i18n="stepVehicleTime">Fahrzeug & Zeitraum</span></h3>
<h3 class="bpf-panel-title"><span data-i18n="stepVehicleTime">Fahrzeug & Zeitraum</span></h3>
<div class="bpf-field">
<label for="bpfCar" id="bpfCarLabel" data-i18n="bpfVehicle">Fahrzeug</label>
@@ -282,7 +286,7 @@
<!-- Step 2: Contact -->
<div class="bpf-panel" id="bpfStep2" style="display:none;">
<h3 class="bpf-panel-title">📋 <span data-i18n="stepContact">Kontaktdaten</span></h3>
<h3 class="bpf-panel-title"><span data-i18n="stepContact">Kontaktdaten</span></h3>
<div class="bpf-field">
<label data-i18n="fieldName">Name</label>
@@ -311,13 +315,19 @@
<!-- Step 3: ID Verification -->
<div class="bpf-panel" id="bpfStep3" style="display:none;">
<h3 class="bpf-panel-title">🔐 <span data-i18n="stepVerification">ID-Verifizierung</span></h3>
<h3 class="bpf-panel-title"><span data-i18n="stepVerification">ID-Verifizierung</span></h3>
<p class="muted" style="margin-bottom:1.5rem;">Bitte laden Sie einen gültigen Ausweis sowie einen aktuellen Lohnzettel / Gehaltsnachweis hoch.</p>
<div class="bpf-field">
<label data-i18n="bpfIdUpload">Ausweis / Führerschein *</label>
<div class="bpf-upload-box" id="uploadId">
<span class="bpf-upload-icon"></span>
<span class="bpf-upload-icon" aria-hidden="true">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 17V5"></path>
<path d="M7 10l5-5 5 5"></path>
<path d="M5 19h14"></path>
</svg>
</span>
<span data-i18n="bpfClickUpload">Klicken zum Hochladen</span>
<span class="muted" data-i18n="bpfUploadHint">PDF, JPG, PNG (max. 10 MB)</span>
<input type="file" accept="image/*,.pdf" class="bpf-file-input" id="bpfFileId" />
@@ -328,7 +338,13 @@
<div class="bpf-field">
<label data-i18n="bpfIncomeUpload">Lohnzettel / Gehaltsnachweis (optional)</label>
<div class="bpf-upload-box" id="uploadIncome">
<span class="bpf-upload-icon"></span>
<span class="bpf-upload-icon" aria-hidden="true">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 17V5"></path>
<path d="M7 10l5-5 5 5"></path>
<path d="M5 19h14"></path>
</svg>
</span>
<span data-i18n="bpfClickUpload">Klicken zum Hochladen</span>
<span class="muted" data-i18n="bpfUploadHint">PDF, JPG, PNG (max. 10 MB)</span>
<input type="file" accept="image/*,.pdf" class="bpf-file-input" id="bpfFileIncome" />
+5 -1
View File
@@ -54,7 +54,11 @@
<img class="logo-icon" src="/images/MC-Cars-Logo.svg" alt="MC Cars Logo" onerror="this.style.display='none'" />
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="/#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
<a href="/#stimmen" data-i18n="navReviews">Stimmen</a>
+28 -3
View File
@@ -189,8 +189,20 @@ section { padding: 5rem 0; }
border: 1px solid var(--line);
color: var(--text);
border-radius: 8px;
padding: 0.4rem 0.75rem;
padding: 0.55rem 0.65rem;
cursor: pointer;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 0.22rem;
}
.menu-toggle-bar {
display: block;
width: 1rem;
height: 2px;
border-radius: 999px;
background: currentColor;
}
/* ---------------- Buttons ---------------- */
@@ -806,12 +818,20 @@ select:focus, input:focus, textarea:focus {
background: var(--accent); color: #0b0c10; border-color: var(--accent);
font-weight: 600;
}
.bpf-step.done { border-color: var(--ok); color: var(--ok); }
.bpf-step.done {
border-color: rgba(196, 138, 66, 0.65);
background: rgba(196, 138, 66, 0.06);
color: var(--accent-strong);
}
.bpf-step-num {
display: inline-grid; place-items: center;
width: 1.5rem; height: 1.5rem; border-radius: 50%;
background: rgba(255,255,255,0.1); font-size: 0.75rem; font-weight: 700;
}
.bpf-step.done .bpf-step-num {
background: rgba(196, 138, 66, 0.16);
color: var(--accent-strong);
}
.bpf-step.active .bpf-step-num { background: rgba(0,0,0,0.2); color: #0b0c10; }
.bpf-step-arrow { color: var(--muted); font-size: 1.2rem; }
@@ -867,7 +887,12 @@ select:focus, input:focus, textarea:focus {
min-height: 120px;
}
.bpf-upload-box:hover { border-color: var(--accent); background: rgba(196,138,66,0.04); }
.bpf-upload-icon { font-size: 1.5rem; }
.bpf-upload-icon {
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--accent-strong);
}
.bpf-file-input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.bpf-file-name { font-size: 0.82rem; color: var(--ok); margin-top: 0.3rem; min-height: 1.2rem; }
+10
View File
@@ -73,6 +73,10 @@ test.describe('Booking Flow End-to-End', () => {
await page.locator('#bpfNext1').click();
await page.waitForTimeout(300);
const completedStep = page.locator('.bpf-step[data-step="1"]');
await expect(completedStep).toHaveClass(/done/);
expect(await completedStep.evaluate((el) => getComputedStyle(el).color)).toBe('rgb(224, 165, 91)');
// Step 2: Fill contact info
await expect(page.locator('#bpfName')).toBeVisible();
await page.locator('#bpfName').fill(testNames[index]);
@@ -101,6 +105,12 @@ test.describe('Booking Flow End-to-End', () => {
await page.waitForLoadState('domcontentloaded');
await page.waitForTimeout(2000);
const panelTitles = await page.locator('.bpf-panel-title').allTextContents();
for (const title of panelTitles) {
expect(title).not.toMatch(/[🚗📋🔐⬆☰]/u);
}
await expect(page.locator('.bpf-upload-icon svg')).toHaveCount(2);
// Booking 1: 1 Tag
await submitBooking(page, 'day', 0);