fix(quick-260916-dyv): Mindestgroessen inhaltsgetrieben (kleinste bedienbare Kachel je Typ), gespeicherte Minima ueberschrieben, Stoppuhr-Bedienleiste kompakt
- WIDGET_CONSTRAINTS: Minima aus dem Innenaufbau gerechnet (clock 2/2, search 6/2, calendar 3/3, note 4/4, calculator 3/9, favorites 3/3, link 3/2, stopwatch 4/3), Vorgaben unveraendert; Test A pinnt alle 32 Werte per toEqual - dashboard-grid.tsx: effectiveLayouts (useMemo) ueberschreibt minW/minH jedes gespeicherten Eintrags in jedem Breakpoint aus den Konstanten und hebt zu kleine w/h auf das Minimum an — RGL 2.2.3 nimmt gespeicherte Eintraege woertlich (synchronizeLayoutWithChildren) und liest data-grid nur ohne Eintrag - dashboard-grid.test.tsx: Test 5 angepasst, Test 9 (Ueberschreibung je Breakpoint, unbekannter Typ unveraendert) und Test 9b (h 8 -> 9, w >= minW bleibt) - stopwatch-widget.tsx: Bedienleiste px-2 py-1 text-xs, Zeile gap-1 py-1, damit Stop + Runde + Reset in 4 Spalten passen und die Kachel auf 4x3 schrumpfen kann Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018N9CD3ebPKm1b32bPpBknY
This commit is contained in:
@@ -200,14 +200,17 @@ export function StopwatchWidget({ instanceId, config, isEditMode: _isEditMode }:
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{/* Controls */}
|
||||
<div className="flex items-center justify-center gap-2 py-2">
|
||||
{/* Controls
|
||||
quick-260916-dyv: kompakte Bedienleiste, damit die laufende Stoppuhr
|
||||
(Stop + Runde + Reset) in 4 Spalten passt (ca. 151 px statt ca. 222 px)
|
||||
und die Kachel auf 4x3 schrumpfen kann. */}
|
||||
<div className="flex items-center justify-center gap-1 py-1">
|
||||
{!isRunning ? (
|
||||
<button
|
||||
type="button"
|
||||
aria-label={t('stopwatch.start')}
|
||||
onClick={handleStart}
|
||||
className="rounded-md bg-primary px-4 py-1.5 text-sm font-medium text-primary-foreground hover:opacity-90 transition-opacity"
|
||||
className="rounded-md bg-primary px-2 py-1 text-xs font-medium text-primary-foreground hover:opacity-90 transition-opacity"
|
||||
>
|
||||
{t('stopwatch.start')}
|
||||
</button>
|
||||
@@ -217,7 +220,7 @@ export function StopwatchWidget({ instanceId, config, isEditMode: _isEditMode }:
|
||||
type="button"
|
||||
aria-label={t('stopwatch.stop')}
|
||||
onClick={handleStop}
|
||||
className="rounded-md bg-muted px-4 py-1.5 text-sm font-medium text-foreground hover:opacity-90 transition-opacity"
|
||||
className="rounded-md bg-muted px-2 py-1 text-xs font-medium text-foreground hover:opacity-90 transition-opacity"
|
||||
>
|
||||
{t('stopwatch.stop')}
|
||||
</button>
|
||||
@@ -225,7 +228,7 @@ export function StopwatchWidget({ instanceId, config, isEditMode: _isEditMode }:
|
||||
type="button"
|
||||
aria-label={t('stopwatch.lap')}
|
||||
onClick={handleLap}
|
||||
className="rounded-md bg-muted px-4 py-1.5 text-sm font-medium text-foreground hover:opacity-90 transition-opacity"
|
||||
className="rounded-md bg-muted px-2 py-1 text-xs font-medium text-foreground hover:opacity-90 transition-opacity"
|
||||
>
|
||||
{t('stopwatch.lap')}
|
||||
</button>
|
||||
@@ -235,7 +238,7 @@ export function StopwatchWidget({ instanceId, config, isEditMode: _isEditMode }:
|
||||
type="button"
|
||||
aria-label={t('stopwatch.reset')}
|
||||
onClick={handleReset}
|
||||
className="rounded-md border border-border px-4 py-1.5 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors"
|
||||
className="rounded-md border border-border px-2 py-1 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
{t('stopwatch.reset')}
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user