@@ -428,8 +427,8 @@ export default function OberleisteApp() {
height: BAR_H, width: 100,
background: 'var(--bg-input)',
border: '1px solid var(--border-light)',
- borderRadius: 4,
- padding: '0 8px', fontSize: 11,
+ borderRadius: 999,
+ padding: '0 12px', fontSize: 11,
fontFamily: 'DM Mono, monospace',
color: 'var(--text-primary)', outline: 'none',
}}
@@ -478,113 +477,166 @@ export default function OberleisteApp() {
{/* ====== STACK: Overrides + Kombi uebereinander ======
Beide Zeilen haben identisches Spalten-Layout (Label-Spalte fix,
Dropdown gleich breit), damit Dropdowns vertikal aligned sind. */}
- {(() => {
- const STACK_LABEL_W = 60 // gleich breit fuer beide Zeilen
- const STACK_DROPDOWN_W = 150
- const stackLabel = { ...groupLabel, width: STACK_LABEL_W,
- padding: 0, textAlign: 'left' }
- return (
-
- {/* Overrides */}
-
- Overrides
- toggleOverrides(!state.overridesEnabled)}
- active={state.overridesEnabled}
- icon="auto_fix_high"
- label={state.overridesEnabled ? 'AN' : 'AUS'}
- title={state.overridesEnabled
- ? `Grafische Overrides aktiv — klick zum Ausschalten`
- : `Grafische Overrides ausgeschaltet`}
- />
- {
- const v = e.target.value
- if (v === '__configure__') { openOverridesPanel(); return }
- setOverridesPreset(v === '__none__' ? null : v)
- }}
- style={{ ...pillSelect, width: STACK_DROPDOWN_W }}
- title={state.overridesActivePreset
- ? `Aktives Preset: ${state.overridesActivePreset} (${state.overridesCount} Regeln)`
- : `Kein Preset aktiv (${state.overridesCount} Regeln, frei editiert)`}
- >
- {state.overridesCount > 0 ? `— (${state.overridesCount} Regeln)` : '—'}
- {(state.overridesPresets || []).map(name => (
- {name}
- ))}
- ──────────
- Konfigurieren…
-
-
-
- {/* Kombi */}
-
- Kombi
- {
- const suggested = state.layerCombinationActive
- || `Kombi ${(state.layerCombinations || []).length + 1}`
- const name = (window.prompt('Name für Ebenenkombination:', suggested) || '').trim()
- if (!name) return
- if ((state.layerCombinations || []).includes(name) &&
- !window.confirm(`"${name}" überschreiben?`)) return
- saveLayerCombination(name)
- }}
- icon="add"
- title="Aktuelle Sichtbarkeit als neue Kombination speichern"
- />
- {
- const v = e.target.value
- if (v === '__configure__') { openLayerCombinationsDialog(); return }
- if (v === '__delete__') {
- if (state.layerCombinationActive &&
- window.confirm(`Kombination "${state.layerCombinationActive}" löschen?`))
- deleteLayerCombination(state.layerCombinationActive)
- return
- }
- pickLayerCombination(v === '__none__' ? null : v)
- }}
- style={{ ...pillSelect, width: STACK_DROPDOWN_W }}
- title={state.layerCombinationActive
- ? `Aktive Kombi: ${state.layerCombinationActive}`
- : 'Keine Kombination — manuelle Sichtbarkeit'}
- >
- — Eigene —
- {(state.layerCombinations || []).map(name => (
- {name}
- ))}
- {state.layerCombinationActive && (
- <>
- ──────────
- 🗑 Aktuelle löschen
- >
- )}
- ──────────
- Bearbeiten…
-
-
-
-
- )
- })()}
+ {/* ====== OVERRIDES ====== */}
+
toggleOverrides(!state.overridesEnabled)}
+ title={state.overridesEnabled
+ ? 'Grafische Overrides aktiv — klick zum Ausschalten'
+ : 'Grafische Overrides ausgeschaltet'}
+ />
+ {
+ if (v === '__configure__') { openOverridesPanel(); return }
+ setOverridesPreset(v === '__none__' ? null : v)
+ }}
+ title={state.overridesActivePreset
+ ? `Aktives Preset: ${state.overridesActivePreset} (${state.overridesCount} Regeln)`
+ : `Kein Preset aktiv (${state.overridesCount} Regeln, frei editiert)`}
+ width={140}
+ joinedRight
+ >
+ {state.overridesCount > 0 ? `— (${state.overridesCount} Regeln)` : '—'}
+ {(state.overridesPresets || []).map(name => (
+ {name}
+ ))}
+ ──────────
+ Konfigurieren…
+
+
+
+
+
+ {/* ====== EBENEN-KOMBINATIONEN ====== */}
+ {
+ if (v === '__configure__') { openLayerCombinationsDialog(); return }
+ if (v === '__save__') {
+ const suggested = state.layerCombinationActive
+ || `Kombi ${(state.layerCombinations || []).length + 1}`
+ const name = (window.prompt('Name für Ebenenkombination:', suggested) || '').trim()
+ if (!name) return
+ if ((state.layerCombinations || []).includes(name) &&
+ !window.confirm(`"${name}" überschreiben?`)) return
+ saveLayerCombination(name)
+ return
+ }
+ if (v === '__delete__') {
+ if (state.layerCombinationActive &&
+ window.confirm(`Kombination "${state.layerCombinationActive}" löschen?`))
+ deleteLayerCombination(state.layerCombinationActive)
+ return
+ }
+ pickLayerCombination(v === '__none__' ? null : v)
+ }}
+ title={state.layerCombinationActive
+ ? `Aktive Kombi: ${state.layerCombinationActive}`
+ : 'Keine Kombination — manuelle Sichtbarkeit'}
+ width={150}
+ joinedRight
+ >
+ — Eigene —
+ {(state.layerCombinations || []).map(name => (
+ {name}
+ ))}
+ ──────────
+ + Aktuelle speichern…
+ {state.layerCombinationActive && (
+ 🗑 Aktuelle löschen
+ )}
+ Bearbeiten…
+
+
{/* Spacer am rechten Rand */}
+ {aboutOpen && (
+