syncfusion-blazor-sankey — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-blazor-sankey (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
NuGet: Syncfusion.Blazor.Sankey + Syncfusion.Blazor.Themes Namespace: Syncfusion.Blazor.Sankey
A comprehensive skill for implementing the Syncfusion Blazor Sankey Diagram component. The Sankey diagram is a powerful visualization tool for displaying flows and relationships between categories, showing the magnitude and direction of flows using proportionally-sized links.
Use this skill when you need to:
SfSankey Blazor componentA Sankey diagram is a flow diagram where the width of arrows or connections is proportional to the flow magnitude. It consists of:
📄 Read: references/getting-started.md When to read: First-time setup, installation, project configuration Contains:
📄 Read: references/data-binding.md When to read: Setting up data structure, binding nodes and links, API integration Contains:
📄 Read: references/nodes.md When to read: Customizing node appearance, styling, properties Contains:
📄 Read: references/links.md When to read: Configuring flow connections, link styling, magnitude representation Contains:
📄 Read: references/labels.md When to read: Customizing node labels, text formatting Contains:
📄 Read: references/legends.md When to read: Adding and customizing diagram legends Contains:
📄 Read: references/tooltips.md When to read: Adding interactive tooltips, customizing tooltip content Contains:
📄 Read: references/api-reference.md When to read: Looking up component properties, events, methods, and enums Contains:
📄 Read: references/customization.md When to read: Advanced styling, layout options, themes, RTL support Contains:
📄 Read: references/events.md When to read: Handling user interactions, customizing rendering, responding to changes Contains:
📄 Read: references/print-export.md When to read: Exporting diagrams to images/PDF, printing functionality Contains:
Here's a minimal example showing energy source flow to energy types and end-use sectors:
@page "/sankey-demo"
@using Syncfusion.Blazor.Sankey
<SfSankey Width="100%" Height="600px" Nodes="@Nodes" Links="@Links">
<SankeyNodeSettings Width="20" Padding="20"></SankeyNodeSettings>
<SankeyLinkSettings Opacity="0.4"></SankeyLinkSettings>
</SfSankey>
@code {
public List<SankeyDataNode> Nodes = new List<SankeyDataNode>();
public List<SankeyDataLink> Links = new List<SankeyDataLink>();
protected override void OnInitialized()
{
// Define nodes
Nodes = new List<SankeyDataNode>()
{
new SankeyDataNode() { Id = "Solar", Label = new SankeyDataLabel() { Text = "Solar" } },
new SankeyDataNode() { Id = "Wind", Label = new SankeyDataLabel() { Text = "Wind" } },
new SankeyDataNode() { Id = "Hydro", Label = new SankeyDataLabel() { Text = "Hydro" } },
new SankeyDataNode() { Id = "Electricity", Label = new SankeyDataLabel() { Text = "Electricity" } },
new SankeyDataNode() { Id = "Heat", Label = new SankeyDataLabel() { Text = "Heat" } },
new SankeyDataNode() { Id = "Residential", Label = new SankeyDataLabel() { Text = "Residential" } },
new SankeyDataNode() { Id = "Commercial", Label = new SankeyDataLabel() { Text = "Commercial" } },
new SankeyDataNode() { Id = "Industrial", Label = new SankeyDataLabel() { Text = "Industrial" } }
};
// Define links (flows)
Links = new List<SankeyDataLink>()
{
new SankeyDataLink() { SourceId = "Solar", TargetId = "Electricity", Value = 30 },
new SankeyDataLink() { SourceId = "Wind", TargetId = "Electricity", Value = 45 },
new SankeyDataLink() { SourceId = "Hydro", TargetId = "Electricity", Value = 25 },
new SankeyDataLink() { SourceId = "Solar", TargetId = "Heat", Value = 15 },
new SankeyDataLink() { SourceId = "Electricity", TargetId = "Residential", Value = 35 },
new SankeyDataLink() { SourceId = "Electricity", TargetId = "Commercial", Value = 30 },
new SankeyDataLink() { SourceId = "Electricity", TargetId = "Industrial", Value = 35 },
new SankeyDataLink() { SourceId = "Heat", TargetId = "Residential", Value = 10 },
new SankeyDataLink() { SourceId = "Heat", TargetId = "Commercial", Value = 5 }
};
}
}<SfSankey Nodes="@Nodes" Links="@Links" Width="800px" Height="400px">
</SfSankey><SfSankey Nodes="@Nodes" Links="@Links" BackgroundColor="#f5f5f5">
<SankeyNodeSettings Color="#2e7d32" Width="15" Padding="25"></SankeyNodeSettings>
<SankeyLinkSettings Color="#1976d2" Opacity="0.3"></SankeyLinkSettings>
<SankeyLabelSettings Color="#000000" FontSize="14px" FontWeight="500"></SankeyLabelSettings>
</SfSankey><SfSankey Nodes="@Nodes" Links="@Links" NodeClick="OnNodeClick" LinkClick="OnLinkClick">
<SankeyTooltipSettings Visible="true"></SankeyTooltipSettings>
</SfSankey>
@code {
private void OnNodeClick(NodeClickEventArgs args)
{
Console.WriteLine($"Node clicked: {args.Node.Id}");
}
private void OnLinkClick(LinkClickEventArgs args)
{
Console.WriteLine($"Link clicked: {args.Link.SourceId} -> {args.Link.TargetId}");
}
}<SfSankey Nodes="@Nodes" Links="@Links" Orientation="SankeyOrientation.Vertical">
<SankeyNodeSettings Width="30" Padding="15"></SankeyNodeSettings>
</SfSankey><SfSankey Nodes="@Nodes" Links="@Links">
<SankeyLegendSettings Visible="true" Position="LegendPosition.Bottom"></SankeyLegendSettings>
</SfSankey>#### Data Properties
| Property | Type | Default | Description |
|---|---|---|---|
Nodes | List<SankeyDataNode> | null | Collection of nodes (entities/categories) |
Links | List<SankeyDataLink> | null | Collection of links (flows between nodes) |
#### Layout & Sizing Properties
| Property | Type | Default | Description |
|---|---|---|---|
Width | string | "100%" | Diagram width (pixels or percentage) |
Height | string | "100%" | Diagram height (pixels or percentage) |
Orientation | SankeyOrientation | Auto | Layout direction (Auto/Horizontal/Vertical) |
EnableAutoLayout | bool | true | Enable/disable automatic layout |
#### Styling Properties
| Property | Type | Default | Description |
|---|---|---|---|
BackgroundColor | string | Theme default | Background color |
BackgroundImage | string | "" | Background image URL |
BorderColor | string | null | Border color |
BorderWidth | double | 1 | Border width in pixels |
Theme | Theme | Fluent2 | Chart theme |
CssClass | string | "" | Custom CSS class |
#### Title & Content Properties
| Property | Type | Default | Description |
|---|---|---|---|
Title | string | "" | Main title text |
SubTitle | string | "" | Subtitle text |
LinkCurvature | double | 1 | Link curve intensity (0-1) |
#### Animation Properties
| Property | Type | Default | Description |
|---|---|---|---|
EnableAnimation | bool | true | Enable/disable animations |
AnimationDuration | double | 2000 | Animation duration (ms) |
AnimationDelay | double | 0 | Animation delay (ms) |
#### Accessibility & Interaction Properties
| Property | Type | Default | Description |
|---|---|---|---|
EnableRTL | bool | false | Enable right-to-left layout |
TabIndex | double | 0 | Keyboard tab index |
AccessibilityDescription | string | "" | Accessibility description |
ID | string | Auto-generated | Component ID |
#### Rendering Events
SankeyNodeRenderEventArgs - Fired when a node is renderedSankeyLinkRenderEventArgs - Fired when a link is renderedSankeyLabelRenderEventArgs - Fired when a label is renderedSankeyLegendRenderEventArgs - Fired before legend item renders#### Mouse Interaction Events
SankeyNodeEventArgs - Fired when node is clickedSankeyLinkEventArgs - Fired when link is clickedSankeyNodeEventArgs - Fired when mouse enters nodeSankeyNodeEventArgs - Fired when mouse leaves nodeSankeyLinkEventArgs - Fired when mouse enters linkSankeyLinkEventArgs - Fired when mouse leaves link#### UI Events
SankeyTooltipRenderEventArgs - Fired when tooltip rendersSankeyLegendItemHoverEventArgs - Fired on legend hover#### Lifecycle Events
Action - Fired when component is createdSankeySizeChangedEventArgs - Fired when component size changes#### Export/Print Events
Action - Fired when print completesSankeyExportedEventArgs - Fired when export completes| Method | Parameters | Returns | Description |
|---|---|---|---|
ExportAsync | type (SankeyExportType), fileName, orientation?, allowDownload?, isBase64? | Task | Export to PNG/JPEG/SVG/PDF |
PrintAsync | elementRef? | Task | Print the diagram |
RefreshAsync | None | Task | Re-render component |
| Model | Key Properties | Description |
|---|---|---|
| SankeyDataNode | Id, Label (SankeyDataLabel), Color, Width | Represents a node |
| SankeyDataLabel | Text | Node label text |
| SankeyDataLink | SourceId, TargetId, Value, Color, Opacity | Represents a link/connection |
| Enum | Values | Description |
|---|---|---|
| SankeyOrientation | Auto, Horizontal, Vertical | Layout direction |
| SankeyNodeAlign | None, Left, Center, Right | Node alignment |
| SankeyColorType | Static, Source | Color mapping type |
| SankeyLegendPosition | Top, Bottom, Left, Right | Legend position |
| SankeyExportType | PNG, JPEG, SVG, PDF | Export format |
| Theme | Bootstrap5, Fluent2, Material, Tailwind, Fabric, etc. | Chart theme |
Visualize energy sources flowing to energy types and then to end-use sectors (residential, commercial, industrial).
Show user traffic flow from entry points (search, social, direct) through pages to conversion goals.
Display budget flows from income sources through categories to final expenses.
Illustrate product movement from suppliers through manufacturing to distribution channels.
Map user flow through application states, showing drop-offs and conversions at each stage.
Show data flow through processing stages in ETL pipelines or data transformation workflows.
Each node must have:
Id (string)Label with Text propertyEach link must have:
SourceId matching a node IdTargetId matching a node IdValue representing flow magnitude (numeric)Diagram not showing:
Links not appearing:
Styling not applying:
Events not firing:
For detailed implementation of specific features, refer to the reference files listed in the Navigation Guide above. Each reference provides complete, self-contained documentation with examples and best practices.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.