MR
Mayur Rathi
@github
⭐ 34.1k GitHub stars

Fluentui-Blazor

Fluentui-Blazor是一款code方向的AI技能,核心价值是>,可用于解决开发者在code领域的实际问题,帮助用户提升效率、自动化重复任务或优化工作流。

>

Last verified on: 2026-05-30
mkdir -p ./skills/fluentui-blazor && curl -sfL https://raw.githubusercontent.com/github/awesome-copilot/main/skills/fluentui-blazor/SKILL.md -o ./skills/fluentui-blazor/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# Fluent UI Blazor — Consumer Usage Guide


This skill teaches how to correctly use the **Microsoft.FluentUI.AspNetCore.Components** (version 4) NuGet package in Blazor applications.


Critical Rules


1. No manual `<script>` or `<link>` tags needed


The library auto-loads all CSS and JS via Blazor's static web assets and JS initializers. **Never tell users to add `<script>` or `<link>` tags for the core library.**


2. Providers are mandatory for service-based components


These provider components **MUST** be added to the root layout (e.g. `MainLayout.razor`) for their corresponding services to work. Without them, service calls **fail silently** (no error, no UI).


razor
<FluentToastProvider />
<FluentDialogProvider />
<FluentMessageBarProvider />
<FluentTooltipProvider />
<FluentKeyCodeProvider />

3. Service registration in Program.cs


csharp
builder.Services.AddFluentUIComponents();

// Or with configuration:
builder.Services.AddFluentUIComponents(options =>
{
    options.UseTooltipServiceProvider = true;  // default: true
    options.ServiceLifetime = ServiceLifetime.Scoped; // default
});

**ServiceLifetime rules:**

- `ServiceLifetime.Scoped` — for Blazor Server / Interactive (default)

- `ServiceLifetime.Singleton` — for Blazor WebAssembly standalone

- `ServiceLifetime.Transient` — **throws `NotSupportedException`**


4. Icons require a separate NuGet package


text
dotnet add package Microsoft.FluentUI.AspNetCore.Components.Icons

Usage with a `@using` alias:


razor
@using Icons = Microsoft.FluentUI.AspNetCore.Components.Icons

<FluentIcon Value="@(Icons.Regular.Size24.Save)" />
<FluentIcon Value="@(Icons.Filled.Size20.Delete)" Color="@Color.Error" />

Pattern: `Icons.[Variant].[Size].[Name]`

- Variants: `Regular`, `Filled`

- Sizes: `Size12`, `Size16`, `Size20`, `Size24`, `Size28`, `Size32`, `Size48`


Custom image: `Icon.FromImageUrl("/path/to/image.png")`


**Never use string-based icon names** — icons are strongly-typed classes.


5. List component binding model


`FluentSelect<TOption>`, `FluentCombobox<TOption>`, `FluentListbox<TOption>`, and `FluentAutocomplete<TOption>` do NOT work like `<InputSelect>`. They use:


- `Items` — the data source (`IEnumerable<TOption>`)

- `OptionText` — `Func<TOption, string?>` to extract display text

- `OptionValue` — `Func<TOption, string?>` to extract the value string

- `SelectedOption` / `SelectedOptionChanged` — for single selection binding

- `SelectedOptions` / `SelectedOptionsChanged` — for multi-selection binding


razor
<FluentSelect Items="@countries"
              OptionText="@(c => c.Name)"
              OptionValue="@(c => c.Code)"
              @bind-SelectedOption="@selectedCountry"
              Label="Country" />

**NOT** like this (wrong pattern):

razor
@* WRONG — do not use InputSelect pattern *@
<FluentSelect @bind-Value="@selectedValue">
    <option value="1">One</option>
</FluentSelect>

6. FluentAutocomplete specifics


- Use `ValueText` (NOT `Value` — it's obsolete) for the search input text

- `OnOptionsSearch` is the required callback to filter options

- Default is `Multiple="true"`


razor
<FluentAutocomplete TOption="Person"
                    OnOptionsSearch="@OnSearch"
                    OptionText="@(p => p.FullName)"
                    @bind-SelectedOptions="@selectedPeople"
                    Label="Search people" />

@code {
    private void OnSearch(OptionsSearchEventArgs<Person> args)
    {
        args.Items = allPeople.Where(p =>
            p.FullName.Contains(args.Text, StringComparison.OrdinalIgnoreCase));
    }
}

7. Dialog service pattern


**Do NOT toggle visibility of `<FluentDialog>` tags.** The service pattern is:


1. Create a content component implementing `IDialogContentComponent<TData>`:


csharp
public partial class EditPersonDialog : IDialogContentComponent<Person>
{
    [Parameter] public Person Content { get; set; } = default!;

    [CascadingParameter] public Flue

🎯 Best For

  • UI designers
  • Product designers
  • Claude users
  • GitHub Copilot users
  • Software engineers

💡 Use Cases

  • Generating component mockups
  • Creating design system tokens
  • Code quality improvement
  • Best practice enforcement

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude or GitHub Copilot and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Fluentui-Blazor to Your Work

    Open your project in the AI assistant and ask it to apply the skill. Start with a small module to verify the output quality.

  4. 4

    Review and Refine

    Review AI suggestions before committing. Run tests, check for regressions, and iterate on the skill output.

❓ Frequently Asked Questions

Does this work with Figma?

Some design skills integrate with Figma plugins. Check the Works With section for supported tools.

Is Fluentui-Blazor compatible with Cursor and VS Code?

Yes — this skill works with any AI coding assistant including Cursor, VS Code with Copilot, and JetBrains IDEs.

Do I need specific dependencies for Fluentui-Blazor?

Check the install command and Works With section. Most code skills only require the AI assistant and your codebase.

How do I install Fluentui-Blazor?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/fluentui-blazor/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Skipping usability testing

AI-generated designs should be validated with real users before development.

Skipping validation

Always test AI-generated code changes, even for simple refactors.

Missing dependency updates

Check if the skill requires updated dependencies or new packages.

🔗 Related Skills