diff --git a/src/app/shared/components/provider-icon/provider-icon.component.ts b/src/app/shared/components/provider-icon/provider-icon.component.ts
new file mode 100644
index 0000000..14c7d0e
--- /dev/null
+++ b/src/app/shared/components/provider-icon/provider-icon.component.ts
@@ -0,0 +1,86 @@
+import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
+
+/** Clés courtes du registre fournisseurs (provider-registry.ts). */
+export type ProviderIconKey = 'yt' | 'dm' | 'tw' | 'pt' | 'od' | 'ru';
+
+/**
+ * Marque d'une source, dessinée au trait et colorée en `currentColor` :
+ * - l'icône hérite de la couleur du bouton, donc l'état actif / masqué
+ * reste lisible sans ajouter une pastille de couleur à côté ;
+ * - un seul style graphique pour les six sources, cohérent avec les icônes
+ * d'interface (œil, chevron…) de la même barre.
+ *
+ * Les formes sont volontairement géométriques et sobres : l'identité vient du
+ * geste (bouton lecture, bulle de discussion, initiale), pas d'un logo coloré
+ * qui ne serait plus lisible une fois réduit à 18 px.
+ */
+@Component({
+ selector: 'app-provider-icon',
+ standalone: true,
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ template: `
+ @switch (normalized) {
+ @case ('yt') {
+
+
+ }
+ @case ('tw') {
+
+
+ }
+ @case ('dm') {
+
+
+ }
+ @case ('pt') {
+
+
+ }
+ @case ('od') {
+
+
+ }
+ @case ('ru') {
+
+
+ }
+ }
+ `
+})
+export class ProviderIconComponent {
+ /** Clé courte du fournisseur. Inconnue => aucun rendu. */
+ @Input() key: ProviderIconKey | string | null | undefined;
+ /** Taille en px (carré). */
+ @Input() size = 18;
+
+ /** Clé normalisée ; seules les six clés connues dessinent quelque chose. */
+ get normalized(): ProviderIconKey | null {
+ const k = String(this.key || '').toLowerCase();
+ return (['yt', 'dm', 'tw', 'pt', 'od', 'ru'] as const).includes(k as ProviderIconKey)
+ ? (k as ProviderIconKey)
+ : null;
+ }
+}
diff --git a/src/components/search/search.component.html b/src/components/search/search.component.html
index 2665008..9335ae5 100644
--- a/src/components/search/search.component.html
+++ b/src/components/search/search.component.html
@@ -14,24 +14,45 @@
}
@if (hasQuery()) {
-
+
+
+
{{ 'search.hint' | t }}
} - @if (hasQuery()) { + @if (hasQuery() && railsOpen()) { -