From 1d1cd10a0b1cc4227393cc75b736546c2e7c2fb4 Mon Sep 17 00:00:00 2001 From: karim Date: Wed, 20 May 2026 22:54:43 +0200 Subject: [PATCH] Oberleiste 2-Reihen-Block: Display|Kombi oben, Overrides|Masse unten MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User-Wunsch: Overrides unter Wireframe, Kombi neben Wireframe, gleiche Pill-Breiten + gleiche X-Achse, Boxen zusammenhaengend (kein Split zwischen Select und Gear), dunkler wie Elemente. Neue Komponente BarCombo: - Icon roh links (18px fixe Breite → X-Alignment zwischen Reihen) - iconClickable=true macht Icon zum Toggle-Button (fuer Overrides AN/AUS) - Combined pill: ein gemeinsamer Container (bg-input — dunkler statt bg-item) mit select + optional gear in einem nahtlosen Rahmen - Gear sitzt im selben Pill, kein border-left, transparent bg - Caret-Position verschoben (right 30px) wenn gear vorhanden — Caret bleibt innerhalb des sichtbaren Select-Bereichs Layout: - CSS Grid 2x2 mit fester Pill-Breite (PRESET_W = 150) - Reihe 1: Display | Kombi - Reihe 2: Overrides | Masse - Gleicher Spalten-Track in beiden Reihen → identische X-Positionen Entfernt: BarSelect/BarButton im Display/Masse/Overrides/Kombi-Pfad, alte Sektionen am Ende der Toolbar. BarButton bleibt fuer Camera + Zoom- Buttons + Print/Edit. View-Toggle bleibt segmented-pill am Anfang. Co-Authored-By: Claude Opus 4.7 --- src/OberleisteApp.jsx | 306 ++++++++++++++++++++++++++---------------- 1 file changed, 190 insertions(+), 116 deletions(-) diff --git a/src/OberleisteApp.jsx b/src/OberleisteApp.jsx index 3c3cf7e..8e77759 100644 --- a/src/OberleisteApp.jsx +++ b/src/OberleisteApp.jsx @@ -125,6 +125,83 @@ function BarSelect({ icon, value, onChange, title, disabled, width, children, jo ) } +// BarCombo: dunklerer (bg-input) Pill-Container der select + optional gear +// als EINE nahtlose Box rendert. Icon roh links daneben (kein Container). +// iconClickable=true macht das Icon zum Toggle-Button (Overrides etc.). +function BarCombo({ + icon, iconActive, iconClickable, onIconClick, iconTitle, + value, onChange, width, title, children, disabled, + onGear, gearTitle, +}) { + return ( +
+ {/* Icon links — fixe Breite fuer X-Axis-Alignment zwischen Reihen */} + {iconClickable ? ( + + ) : ( + + + + )} + {/* Combined pill: select + optional gear, gemeinsamer bg + border */} +
+ + {onGear && ( + + )} +
+
+ ) +} + // BarButton: pill-foermiger Icon-Button im selben Stil wie BarSelect. // joinedLeft = linke Kante flach (dockt rechts an einen BarSelect-joinedRight). function BarButton({ icon, onClick, title, disabled, active, joinedLeft }) { @@ -132,7 +209,7 @@ function BarButton({ icon, onClick, title, disabled, active, joinedLeft }) {