diff --git a/DeepDrftPublic.Client/Controls/AudioPlayerBar/AudioPlayerBar.razor b/DeepDrftPublic.Client/Controls/AudioPlayerBar/AudioPlayerBar.razor index a7b6bc0..e653de1 100644 --- a/DeepDrftPublic.Client/Controls/AudioPlayerBar/AudioPlayerBar.razor +++ b/DeepDrftPublic.Client/Controls/AudioPlayerBar/AudioPlayerBar.razor @@ -1,9 +1,7 @@ @if (_isMinimized) {
- +
} else diff --git a/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor b/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor index 5bd1fba..47a3b94 100644 --- a/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor +++ b/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor @@ -1,8 +1,7 @@ @namespace DeepDrftPublic.Client.Controls.AudioPlayerBar -
- -
+ diff --git a/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor.cs b/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor.cs index 6a04bcb..22b13e5 100644 --- a/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor.cs +++ b/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor.cs @@ -1,6 +1,5 @@ using DeepDrftPublic.Client.Services; using Microsoft.AspNetCore.Components; -using MudBlazor; namespace DeepDrftPublic.Client.Controls.AudioPlayerBar; @@ -11,8 +10,6 @@ public partial class LevelMeterFab : ComponentBase, IAsyncDisposable [CascadingParameter] public IStreamingPlayerService? PlayerService { get; set; } [Parameter] public EventCallback OnClick { get; set; } - [Parameter] public Size Size { get; set; } = Size.Large; - [Parameter] public Color Color { get; set; } = Color.Primary; // Level-data reduction tuning (see PLAN-level-meter-fab.md §2/§4). The three // band boundaries below are the spec contract; the attack/release coefficients diff --git a/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor.css b/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor.css index 63c706b..8b16e52 100644 --- a/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor.css +++ b/DeepDrftPublic.Client/Controls/AudioPlayerBar/LevelMeterFab.razor.css @@ -1,27 +1,48 @@ +/* Band color variables — tune here, applied everywhere below */ :root { - --lmf-green: #2ECC71; + --lmf-green: #2ECC71; --lmf-yellow: #F4C430; --lmf-orange: #FF6B35; } -/* The wrapper div is the isolation anchor; MudFab wraps the glyph in its own - markup, so the band tint reaches the rendered SVG via :deep(). currentColor - on the idle (no-band) state inherits MudFab's Color.Primary contrast text. */ -.lmf-root :deep(svg) { - transition: color 120ms ease-out; +/* Circular FAB matching MudFab Size.Large (56px) with MudBlazor primary palette */ +.lmf-fab-btn { + width: 56px; + height: 56px; + border-radius: 50%; + border: none; + cursor: pointer; + background-color: var(--mud-palette-primary); + color: var(--mud-palette-primary-text); + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0px 3px 5px -1px rgba(0,0,0,.2), + 0px 6px 10px 0px rgba(0,0,0,.14), + 0px 1px 18px 0px rgba(0,0,0,.12); + transition: box-shadow 150ms ease-out; + padding: 0; } -.lmf-green :deep(svg) { - color: var(--lmf-green); - filter: drop-shadow(0 0 6px rgba(46, 204, 113, 0.45)); +.lmf-fab-btn:hover { + box-shadow: 0px 7px 8px -4px rgba(0,0,0,.2), + 0px 12px 17px 2px rgba(0,0,0,.14), + 0px 5px 22px 4px rgba(0,0,0,.12); } -.lmf-yellow :deep(svg) { - color: var(--lmf-yellow); - filter: drop-shadow(0 0 6px rgba(244, 196, 48, 0.45)); +.lmf-fab-btn:focus-visible { + outline: 2px solid var(--mud-palette-primary); + outline-offset: 3px; } -.lmf-orange :deep(svg) { - color: var(--lmf-orange); - filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.45)); +/* The icon SVG — transitions on both color and glow */ +.lmf-icon { + width: 24px; + height: 24px; + transition: color 120ms ease-out, filter 120ms ease-out; } + +/* Band tints — applied directly to the SVG via fill="currentColor" */ +.lmf-green .lmf-icon { color: var(--lmf-green); filter: drop-shadow(0 0 6px rgba(46, 204, 113, 0.45)); } +.lmf-yellow .lmf-icon { color: var(--lmf-yellow); filter: drop-shadow(0 0 6px rgba(244, 196, 48, 0.45)); } +.lmf-orange .lmf-icon { color: var(--lmf-orange); filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.45)); }