Vue · CRM
Annuaire des contacts
DisponibleRépertoire filtrable des contacts avec recherche, segments et table dense.
Avatar, rôle et compte rattaché pour chaque ligne, avec actions rapides d'édition via Button et Dropdown. Un seul NodeSpec → rendu identique en Svelte, React, Vue et Angular.
Rendu multi-framework
Annuaire des contacts (données mock)
Contact
Rôle
Compte
Segment
Voir le code (Svelte)
<div class="cd-shell">
<div class="cd-toolbar">
<div class="cd-search">
<Input label="Rechercher" placeholder="Nom, compte, e-mail…" type="search" />
</div>
<Select
label="Segment"
value="all"
options={[{"value":"all","label":"Tous"},{"value":"client","label":"Clients"},{"value":"prospect","label":"Prospects"},{"value":"partner","label":"Partenaires"}]}
/>
<Combobox
label="Compte"
placeholder="Filtrer par compte…"
options={[{"value":"Airbus Group","label":"Airbus Group"},{"value":"Orange SA","label":"Orange SA"},{"value":"Safran SA","label":"Safran SA"},{"value":"Thales Group","label":"Thales Group"},{"value":"Capgemini","label":"Capgemini"},{"value":"Société Générale","label":"Société Générale"},{"value":"Dassault Systèmes","label":"Dassault Systèmes"}]}
/>
<Button variant="primary" size="sm">Nouveau contact</Button>
</div>
<div class="cd-table-head">
<div class="cd-th">Contact</div>
<div class="cd-th">Rôle</div>
<div class="cd-th">Compte</div>
<div class="cd-th">Segment</div>
<div class="cd-th"></div>
</div>
<div class="cd-table-body">
<div class="cd-row">
<div class="cd-cell cd-cell-contact">
<Avatar name="Marie Lefebvre" size="sm" tone="category1" />
<div class="cd-info">
<span class="cd-name">Marie Lefebvre</span>
<span class="cd-email">[email protected]</span>
</div>
</div>
<div class="cd-cell">Directrice Commerciale</div>
<div class="cd-cell">Airbus Group</div>
<div class="cd-cell">
<Badge tone="success">Client</Badge>
</div>
<div class="cd-cell cd-cell-actions">
<Button variant="ghost" size="sm">Modifier</Button>
<OverflowMenu
label="Actions du contact"
triggerLabel="Plus d'actions"
placement="bottom-end"
items={[{"value":"view","label":"Voir le profil"},{"value":"email","label":"Envoyer un e-mail"},{"value":"delete","label":"Supprimer","danger":true}]}
/>
</div>
</div>
<div class="cd-row">
<div class="cd-cell cd-cell-contact">
<Avatar name="Karim Benali" size="sm" tone="category2" />
<div class="cd-info">
<span class="cd-name">Karim Benali</span>
<span class="cd-email">[email protected]</span>
</div>
</div>
<div class="cd-cell">Responsable IT</div>
<div class="cd-cell">Orange SA</div>
<div class="cd-cell">
<Badge tone="success">Client</Badge>
</div>
<div class="cd-cell cd-cell-actions">
<Button variant="ghost" size="sm">Modifier</Button>
<OverflowMenu
label="Actions du contact"
triggerLabel="Plus d'actions"
placement="bottom-end"
items={[{"value":"view","label":"Voir le profil"},{"value":"email","label":"Envoyer un e-mail"},{"value":"delete","label":"Supprimer","danger":true}]}
/>
</div>
</div>
<div class="cd-row">
<div class="cd-cell cd-cell-contact">
<Avatar name="Sophie Durand" size="sm" tone="category3" />
<div class="cd-info">
<span class="cd-name">Sophie Durand</span>
<span class="cd-email">[email protected]</span>
</div>
</div>
<div class="cd-cell">Chef de Projet</div>
<div class="cd-cell">Safran SA</div>
<div class="cd-cell">
<Badge tone="info">Prospect</Badge>
</div>
<div class="cd-cell cd-cell-actions">
<Button variant="ghost" size="sm">Modifier</Button>
<OverflowMenu
label="Actions du contact"
triggerLabel="Plus d'actions"
placement="bottom-end"
items={[{"value":"view","label":"Voir le profil"},{"value":"email","label":"Envoyer un e-mail"},{"value":"delete","label":"Supprimer","danger":true}]}
/>
</div>
</div>
<div class="cd-row">
<div class="cd-cell cd-cell-contact">
<Avatar name="Léa Moreau" size="sm" tone="category4" />
<div class="cd-info">
<span class="cd-name">Léa Moreau</span>
<span class="cd-email">[email protected]</span>
</div>
</div>
<div class="cd-cell">Analyste BI</div>
<div class="cd-cell">Thales Group</div>
<div class="cd-cell">
<Badge tone="neutral">Partenaire</Badge>
</div>
<div class="cd-cell cd-cell-actions">
<Button variant="ghost" size="sm">Modifier</Button>
<OverflowMenu
label="Actions du contact"
triggerLabel="Plus d'actions"
placement="bottom-end"
items={[{"value":"view","label":"Voir le profil"},{"value":"email","label":"Envoyer un e-mail"},{"value":"delete","label":"Supprimer","danger":true}]}
/>
</div>
</div>
<div class="cd-row">
<div class="cd-cell cd-cell-contact">
<Avatar name="Tom Girard" size="sm" tone="category5" />
<div class="cd-info">
<span class="cd-name">Tom Girard</span>
<span class="cd-email">[email protected]</span>
</div>
</div>
<div class="cd-cell">Architecte Solutions</div>
<div class="cd-cell">Capgemini</div>
<div class="cd-cell">
<Badge tone="info">Prospect</Badge>
</div>
<div class="cd-cell cd-cell-actions">
<Button variant="ghost" size="sm">Modifier</Button>
<OverflowMenu
label="Actions du contact"
triggerLabel="Plus d'actions"
placement="bottom-end"
items={[{"value":"view","label":"Voir le profil"},{"value":"email","label":"Envoyer un e-mail"},{"value":"delete","label":"Supprimer","danger":true}]}
/>
</div>
</div>
<div class="cd-row">
<div class="cd-cell cd-cell-contact">
<Avatar name="Julie Martin" size="sm" tone="category1" />
<div class="cd-info">
<span class="cd-name">Julie Martin</span>
<span class="cd-email">[email protected]</span>
</div>
</div>
<div class="cd-cell">DSI</div>
<div class="cd-cell">Société Générale</div>
<div class="cd-cell">
<Badge tone="success">Client</Badge>
</div>
<div class="cd-cell cd-cell-actions">
<Button variant="ghost" size="sm">Modifier</Button>
<OverflowMenu
label="Actions du contact"
triggerLabel="Plus d'actions"
placement="bottom-end"
items={[{"value":"view","label":"Voir le profil"},{"value":"email","label":"Envoyer un e-mail"},{"value":"delete","label":"Supprimer","danger":true}]}
/>
</div>
</div>
<div class="cd-row">
<div class="cd-cell cd-cell-contact">
<Avatar name="Romain Petit" size="sm" tone="category2" />
<div class="cd-info">
<span class="cd-name">Romain Petit</span>
<span class="cd-email">[email protected]</span>
</div>
</div>
<div class="cd-cell">DG Technique</div>
<div class="cd-cell">Dassault Systèmes</div>
<div class="cd-cell">
<Badge tone="neutral">Partenaire</Badge>
</div>
<div class="cd-cell cd-cell-actions">
<Button variant="ghost" size="sm">Modifier</Button>
<OverflowMenu
label="Actions du contact"
triggerLabel="Plus d'actions"
placement="bottom-end"
items={[{"value":"view","label":"Voir le profil"},{"value":"email","label":"Envoyer un e-mail"},{"value":"delete","label":"Supprimer","danger":true}]}
/>
</div>
</div>
</div>
</div>