SyntaxCircus.FancyBlazor 0.4.0

dotnet add package SyntaxCircus.FancyBlazor --version 0.4.0
                    
NuGet\Install-Package SyntaxCircus.FancyBlazor -Version 0.4.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SyntaxCircus.FancyBlazor" Version="0.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SyntaxCircus.FancyBlazor" Version="0.4.0" />
                    
Directory.Packages.props
<PackageReference Include="SyntaxCircus.FancyBlazor" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SyntaxCircus.FancyBlazor --version 0.4.0
                    
#r "nuget: SyntaxCircus.FancyBlazor, 0.4.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SyntaxCircus.FancyBlazor@0.4.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SyntaxCircus.FancyBlazor&version=0.4.0
                    
Install as a Cake Addin
#tool nuget:?package=SyntaxCircus.FancyBlazor&version=0.4.0
                    
Install as a Cake Tool

FancyBlazor

Build NuGet WebGL Preview UI Companion License: MIT

<p align="center"> <img src="docs/assets/fancyblazor-marketing-640.png" width="320" alt="FancyBlazor optical mark" /> </p>

Live demo: Explore the FancyBlazor catalog

Roadmap: See the approved pre-1.0 expansion phases

Composable visual effects for Blazor: backgrounds, borders, viewport reveals, pointer motion, parallax, and shimmer—without React islands, a runtime CDN, or consumer JavaScript tooling.

FancyBlazor targets net10.0 and works with static SSR, Interactive Server, Interactive WebAssembly, Interactive Auto, and standalone WebAssembly. It is CSS-framework-agnostic and keeps meaningful child content as ordinary semantic DOM.

Preview software. The API may change before 1.0. Published as-is and maintained on a best-effort basis; there is no support SLA.

Install and register

dotnet add package SyntaxCircus.FancyBlazor

Register the shared runtime in every executable host. Interactive Auto apps register it in both server and client Program.cs files.

using SyntaxCircus.FancyBlazor;

builder.Services.AddFancyBlazor();

Import the root namespace in _Imports.razor:

@using SyntaxCircus.FancyBlazor

No script tag, npm package, CDN, or manual stylesheet import is required.

First effect

<ShaderBackground Effect="ShaderEffect.Nacre"
                  Palette="FancyPalettes.Witchlight">
    <section class="hero">
        <h1>Build something that catches light.</h1>
        <p>This remains semantic HTML before and after WebGL initializes.</p>
    </section>
</ShaderBackground>

Before interactivity—or when WebGL is unavailable—the component displays a palette-derived CSS background and leaves the content usable.

Kinetic text

WordRotate, MorphText, and Typewriter cycle, crossfade, or progressively type decorative text while keeping the visible motion aria-hidden and exposing a complete accessible mirror to assistive technology. They all share the same lifecycle as the other JS-light effects and respect prefers-reduced-motion.

<WordRotate Words="@(new[] { "Compose", "Animate", "Ship" })" Interval="TimeSpan.FromSeconds(1.5)" />
<MorphText Words="@(new[] { "Frosted", "Faceted", "Filament" })" Mode="MorphMode.CharSplit" />
<Typewriter Text="@(new[] { "Hello, world.", "Compose with FancyBlazor." })" />

See kinetic text overview, WordRotate, MorphText, and Typewriter for parameter references and composition examples.

Atmospheric fields

CausticsBackground, TopographicBackground, and RainBackground draw bounded Canvas 2D atmospheric fields behind semantic child content, sharing the same lifecycle as the other Canvas 2D backgrounds: paused offscreen, disposed cleanly, and replaced by a palette-derived static gradient when JavaScript, Canvas 2D, or motion is unavailable.

<CausticsBackground Palette="FancyPalettes.Glacier">
    <article>Semantic content</article>
</CausticsBackground>

See CausticsBackground, TopographicBackground, and RainBackground for parameter references and composition examples.

Interaction and scroll

ScrollVelocity reacts to scroll speed, CompareReveal reveals one piece of content against another by dragging a handle, and Lens shows a pointer-following magnified view of an image over semantic content.

<CompareReveal BeforeLabel="Muted" AfterLabel="Vivid">
    <Before><img src="/images/before.jpg" alt="Before" /></Before>
    <After><img src="/images/after.jpg" alt="After" /></After>
</CompareReveal>

See ScrollVelocity, CompareReveal, and Lens for parameter references and composition examples.

Optional WebGL preview

SyntaxCircus.FancyBlazor.WebGL is a separately installed preview companion. It publishes at the same version as the core package while keeping Three.js and the GPU lifecycle out of applications that do not opt in.

dotnet add package SyntaxCircus.FancyBlazor.WebGL
builder.Services.AddFancyBlazorWebGl();

This also registers core defaults. Call AddFancyBlazor(...) first when you need to configure the shared motion, quality, pause, or diagnostics options.

<HolographicSurface Palette="FancyPalettes.Witchlight" Interactive>
    <article>Semantic content remains ordinary HTML.</article>
</HolographicSurface>

