AgentSkillsCN

mudblazor

为 Blazor WebAssembly 创建 Material Design UI 组件与触屏优化的界面。 适用于:在 VanDaemon 前端构建仪表盘页面、表单、数据表格、对话框,或任何 UI 组件时使用。

SKILL.md
--- frontmatter
name: mudblazor
description: |
  Creates Material Design UI components and touch-optimized interfaces for Blazor WebAssembly.
  Use when: building dashboard pages, forms, data tables, dialogs, or any UI component in VanDaemon's frontend.
allowed-tools: Read, Edit, Write, Glob, Grep, Bash

MudBlazor Skill

MudBlazor provides Material Design components for Blazor. VanDaemon uses MudBlazor 6.x for touch-optimized interfaces designed for mobile devices in camper van environments. Key patterns include real-time data binding with SignalR, responsive layouts, and dark/light theme support.

Quick Start

Basic Page Layout

razor
@page "/dashboard"
@inject HttpClient Http

<MudContainer MaxWidth="MaxWidth.Large" Class="mt-4">
    <MudPaper Class="pa-4">
        <MudText Typo="Typo.h4">Tank Levels</MudText>
        <MudGrid>
            @foreach (var tank in tanks)
            {
                <MudItem xs="12" sm="6" md="4">
                    <MudCard>
                        <MudCardContent>
                            <MudText>@tank.Name</MudText>
                            <MudProgressLinear Value="@tank.CurrentLevel" Color="Color.Primary" />
                        </MudCardContent>
                    </MudCard>
                </MudItem>
            }
        </MudGrid>
    </MudPaper>
</MudContainer>

Touch-Optimized Control

razor
<MudSwitch @bind-Value="@control.IsOn"
           Color="Color.Success"
           Size="Size.Large"
           Label="@control.Name"
           @onclick="() => ToggleControl(control.Id)" />

<MudSlider @bind-Value="@dimmerValue"
           Min="0" Max="255"
           Step="1"
           Color="Color.Primary"
           Size="Size.Large"
           ValueLabel="true"
           @onchange="() => UpdateDimmer()" />

Key Concepts

ComponentUse CaseSize Prop
MudSwitchToggle controls (lights, pump)Size.Large for touch
MudSliderDimmer controls (0-255)Size.Large for touch
MudProgressLinearTank level displayN/A
MudCardContent containersN/A
MudGrid/MudItemResponsive layoutxs, sm, md breakpoints
MudDialogConfirmations, settingsN/A

Common Patterns

Real-Time Data Binding

When: Displaying SignalR-updated values

razor
@code {
    private double tankLevel;

    protected override async Task OnInitializedAsync()
    {
        hubConnection.On<Guid, double, string>("TankLevelUpdated", (id, level, name) =>
        {
            tankLevel = level;
            InvokeAsync(StateHasChanged);  // Required for SignalR callbacks
        });
    }
}

Responsive Grid

When: Building dashboard layouts

razor
<MudGrid Spacing="3">
    <MudItem xs="12" sm="6" md="4" lg="3">
        <!-- Full width on mobile, half on tablet, quarter on desktop -->
    </MudItem>
</MudGrid>

See Also

  • patterns - Component patterns and anti-patterns
  • workflows - Form handling, theming, dialogs

Related Skills

  • See the blazor skill for component lifecycle and SignalR integration
  • See the signalr skill for real-time data updates
  • See the frontend-design skill for responsive design patterns