Card
Documentație pentru componenta FodCard
1. Descriere Generală
FodCard
este o componentă container care afișează conținut într-o suprafață ridicată (elevated). Cardurile sunt utilizate pentru a grupa informații conexe și pentru a oferi un punct de intrare către informații mai detaliate.
Componenta suportă: - Nivele de elevație personalizabile - Conținut structurat (Header, Content, Actions, Media) - Stiluri outlined și square - Integrare cu alte componente Fod - Layout flexibil și responsive
2. Ghid de Utilizare API
Card de bază
<FodCard>
<FodCardContent>
<FodText Typo="Typo.h5">Titlu Card</FodText>
<FodText>Acesta este conținutul cardului.</FodText>
</FodCardContent>
</FodCard>
Card cu header și acțiuni
<FodCard>
<FodCardHeader>
<CardHeaderContent>
<FodText Typo="Typo.h6">Titlu Document</FodText>
</CardHeaderContent>
<CardHeaderActions>
<FodIconButton Icon="@FodIcons.Material.Filled.MoreVert" />
</CardHeaderActions>
</FodCardHeader>
<FodCardContent>
<FodText>
Conținutul documentului este afișat aici.
Poate include text formatat, liste sau alte elemente.
</FodText>
</FodCardContent>
<FodCardActions>
<FodButton Variant="FodVariant.Text" Color="FodColor.Primary">Citește mai mult</FodButton>
<FodButton Variant="FodVariant.Text" Color="FodColor.Primary">Partajează</FodButton>
</FodCardActions>
</FodCard>
Card cu imagine
<FodCard>
<FodCardMedia Image="images/service-banner.jpg" Height="200" />
<FodCardContent>
<FodText Typo="Typo.h5" GutterBottom="true">Serviciul de Apostilă</FodText>
<FodText Typo="Typo.body2" Color="FodColor.TextSecondary">
Obțineți apostila pentru documentele dumneavoastră într-un mod rapid și eficient.
</FodText>
</FodCardContent>
<FodCardActions>
<FodButton Variant="FodVariant.Filled" Color="FodColor.Primary">Aplică acum</FodButton>
</FodCardActions>
</FodCard>
Card outlined (fără elevație)
<FodCard Outlined="true">
<FodCardContent>
<FodText Typo="Typo.subtitle1">Card cu chenar</FodText>
<FodText>
Acest card folosește un chenar în loc de umbră pentru delimitare.
</FodText>
</FodCardContent>
</FodCard>
Card cu elevație personalizată
<FodGrid>
<FodItem xs="12" sm="4">
<FodCard Elevation="0">
<FodCardContent>
<FodText>Fără elevație</FodText>
</FodCardContent>
</FodCard>
</FodItem>
<FodItem xs="12" sm="4">
<FodCard Elevation="3">
<FodCardContent>
<FodText>Elevație medie</FodText>
</FodCardContent>
</FodCard>
</FodItem>
<FodItem xs="12" sm="4">
<FodCard Elevation="12">
<FodCardContent>
<FodText>Elevație mare</FodText>
</FodCardContent>
</FodCard>
</FodItem>
</FodGrid>
Card pentru profil utilizator
<FodCard>
<FodCardHeader>
<CardHeaderAvatar>
<div class="d-flex align-items-center justify-content-center"
style="width: 40px; height: 40px; border-radius: 50%; background-color: var(--fod-palette-primary); color: white;">
<FodText>IP</FodText>
</div>
</CardHeaderAvatar>
<CardHeaderContent>
<FodText Typo="Typo.h6">Ion Popescu</FodText>
<FodText Typo="Typo.body2" Color="FodColor.TextSecondary">
Administrator
</FodText>
</CardHeaderContent>
</FodCardHeader>
<FodCardContent>
<FodText>Email: ion.popescu@example.md</FodText>
<FodText>Telefon: +373 XX XXX XXX</FodText>
<FodText>Departament: IT</FodText>
</FodCardContent>
<FodCardActions>
<FodButton Variant="FodVariant.Text" StartIcon="@FodIcons.Material.Filled.Edit">
Editează
</FodButton>
<FodButton Variant="FodVariant.Text" StartIcon="@FodIcons.Material.Filled.Delete" Color="FodColor.Error">
Șterge
</FodButton>
</FodCardActions>
</FodCard>
Card pentru servicii
<FodCard>
<FodCardContent>
<div class="d-flex align-items-center mb-3">
<FodIcon Icon="@FodIcons.Material.Filled.Description"
Size="FodSize.Large"
Color="FodColor.Primary"
Class="me-3" />
<FodText Typo="Typo.h5">Traduceri Autorizate</FodText>
</div>
<FodText Class="mb-3">
Serviciu de traducere autorizată pentru documente oficiale în peste 20 de limbi.
</FodText>
<FodChipSet>
<FodChip Size="FodSize.Small">Rapiditate</FodChip>
<FodChip Size="FodSize.Small">Calitate</FodChip>
<FodChip Size="FodSize.Small">Preț accesibil</FodChip>
</FodChipSet>
</FodCardContent>
<FodCardActions>
<FodSpacer />
<FodButton Variant="FodVariant.Filled" Color="FodColor.Primary">
Solicită serviciul
</FodButton>
</FodCardActions>
</FodCard>
Card cu formular
<FodCard>
<FodCardHeader>
<CardHeaderContent>
<FodText Typo="Typo.h6">Formular de contact</FodText>
</CardHeaderContent>
</FodCardHeader>
<FodCardContent>
<EditForm Model="contactForm">
<div class="mb-3">
<FODInputText Label="Nume complet" @bind-Value="contactForm.Name" />
</div>
<div class="mb-3">
<FODInputText Label="Email" @bind-Value="contactForm.Email" />
</div>
<div class="mb-3">
<FodTextArea Label="Mesaj" @bind-Value="contactForm.Message" Rows="4" />
</div>
</EditForm>
</FodCardContent>
<FodCardActions>
<FodButton Variant="FodVariant.Text">Anulează</FodButton>
<FodButton Variant="FodVariant.Filled" Color="FodColor.Primary">Trimite</FodButton>
</FodCardActions>
</FodCard>
@code {
private ContactForm contactForm = new();
public class ContactForm
{
public string Name { get; set; } = "";
public string Email { get; set; } = "";
public string Message { get; set; } = "";
}
}
Card cu statistici
<FodCard>
<FodCardContent>
<FodGrid>
<FodItem xs="6">
<FodText Typo="Typo.h3" Color="FodColor.Primary">1,234</FodText>
<FodText Typo="Typo.subtitle2" Color="FodColor.TextSecondary">
Solicitări procesate
</FodText>
</FodItem>
<FodItem xs="6">
<FodText Typo="Typo.h3" Color="FodColor.Success">98%</FodText>
<FodText Typo="Typo.subtitle2" Color="FodColor.TextSecondary">
Rata de satisfacție
</FodText>
</FodItem>
</FodGrid>
</FodCardContent>
</FodCard>
Atribute disponibile
Proprietate | Tip | Descriere | Valoare Implicită |
---|---|---|---|
Elevation |
int |
Nivelul de umbră/elevație (0-24) | 1 |
Square |
bool |
Elimină border-radius pentru colțuri drepte | false |
Outlined |
bool |
Folosește chenar în loc de umbră | false |
ChildContent |
RenderFragment |
Conținutul cardului | null |
Class |
string |
Clase CSS adiționale | null |
Style |
string |
Stiluri CSS inline | null |
3. Componente asociate
FodCardHeader
Secțiunea de header a cardului:
- CardHeaderAvatar
- Avatar în header
- CardHeaderContent
- Conținut principal header
- CardHeaderActions
- Acțiuni în header
FodCardContent
Container pentru conținutul principal al cardului cu padding standard.
FodCardActions
Container pentru butoane și acțiuni, cu alignment și spacing automat.
FodCardMedia
Afișează imagini sau media în card:
<FodCardMedia Image="image.jpg" Height="200" Title="Descriere imagine" />
4. Combinații cu alte componente
Card în Grid
<FodGrid>
@foreach (var item in items)
{
<FodItem xs="12" sm="6" md="4">
<FodCard>
<FodCardContent>
<FodText Typo="Typo.h6">@item.Title</FodText>
<FodText>@item.Description</FodText>
</FodCardContent>
</FodCard>
</FodItem>
}
</FodGrid>
Card cu Expansion Panel
<FodCard>
<FodCardContent>
<FodExpansionPanels>
<FodExpansionPanel>
<TitleContent>Detalii adiționale</TitleContent>
<ChildContent>
<FodText>Informații extinse despre subiect...</FodText>
</ChildContent>
</FodExpansionPanel>
</FodExpansionPanels>
</FodCardContent>
</FodCard>
5. Stilizare și teme
Card colorat
<FodCard Style="background-color: #e3f2fd;">
<FodCardContent>
<FodText>Card cu fundal personalizat</FodText>
</FodCardContent>
</FodCard>
Card cu gradient
<FodCard Style="background: linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%);">
<FodCardContent>
<FodText Style="color: white;">Card cu gradient</FodText>
</FodCardContent>
</FodCard>
6. Note și observații
- Cardurile sunt containere flexibile care pot conține aproape orice tip de conținut
- Elevația implicită este 1, oferind o separare subtilă de fundal
- Pentru liste de carduri, folosiți FodGrid pentru layout responsive
- CardActions aplică automat spacing între butoane
- Outlined și Elevation sunt mutual exclusive
7. Bune practici
- Conținut concis - Păstrați conținutul cardului focusat pe un singur subiect
- Acțiuni clare - Limitați numărul de acțiuni la 2-3 per card
- Ierarhie vizuală - Folosiți tipografie pentru a crea ierarhie clară
- Spacing consistent - Folosiți componentele Card pentru spacing uniform
- Imagini optimizate - Pentru CardMedia, folosiți imagini de dimensiuni adecvate
- Accesibilitate - Asigurați-vă că toate acțiunile au etichete descriptive
8. Cazuri de utilizare avansate
Card cu loading state
<FodCard>
@if (isLoading)
{
<FodCardContent>
<div class="d-flex justify-content-center p-4">
<FodLoadingCircular />
</div>
</FodCardContent>
}
else
{
<FodCardContent>
<!-- Conținut actual -->
</FodCardContent>
}
</FodCard>
Card interactiv
<FodCard @onclick="HandleCardClick" Style="cursor: pointer;"
Class="@(isSelected ? "selected-card" : "")"
Elevation="@(isHovered ? 8 : 2)"
@onmouseenter="@(() => isHovered = true)"
@onmouseleave="@(() => isHovered = false)">
<FodCardContent>
<FodText>Card selectabil</FodText>
</FodCardContent>
</FodCard>
@code {
private bool isSelected = false;
private bool isHovered = false;
private void HandleCardClick()
{
isSelected = !isSelected;
}
}
9. Concluzie
FodCard
este o componentă fundamentală pentru organizarea și prezentarea conținutului în aplicațiile Blazor, oferind flexibilitate maximă pentru diferite cazuri de utilizare, de la simple containere de informații până la interfețe complexe interactive.