4.7 KiB
4.7 KiB
SbIcon
Renders SVG icons from the Sufi Icons library with support for sizing, coloring, and accessibility features. Can also render custom SVG content.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| Name | string? | null | Icon name from the Sufi Icons library (e.g., "home" or "si-home") |
| Size | SbSize | Md | Icon size (Sm, Md, Lg, Xl) |
| Color | SbColor? | null | Icon color. When null, inherits from parent via currentColor |
| AriaLabel | string? | null | Accessible label. When set, icon becomes semantic (role="img") |
| Mirror | bool | false | Mirrors icon in RTL layouts (for directional icons) |
| Class | string? | null | Additional CSS classes |
| Style | string? | null | Inline styles |
| AdditionalAttributes | Dictionary<string, object>? | null | Additional HTML attributes |
Templates / Slots
| Slot | Type | Description |
|---|---|---|
| CustomContent | RenderFragment? | Custom SVG or content (takes precedence over Name) |
Template Usage
<SbIcon>
<CustomContent>
<svg viewBox="0 0 24 24">
<!-- Custom SVG paths -->
</svg>
</CustomContent>
</SbIcon>
CSS Classes
sb-icon- Base classsb-icon--sm- Small sizesb-icon--md- Medium sizesb-icon--lg- Large sizesb-icon--xl- Extra large sizesb-icon--primary- Primary colorsb-icon--secondary- Secondary colorsb-icon--success- Success colorsb-icon--warning- Warning colorsb-icon--danger- Danger colorsb-icon--mirror- Mirrored for RTL
Accessibility
- Decorative icons (no
AriaLabel): Usesaria-hidden="true"to hide from screen readers - Semantic icons (with
AriaLabel): Usesrole="img"andaria-labelfor screen readers
Examples
Basic Icons
<SbIcon Name="home" />
<SbIcon Name="user" />
<SbIcon Name="settings" />
<SbIcon Name="search" />
<SbIcon Name="menu" />
Sizes
<SbIcon Name="star" Size="SbSize.Sm" />
<SbIcon Name="star" Size="SbSize.Md" />
<SbIcon Name="star" Size="SbSize.Lg" />
<SbIcon Name="star" Size="SbSize.Xl" />
Colors
<SbIcon Name="circle" Color="SbColor.Primary" />
<SbIcon Name="circle" Color="SbColor.Secondary" />
<SbIcon Name="circle" Color="SbColor.Success" />
<SbIcon Name="circle" Color="SbColor.Warning" />
<SbIcon Name="circle" Color="SbColor.Danger" />
Inheriting Color
@* Icon inherits the parent's text color *@
<span style="color: purple;">
<SbIcon Name="heart" /> Favorite
</span>
<SbButton Color="SbColor.Primary">
<SbIcon Name="save" /> Save
</SbButton>
Accessible Icons
@* Decorative icon (hidden from screen readers) *@
<SbButton>
<SbIcon Name="save" /> Save Document
</SbButton>
@* Semantic icon (announced by screen readers) *@
<SbIcon Name="warning" AriaLabel="Warning" />
@* Icon-only button with accessible label *@
<SbIconButton Icon="close" AriaLabel="Close dialog" />
RTL Mirror
@* Arrow icons that should flip in RTL layouts *@
<SbIcon Name="arrow-right" Mirror="true" />
<SbIcon Name="chevron-left" Mirror="true" />
Custom SVG Content
<SbIcon Size="SbSize.Lg">
<CustomContent>
<svg viewBox="0 0 24 24" fill="currentColor">
<path d="M12 2L2 7v10l10 5 10-5V7L12 2z"/>
</svg>
</CustomContent>
</SbIcon>
In Buttons
<SbButton>
<SbIcon Name="plus" Size="SbSize.Sm" /> Add Item
</SbButton>
<SbButton Variant="SbButtonVariant.Outlined">
<SbIcon Name="download" Size="SbSize.Sm" /> Download
</SbButton>
<SbIconButton Icon="edit" />
In Navigation
<SbNavMenu>
<SbNavItem Href="/dashboard">
<IconTemplate>
<SbIcon Name="home" />
</IconTemplate>
Dashboard
</SbNavItem>
<SbNavItem Href="/users">
<IconTemplate>
<SbIcon Name="users" />
</IconTemplate>
Users
</SbNavItem>
</SbNavMenu>
Status Indicators
<span>
<SbIcon Name="check-circle" Color="SbColor.Success" /> Active
</span>
<span>
<SbIcon Name="clock" Color="SbColor.Warning" /> Pending
</span>
<span>
<SbIcon Name="x-circle" Color="SbColor.Danger" /> Failed
</span>
Loading State
<SbIcon Name="loader" Class="spin" />
<style>
.spin {
animation: spin 1s linear infinite;
}
@@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
</style>
Icon List
<SbStack Direction="SbDirection.Row" Gap="SbSpacing.Sm">
<SbIcon Name="facebook" Size="SbSize.Lg" />
<SbIcon Name="twitter" Size="SbSize.Lg" />
<SbIcon Name="linkedin" Size="SbSize.Lg" />
<SbIcon Name="github" Size="SbSize.Lg" />
</SbStack>