SPEC: Widget "Derniers fichiers ouverts" sur la page principale
1. Objectif
Remplacer le message d'accueil actuel (#welcome) par un widget dashboard professionnel affichant les XX derniers fichiers ouverts. Le nombre de fichiers affichés sera configurable via les paramètres existants (cfg-recent-limit).
2. Architecture du composant
3. Design UI/UX
3.1 Structure HTML (dans #content-area)
3.2 Layout Grid
- Desktop (>1024px): Grid 3 colonnes
- Tablet (768-1024px): Grid 2 colonnes
- Mobile (<768px): Grid 1 colonne
3.3 Style des cartes (.dashboard-card)
| Élément |
Style |
| Container |
border-radius: 12px, padding: 16px, fond var(--bg-secondary) |
| Hover |
Légère élévation avec box-shadow, bordure accent |
| Icône |
32x32px, couleur accent |
| Titre |
font-weight: 600, font-size: 14px, truncation avec ellipsis |
| Chemin |
font-size: 11px, color: var(--text-muted) |
| Tags |
Pills compacts, même style que sidebar |
| Horodatage |
Badge discret avec icône clock |
| Badge vault |
Position absolute en haut-droit |
3.4 États
| État |
Description |
| Chargement |
Skeleton cards animées (pulse) |
| Données |
Grid de cartes |
| Vide |
Icône + message centré |
| Erreur |
Toast notification |
4. Interactions
| Action |
Comportement |
| Clic sur carte |
Ouvre le fichier (openFile(vault, path)) |
| Changement filter vault |
Recharge les données avec filtre |
| Hover carte |
Élévation visuelle, curseur pointer |
| Fermeture fichier |
Affiche le dashboard (si plus de fichier ouvert) |
5. Intégration JavaScript
5.1 Nouveau module DashboardRecentWidget
5.2 Points d'intégration
- Au démarrage:
DashboardRecentWidget.init() dans DOMContentLoaded
- Ouverture fichier: Dashboard masqué automatiquement
- Fermeture fichier: Dashboard affiché si
activeEditor === null
- Filtre vault: Recharge via
loadRecentFiles de la sidebar (partage du cache)
Le widget réutilisera _recentFilesCache et renderRecentList mais avec un template de carte différent pour le dashboard.
6. Fichiers à modifier
| Fichier |
Modification |
frontend/index.html |
Remplacer #welcome par #dashboard-home |
frontend/style.css |
Ajouter .dashboard-home, .dashboard-card, skeleton, animations |
frontend/app.js |
Ajouter DashboardRecentWidget, modifier showWelcome(), intégration hooks |
7. Paramètres configurables
| Paramètre |
Source |
Description |
recent_files_limit |
Backend config |
Nombre max de fichiers (5-100, défaut: 20) |
8. Accessibilité
- Rôles ARIA appropriés (
role="region", aria-label)
- Navigation clavier fonctionnelle
- Contraste des couleurs conforme WCAG 2.1 AA
- Support screen reader pour les états vides/chargement
9. Responsive breakpoints
10. Animations
| Événement |
Animation |
| Entrée cartes |
Fade-in + slide-up staggeré (50ms entre cartes) |
| Hover carte |
Scale 1.02 + shadow |
| Skeleton loading |
Pulse animation |
| Transition vault filter |
Fade out/in des cartes |