The companion vendors the unmodified official Three.js r184 ESM build under MIT and requires no Node, npm, CDN, or manual script import. Its visual direction was informed by the ThreeUI effect catalog, but it includes no ThreeUI source code or assets. Treat its components, parameters, defaults, and visual output as preview API that may change before 1.0.

Optional UI companion

SyntaxCircus.FancyBlazor.UI is a separately installed companion for styled, accessible controls: buttons, links, badges, cards, and a navbar. It publishes at the same version as the core package and depends only on core—installing it never pulls in the WebGL preview.

dotnet add package SyntaxCircus.FancyBlazor.UI
builder.Services.AddFancyBlazorUi();

This also registers core defaults. Call AddFancyBlazor(...) first when you need to configure the shared motion, quality, pause, or diagnostics options.

<FancyNavbar AriaLabel="Site">
    <Brand><FancyLink Href="/">Acme</FancyLink></Brand>
    <Links><FancyLink Href="/pricing">Pricing</FancyLink></Links>
    <Actions><FancyButton>Sign in</FancyButton></Actions>
</FancyNavbar>

Every control is a native HTML element (<button>, <a>, <span>, <article>, <nav>, <table>, …) with typed theme tokens. All but one are JavaScript-free; FaqAccordion is the sole exception, using a small module to own click-driven open/closed state. Controls coexist cleanly with Bootstrap 5's Reboot and other CSS frameworks: see Bootstrap 5 compatibility. Treat its components, parameters, defaults, and visual output as preview API that may change before 1.0.

Preview components

Component Rendering path Purpose
ShaderBackground Vendored WebGL runtime + Nacre GLSL Decorative animated background behind real DOM
GlowBorder CSS-first Animated edge light around existing content
Reveal CSS + IntersectionObserver Viewport-aware fade/translate/blur entrance
Tilt CSS + pointer JavaScript Perspective motion and optional glare
GradientBackground CSS-first Palette-derived animated gradient background
Spotlight CSS + pointer JavaScript Decorative pointer-following radial light
Magnetic CSS + pointer JavaScript Subtle pointer-relative content motion
Parallax CSS + scroll JavaScript Viewport-relative content offset
Stagger CSS + IntersectionObserver Sequential direct-child viewport entry
Shimmer CSS-first Decorative highlight sweep
GradientText CSS-first Palette-derived text color treatment
TextReveal CSS + IntersectionObserver Semantic word or character entrance
AuroraBackground CSS-first Palette-derived ambient light behind content
NoiseOverlay CSS-first Decorative grain behind content
Ripple CSS + pointer JavaScript Decorative tap/click wave around content
CursorTrail Canvas + pointer JavaScript Bounded decorative pointer particles
GlassSurface CSS-first Translucent reading plane with progressive backdrop blur
BorderBeam CSS-first Focused moving edge-light accent
GridBackground CSS-first Faded line grid behind semantic content
DotPattern CSS-first Faded dot field behind semantic content
OrbitalGlow CSS-first Palette-derived ambient orbital light
ScrollScene CSS + scroll JavaScript Continuous in-flow semantic section treatment
ScrollIndicator CSS + scroll JavaScript Decorative local reading-progress line
ScrollBackdrop CSS + scroll JavaScript Palette-derived local scroll backdrop
ScrollVelocity CSS + scroll JavaScript Scroll-speed-reactive blur and tint
CompareReveal CSS + native range input Before/after content reveal with a draggable handle
Lens CSS + pointer JavaScript Pointer-following magnified image view
HoverLift CSS-first Fine-pointer hover elevation around existing content
PressScale CSS + activation JavaScript Pointer and keyboard press response around existing content
FocusHalo CSS-first Additive focus halo around focused child content
TextStroke CSS-first Decorative text outline around semantic content
HighlightText CSS-first Editorial marker wash behind semantic text
GradientDivider CSS-first Decorative gradient separator
WaveDivider CSS-first Decorative static wave separator
SectionDivider CSS-first Decorative centered section marker
MeshBackground CSS-first Palette-derived static color field behind content
CornerAccents CSS-first Decorative opposing corners around content
PaperSurface CSS-first Tinted, lightly textured reading plane
EdgeGlow CSS-first Focused decorative edge bloom
ConstellationBackground Canvas 2D + JavaScript Bounded decorative point-and-line field behind real DOM
ArcFlowBackground Canvas 2D + JavaScript Bounded drifting-arc field behind real DOM
FlickerGrid Canvas 2D + JavaScript Bounded flickering cell grid behind real DOM
MeteorBackground Canvas 2D + JavaScript Bounded streaking-meteor field behind real DOM
LightRaysBackground Canvas 2D + JavaScript Bounded sweeping light-ray field behind real DOM
CausticsBackground Canvas 2D + JavaScript Bounded drifting caustic light-pool field behind real DOM
TopographicBackground Canvas 2D + JavaScript Bounded slowly drifting contour-line field behind real DOM
RainBackground Canvas 2D + JavaScript Bounded streaking-rain field behind real DOM
ScrambleText CSS + IntersectionObserver Semantic character-scramble text reveal
Marquee CSS animation + JavaScript Seamless looping content scroll with one accessible copy
NumberTicker JavaScript + IntersectionObserver Animated numeric count-up with an always-correct accessible value
NeonText CSS-first Semantic text glow and optional outline
TypeFlow CSS + IntersectionObserver Semantic word or character entrance
WordRotate CSS + IntersectionObserver Cycles a list of headline words with a fade/slide/blur transition while keeping the visible motion decorative
MorphText CSS + IntersectionObserver Crossfades or character-splits between strings with a visible hold between each
Typewriter CSS + IntersectionObserver Progressively types a list of lines with an optional caret and optional delete
StatusPulse CSS-first Decorative pulse around consumer-owned content
LaunchHalo CSS-first Decorative launch halo around consumer-owned content
AuroraHero, ReadingSurface, ActionCard, EditorialHero, FeaturePanel Composition presets Named, typed decorative stacks around semantic child content

