Icon
Documentație pentru componenta FodIcon
1. Descriere Generală
FodIcon
este componenta fundamentală pentru afișarea pictogramelor în aplicațiile FOD. Suportă atât pictograme SVG inline, cât și fonturi de pictograme (Material Icons, FontAwesome, etc.), oferind o interfață unificată pentru toate nevoile de iconografie.
Caracteristici principale: - Suport dual: SVG inline și fonturi de pictograme - Bibliotecă completă Material Icons (5 variante) - Pictograme custom pentru branduri și formate de fișiere - 5 dimensiuni predefinite - Integrare completă cu sistemul de culori FOD - Optimizat pentru performanță - Suport pentru accesibilitate - Utilizare consistentă în toate componentele FOD
2. Ghid de Utilizare API
Icon de bază
<FodIcon Icon="@FodIcons.Material.Filled.Home" />
Icon cu dimensiune și culoare
<!-- Icon mic cu culoare primară -->
<FodIcon Icon="@FodIcons.Material.Filled.Settings"
Size="FodSize.Small"
Color="FodColor.Primary" />
<!-- Icon mare cu culoare de succes -->
<FodIcon Icon="@FodIcons.Material.Filled.CheckCircle"
Size="FodSize.Large"
Color="FodColor.Success" />
<!-- Icon extra mare cu culoare de eroare -->
<FodIcon Icon="@FodIcons.Material.Filled.Error"
Size="FodSize.ExtraLarge"
Color="FodColor.Error" />
Variante Material Icons
<!-- Filled (umplut) -->
<FodIcon Icon="@FodIcons.Material.Filled.Favorite" />
<!-- Outlined (contur) -->
<FodIcon Icon="@FodIcons.Material.Outlined.FavoriteBorder" />
<!-- Rounded (rotunjit) -->
<FodIcon Icon="@FodIcons.Material.Rounded.Home" />
<!-- Sharp (ascuțit) -->
<FodIcon Icon="@FodIcons.Material.Sharp.Settings" />
<!-- TwoTone (două tonuri) -->
<FodIcon Icon="@FodIcons.Material.TwoTone.ShoppingCart" />
Pictograme pentru diferite contexte
Navigare și acțiuni
<div class="d-flex gap-3">
<FodIcon Icon="@FodIcons.Material.Filled.Menu" Title="Meniu" />
<FodIcon Icon="@FodIcons.Material.Filled.Search" Title="Căutare" />
<FodIcon Icon="@FodIcons.Material.Filled.ArrowBack" Title="Înapoi" />
<FodIcon Icon="@FodIcons.Material.Filled.ArrowForward" Title="Înainte" />
<FodIcon Icon="@FodIcons.Material.Filled.Refresh" Title="Reîncarcă" />
<FodIcon Icon="@FodIcons.Material.Filled.Close" Title="Închide" />
</div>
Stări și feedback
<!-- Succes -->
<FodIcon Icon="@FodIcons.Material.Filled.CheckCircle"
Color="FodColor.Success"
Title="Operațiune reușită" />
<!-- Avertisment -->
<FodIcon Icon="@FodIcons.Material.Filled.Warning"
Color="FodColor.Warning"
Title="Atenție" />
<!-- Eroare -->
<FodIcon Icon="@FodIcons.Material.Filled.Error"
Color="FodColor.Error"
Title="Eroare" />
<!-- Informație -->
<FodIcon Icon="@FodIcons.Material.Filled.Info"
Color="FodColor.Info"
Title="Informație" />
Pictograme pentru formulare
<div class="form-icons">
<FodIcon Icon="@FodIcons.Material.Filled.Person" />
<FodIcon Icon="@FodIcons.Material.Filled.Email" />
<FodIcon Icon="@FodIcons.Material.Filled.Phone" />
<FodIcon Icon="@FodIcons.Material.Filled.Lock" />
<FodIcon Icon="@FodIcons.Material.Filled.DateRange" />
<FodIcon Icon="@FodIcons.Material.Filled.AttachFile" />
</div>
Pictograme custom pentru branduri
<!-- Rețele sociale -->
<div class="social-icons d-flex gap-2">
<FodIcon Icon="@FodIcons.Custom.Brands.Facebook"
Color="FodColor.Primary" />
<FodIcon Icon="@FodIcons.Custom.Brands.Twitter"
Color="FodColor.Info" />
<FodIcon Icon="@FodIcons.Custom.Brands.GitHub"
Color="FodColor.Dark" />
<FodIcon Icon="@FodIcons.Custom.Brands.LinkedIn"
Color="FodColor.Primary" />
<FodIcon Icon="@FodIcons.Custom.Brands.YouTube"
Color="FodColor.Error" />
</div>
<!-- Sisteme de operare și browsere -->
<div class="platform-icons">
<FodIcon Icon="@FodIcons.Custom.Brands.Microsoft" />
<FodIcon Icon="@FodIcons.Custom.Brands.Apple" />
<FodIcon Icon="@FodIcons.Custom.Brands.Google" />
</div>
Pictograme pentru formate de fișiere
<div class="file-type-icons">
<FodIcon Icon="@FodIcons.Material.Filled.PictureAsPdf"
Color="FodColor.Error"
Title="PDF" />
<FodIcon Icon="@FodIcons.Material.Filled.Description"
Color="FodColor.Primary"
Title="Document" />
<FodIcon Icon="@FodIcons.Material.Filled.Image"
Color="FodColor.Success"
Title="Imagine" />
<FodIcon Icon="@FodIcons.Material.Filled.VideoFile"
Color="FodColor.Secondary"
Title="Video" />
<FodIcon Icon="@FodIcons.Material.Filled.AudioFile"
Color="FodColor.Warning"
Title="Audio" />
</div>
Utilizare în componente complexe
În butoane
<FodButton StartIcon="@FodIcons.Material.Filled.Add"
Color="FodColor.Primary"
Variant="FodVariant.Filled">
Adaugă element
</FodButton>
<FodButton EndIcon="@FodIcons.Material.Filled.Send"
Color="FodColor.Success"
Variant="FodVariant.Outlined">
Trimite
</FodButton>
<FodIconButton Icon="@FodIcons.Material.Filled.Delete"
Color="FodColor.Error"
Size="FodSize.Small"
Title="Șterge" />
În liste
<FodList>
<FodListItem>
<FodListItemIcon>
<FodIcon Icon="@FodIcons.Material.Filled.Inbox" />
</FodListItemIcon>
<FodListItemText Primary="Inbox" Secondary="5 mesaje noi" />
</FodListItem>
<FodListItem>
<FodListItemIcon>
<FodIcon Icon="@FodIcons.Material.Filled.Send" />
</FodListItemIcon>
<FodListItemText Primary="Trimise" />
</FodListItem>
<FodListItem>
<FodListItemIcon>
<FodIcon Icon="@FodIcons.Material.Filled.Drafts" />
</FodListItemIcon>
<FodListItemText Primary="Ciorne" Secondary="3 ciorne" />
</FodListItem>
</FodList>
În notificări și alerte
<FodAlert Severity="FodSeverity.Success">
<FodIcon Icon="@FodIcons.Material.Filled.CheckCircle" Class="me-2" />
Operațiune finalizată cu succes!
</FodAlert>
<FodAlert Severity="FodSeverity.Error">
<FodIcon Icon="@FodIcons.Material.Filled.Error" Class="me-2" />
A apărut o eroare la procesare.
</FodAlert>
În câmpuri de formular
<FodTextField Label="Email"
Type="email"
AdornmentIcon="@FodIcons.Material.Filled.Email"
Adornment="Adornment.Start" />
<FodTextField Label="Parolă"
Type="password"
AdornmentIcon="@FodIcons.Material.Filled.Lock"
Adornment="Adornment.Start" />
<FodTextField Label="Căutare"
AdornmentIcon="@FodIcons.Material.Filled.Search"
Adornment="Adornment.End" />
Animații și efecte
<!-- Icon cu rotație -->
<FodIcon Icon="@FodIcons.Material.Filled.Refresh"
Class="@(isLoading ? "rotating-icon" : "")" />
<!-- Icon cu pulsare -->
<FodIcon Icon="@FodIcons.Material.Filled.Favorite"
Color="FodColor.Error"
Class="pulse-icon" />
<style>
.rotating-icon {
animation: spin 1s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.pulse-icon {
animation: pulse 1.5s ease-in-out infinite;
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.1); }
100% { transform: scale(1); }
}
</style>
3. Atribute disponibile
Proprietate | Tip | Descriere | Valoare Implicită |
---|---|---|---|
Icon |
string |
Conținut pictogramă (SVG sau clasă CSS) | - |
Title |
string |
Titlu pentru accesibilitate | null |
Size |
FodSize |
Dimensiunea pictogramei | Medium |
Color |
FodColor |
Culoarea pictogramei | Inherit |
ViewBox |
string |
Dimensiuni viewBox pentru SVG | "0 0 24 24" |
Class |
string |
Clase CSS adiționale | null |
Style |
string |
Stiluri inline | null |
4. Dimensiuni disponibile (FodSize)
Dimensiune | Valoare CSS | Pixeli |
---|---|---|
ExtraSmall |
1rem | 16px |
Small |
1.25rem | 20px |
Medium |
1.5rem | 24px (implicit) |
Large |
2.25rem | 36px |
ExtraLarge |
3rem | 48px |
5. Categorii de pictograme disponibile
Material Icons
- Filled: Pictograme pline, aspect solid
- Outlined: Doar contur, aspect mai ușor
- Rounded: Colțuri rotunjite, aspect prietenos
- Sharp: Colțuri ascuțite, aspect profesional
- TwoTone: Două culori, accent pe detalii
Custom Icons
- Brands: Logo-uri companii (Facebook, Google, Apple, etc.)
- FileFormats: Tipuri de fișiere
- Uncategorized: Pictograme specifice aplicației
6. Stilizare și personalizare
/* Personalizare dimensiuni */
.custom-icon-size {
font-size: 32px !important;
width: 32px !important;
height: 32px !important;
}
/* Gradient pentru pictograme */
.gradient-icon {
background: linear-gradient(45deg, #f06, #48f);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
/* Shadow pentru pictograme */
.shadow-icon {
filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.2));
}
/* Pictograme cu fundal */
.icon-with-background {
background-color: #f0f0f0;
border-radius: 50%;
padding: 8px;
}
7. Combinații comune
<!-- Icon cu text -->
<div class="d-flex align-items-center">
<FodIcon Icon="@FodIcons.Material.Filled.Schedule"
Size="FodSize.Small"
Class="me-1" />
<FodText Typo="Typo.body2">10:30 AM</FodText>
</div>
<!-- Badge cu icon -->
<FodBadge BadgeContent="5" Color="FodColor.Error">
<FodIcon Icon="@FodIcons.Material.Filled.Notifications" />
</FodBadge>
<!-- Icon în chip -->
<FodChip Icon="@FodIcons.Material.Filled.Person"
Color="FodColor.Primary">
Administrator
</FodChip>
8. Utilizare cu fonturi externe
<!-- FontAwesome -->
<FodIcon Icon="fas fa-user" />
<!-- Material Icons font -->
<FodIcon Icon="face" />
<!-- Custom icon font -->
<FodIcon Icon="custom-icon-class" />
9. Performanță
- Pictogramele SVG sunt stocate ca string-uri statice
- Nu se încarcă resurse externe pentru SVG
- Fonturile de pictograme se încarcă o singură dată
- Folosiți aceeași variantă pentru consistență
10. Accesibilitate
<!-- Pictogramă decorativă -->
<FodIcon Icon="@FodIcons.Material.Filled.Star"
Title="" />
<!-- Pictogramă cu semnificație -->
<FodIcon Icon="@FodIcons.Material.Filled.Warning"
Title="Avertisment: Acțiune ireversibilă" />
<!-- Pictogramă ca buton -->
<button aria-label="Șterge element">
<FodIcon Icon="@FodIcons.Material.Filled.Delete" />
</button>
11. Note și observații
- Dimensiunea implicită este Medium (24px)
- Culoarea implicită este Inherit (moștenește de la părinte)
- SVG-urile folosesc currentColor pentru a prelua culoarea
- ViewBox implicit este optimizat pentru Material Icons
12. Bune practici
- Consistență - Folosiți aceeași variantă în toată aplicația
- Semantică - Alegeți pictograme intuitive pentru acțiuni
- Dimensiuni - Folosiți dimensiuni predefinite pentru consistență
- Culori - Folosiți culori semantice pentru feedback
- Accesibilitate - Adăugați Title pentru pictograme importante
- Performanță - Preferați pictogramele din bibliotecă
13. Troubleshooting
Pictograma nu apare
- Verificați că calea Icon este corectă
- Pentru fonturi, verificați că fontul este încărcat
Culoarea nu se aplică
- Verificați că folosiți FodColor validă
- Pentru SVG, verificați că folosește currentColor
Dimensiunea nu se schimbă
- Verificați că Size este din enum FodSize
- Pentru dimensiuni custom, folosiți Class sau Style
14. Concluzie
FodIcon
oferă o soluție completă și flexibilă pentru afișarea pictogramelor în aplicații Blazor. Cu o bibliotecă bogată de pictograme Material Icons și suport pentru pictograme custom, acoperă toate nevoile de iconografie într-un mod consistent și performant.