Inline upload row: icon tile + filename + size metadata + optional native "view file" link + actions slot. state="empty" shows a dashed border on bg-page; state="has-file" shows a solid white card with olive icon. Pass viewHref + viewLabel to surface the link natively on the left of the action slot.
Fichier image présent. Carte blanche, icône olive par défaut, lien Voir le fichier à gauche du slot action
Fichier PDF présent. Icône lucide file-text en override. Même structure visuelle
État vide. Bordure pointillée sur bg-page, icône upload, juste le bouton d'action
Bascule live entre empty et has-file. Le lien Voir le fichier apparaît/disparaît selon l'état
state = "has-file"