UI companion components

Component Rendering path Purpose
FancyButton Native <button> Themed action control with native keyboard operability
FancyLink Native <a> Themed navigation control; href-omitting disabled state
FancyBadge Native <span> Themed, non-interactive status label
FancyCard Native <article> Themed content surface with optional header/footer slots
FancyNavbar Native <nav> Themed landmark with optional brand/links/actions slots
LogoCloud Native <ul> Themed list for consumer-owned partner/customer logos
Testimonial Native <figure>/<blockquote> Themed quote with optional attribution/avatar slots
CallToAction Native <div> Themed heading/copy/actions block; consumer chooses heading level
FeatureGrid Native <ul> Themed responsive grid for consumer-owned feature callouts
Hero Native <div> Themed intro block with optional decorative background slot
PricingTable Native <table> Themed comparison table for consumer-owned plans and features
FaqAccordion, FaqAccordionItem Native <button>/disclosure panel Themed, keyboard-operable Q&A list with an optional animated open/close; the only JavaScript-owning UI control

Components intentionally compose:

<ShaderBackground>
    <Reveal Effect="RevealEffect.BlurUp">
        <Tilt Glare>
            <GlowBorder Color="currentColor">
                <article>Existing content</article>
            </GlowBorder>
        </Tilt>
    </Reveal>
</ShaderBackground>

Global defaults

builder.Services.AddFancyBlazor(options =>
{
    options.MotionPreference = FancyMotionPreference.RespectSystem;
    options.Quality = FancyQuality.Auto;
    options.PauseWhenHidden = true;
    options.PauseWhenOffscreen = true;
    options.EnableDiagnostics = false;
});

Reduced motion is respected by default. Decorative canvases and glare layers are hidden from assistive technology, wrapper components add no tab stops, and continuous rendering stops while hidden or offscreen.

Documentation and examples

Validation

dotnet restore SyntaxCircus.FancyBlazor.slnx
dotnet build SyntaxCircus.FancyBlazor.slnx --no-restore --configuration Release
dotnet test SyntaxCircus.FancyBlazor.slnx --no-build --configuration Release
dotnet pack src/SyntaxCircus.FancyBlazor/SyntaxCircus.FancyBlazor.csproj --no-build --configuration Release --output artifacts/release-preview
dotnet pack src/SyntaxCircus.FancyBlazor.WebGL/SyntaxCircus.FancyBlazor.WebGL.csproj --no-build --configuration Release --output artifacts/release-preview
pwsh eng/verify-docs.ps1
pwsh eng/verify-package.ps1 -PackageDirectory artifacts/release-preview
pwsh eng/verify-webgl-package.ps1 -PackageDirectory artifacts/release-preview -CorePackageDirectory artifacts/release-preview
pwsh eng/verify-release-packages.ps1 -PackageDirectory artifacts/release-preview

Install the Playwright browser once before the first local browser-test run; the exact command is documented in AGENTS.md.

Contributing and license

Read AGENTS.md before changing public behavior or vendored assets. FancyBlazor is MIT licensed; see LICENSE. Bundled shader.gallery and Three.js notices are in THIRD-PARTY-NOTICES.md.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on SyntaxCircus.FancyBlazor:

Package Downloads
SyntaxCircus.FancyBlazor.WebGL

Preview WebGL companion effects for FancyBlazor, with semantic DOM content and automatic CSS fallbacks.

SyntaxCircus.FancyBlazor.UI

Optional styled, accessible UI controls for FancyBlazor: buttons, links, badges, cards, and a navbar.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0 122 8/31/2026
0.3.3 98 8/31/2026
0.3.2 125 8/28/2026
0.3.1 112 8/28/2026
0.3.0 114 8/28/2026
0.2.5 107 8/28/2026
0.2.4 104 8/27/2026
0.2.3 109 8/25/2026
0.2.2 115 8/24/2026
0.2.1 106 8/24/2026
0.2.0 96 8/23/2026
0.1.5 100 8/23/2026
0.1.4 97 8/23/2026
0.1.3 92 8/23/2026
0.1.2 99 8/23/2026
0.1.1 97 8/23/2026
0.1.0 90 8/23/2026