# 🎯 Prompt Windsurf — ObsiViewer Nimbus UI (Desktop + Mobile)
## ObsiViewer → UI/UX "Nimbus-like" (simple, dense, rapide)
**Rôle & mode :** Agis comme **Staff Frontend Engineer Angular 20 + UX designer**. Raisonnement détaillé autorisé. Tu as les pleins pouvoirs de refactor UI, d'ajout de composants, et de migration CSS vers Tailwind. Conserve la compatibilité de toutes features existantes.
**Contrainte majeure :** L'interface doit être **100% responsive** et compatible à 100% avec les modes Desktop et Mobile (téléphone et tablette). Un **bouton toggle** dans la navbar permet de basculer entre l'ancienne interface et la nouvelle sans perte d'état. Assure une expérience fluide sur tous les appareils, avec des adaptations spécifiques pour les écrans tactiles (touch targets ≥44x44px), gestures (swipe, pull-to-refresh), et breakpoints optimisés pour téléphones (xs/sm), tablettes (md), et desktops (lg/xl/2xl).
---
## Contexte rapide
* Projet : **ObsiViewer** (Angular 20 + Tailwind, Node/Express backend).
* Objectif : Refondre l'interface selon un design **Nimbus Notes / FuseBase Note**-like, en intégrant fidèlement la lecture anatomique et UX décrite ci-dessous.
* Cœurs d'usage : navigation par **dossiers**, **tags**, **recherche**, **lecture markdown** plein écran, **ToC** à droite, **tri et filtres** rapides.
* **Nouveauté** : Design adaptatif complet (Desktop/Mobile/Tablet) avec UI toggle persisté.
### Description détaillée de l'interface Nimbus (à reproduire fidèlement)
Voici une **lecture “anatomique” et UX** de l’interface Web de *Nimbus Notes / FuseBase Note*, rédigée comme le ferait un lead designer qui doit la reproduire fidèlement. Cette description guide toute la refonte et doit être intégrée à 100% dans l'implémentation, en veillant à la compatibilité Desktop/Mobile/Tablet (par exemple, colonnes empilées ou onglets sur mobile, drawers tactiles sur tablette).
---
# 1) Philosophie produit (ce qui guide toute l’UI)
* **Workspace-first** : tout vit dans un *espace de travail* isolé (pages, dossiers, tags, membres). On change d’espace, on change d’univers de contenu – ce n’est pas un simple filtre global. ([FuseBase][1])
* **Organisation bi-axiale** : **dossiers (hiérarchie)** + **tags (multi-catégories)**. Les dossiers structurent, les tags donnent le contexte transversal et la recherche rapide. ([FuseBase][2])
* **Recherche d’abord, navigation ensuite** : la *top bar* met la recherche au centre, avec des *chips* de filtres persistants (“All folders / All tags / All pages”) qui rendent l’état des filtres **visible, éditable et réinitialisable** sans quitter le flux.
* **Progressive disclosure** : menus condensés, panneaux contextuels (picker dossiers/tags, panneau d’outline à droite) qui n’apparaissent que “on demand” pour ne jamais surcharger l’écran.
* **Un contenu, plusieurs façades** : la page est éditée dans l’app interne, mais peut être **partagée** ou **publiée** dans un **Portal** externe *brandé*. Les commandes “Add to portal / Share” sont toujours visibles dans l’éditeur. ([FuseBase][3])
---
# 2) Layout global (3 panneaux + overlays)
## A. Barre supérieure (globale)
* **Champ de recherche** large, centré, avec **icône filtre** (entonnoir) qui ouvre les options avancées.
* Bouton **“+ Page”** (CTA positif turquoise) : création immédiate dans le contexte courant (workspace + dossier sélectionné).
* À droite, dans la *content toolbar* du document : **Ask AI**, **Add to portal**, **Share**, loupe locale, pièces jointes/annotations, **toggle plein écran**, menu kebab. (Les intitulés et la présence “Ask AI / Portals” sont aussi documentés côté guides.) ([FuseBase][4])
## B. Colonne de gauche (navigation primaire)
* **Quick Links** puis **Folders / Tags / Trash** — arborescence compacte avec triangles de disclosure.
* **Création de sous-dossier au survol** via un **+** qui apparaît à droite du dossier (pattern hover-reveal). ([FuseBase][2])
* **Sélecteur d’organisation/workspace** et **switch de thème** dans le footer du rail (menu avatar : “Light theme”, Settings, etc.). Le changement d’espace est aussi accessible depuis la colonne et le menu avatar. ([FuseBase][5])
* **État** : le dossier actif est surligné, le compteur de pages peut apparaître à côté des libellés (donnant un feedback rapide sur la densité).
**Traits de design**
* Icônes de dossiers colorées + emojis autorisés dans les noms (lisibilité + repères mnémotechniques).
* Densité **compacte** mais respirante (gouttière + padding régulier), contrastes élevés en dark mode.
## C. Colonne centrale (index / résultats)
* En-tête d’index : *chips* **All folders ▾**, **All tags ▾**, **All pages ▾**. Chacune ouvre un **picker flottant** (overlay) :
* **Picker dossiers** : recherche interne, sélection multi, sous-dossiers avec *chevron/›*, actions **Clear / Done**, badges *+1*, *+15* reflétant le nombre de sélections.
* **Picker tags** : liste alphabétique, **checkmarks** pour les tags actifs, **Clear / Done** en bas.
* En dessous, **liste des pages** : tuiles en une ligne avec **titre**, **date**, **snippet** (extrait), **petites icônes** (ex. carte *bookmark* pour les liens sauvegardés). Le *hover* change légèrement le fond ; l’élément sélectionné est **surligné** (bleu).
* **Message “Found pages: N”** + lien **Clear** lorsque des filtres sont actifs (feed-back lisible de l’état de recherche).
**Subtilités d’usage**
* Les *chips* de filtre restent visibles pendant la navigation (ancrage cognitif).
* Chaque picker possède sa **barre de recherche locale**, ce qui réduit la charge mentale sur de gros jeux de tags/dossiers.
* Les *chips* affichent des **badges de comptage** (+1, +2) et un **caret** pour signifier qu’il s’agit d’un *menu stateful*, pas d’un simple label.
## D. Panneau de droite (lecteur/éditeur)
* **Titre de page** très lisible, méta-ligne en dessous (ex. *Add tags*), mini-icônes de statut.
* **Contenu riche** : titres, listes, *inline code*, *code fences*, callouts, objets embarqués, cartes “**Bookmark**” (prévisualisation d’URL avec titre/description/vignette). ([FuseBase][6])
* **Toolbar du document** (droite) :
* **Ask AI** (génération, résumé, etc.) ; **Add to portal** (publier la page dans une arborescence publique/privée) ; **Share** (lien partagé, droits). ([FuseBase][3])
* Loupe/“find in page”, attachements, rappel/notification si activés, **plein écran** avec raccourci (tooltip).
* **Panneau latéral contextuel (outline)** : petit bouton *hamburger* rond “dans la page” (à mi-hauteur, côté droit) qui **déplie un rail d’outline** listant les headings H1–H6 ; clic = **scroll-to**. (Très utile sur documents longs, *progressive disclosure*).
**Édition & Portals (workflow)**
* L’édition se fait **directement** côté web, et l’on peut **pousser** vers un *Portal* sans passer par un autre back-office : “Add to portal” + *drag & drop* vers la structure du Portal (depuis le rail). ([FuseBase][3])
## E. Overlays & états transitoires
* **Pickers** (Folders/Tags) : overlays centrés au-dessus de la colonne des résultats, avec **Clear/Done** persistants en pied.
* **Dark / Light** : toggles dans le menu avatar ; la **typographie/balances de gris** sont recalibrées (mode light très clair, mode dark très contrasté) pour garder le même *information scent*.
* **Notifications/Tooltips** : discrets, ancrés aux contrôles (ex. plein écran).
---
# 3) Micro-interactions & patterns récurrents
* **Hover-reveal** : le “+” pour créer un sous-dossier n’apparaît qu’au survol → garde l’arborescence propre. ([FuseBase][2])
* **Pills / Chips** avec **caret** + **badge** = *stateful filter* (on comprend d’un coup d’œil ce qui est filtré).
* **Sélection persistante** dans la liste : l’élément actif garde un **fond** et une **bordure** turquoise ; on ne “perd” pas la page lue.
* **Clear partout** : dans les pickers et au niveau global – la stratégie de *reset rapide* est omniprésente (réduction du coût d’exploration).
* **Hiérarchie visuelle stricte** : H1–H3 très différenciés, marges généreuses, *line-height* confortable (lecture longue).
---
# 4) Contenus & types spéciaux
* **Bookmarks** : carte enrichie (titre + description + vignette) → meilleure *scanability* des liens sauvegardés que du simple texte. ([FuseBase][6])
* **Tables/Databases** : vues avec tri, filtres, commentaires cellule, panneau de calcul (présents dans l’écosystème guides). ([FuseBase][4])
* **Web Clipper** : amène des pages propres (sans pubs), cohérent avec la carte Bookmark ; logique de capture → enrichissement → partage. ([FuseBase][7])
---
# 5) Accessibilité & lisibilité
* **Contrastes sûrs** (notamment en dark), tailles de cible suffisantes sur la top bar et les chips.
* **Iconographie descriptive** (dossier, tag, favoris, web card…) + emojis pour ancrage visuel rapide.
* **Réduction du *cognitive load*** : les options rarement utilisées sont “cachées” (kebab, hover-reveal), les actions courantes sont **toujours** visibles (Search, +Page, filtres).
---
# 6) Ce que l’UX “raconte” (le mode d’emploi implicite)
1. **Trouver** : commencez par *Search* et affinez avec *All folders / All tags*.
2. **Parcourir** : si vous êtes “dans” un dossier, l’index au centre sert de *tableau de bord* (dates + snippets).
3. **Éditer / Enrichir** : dans le panneau de droite, vous rédigez, taggez, joignez, bookmarquez.
4. **Diffuser** : *Share* pour du partage direct, **Add to portal** pour publier dans un espace externe gouverné (droits, branding). ([FuseBase][8])
---
# 7) Détails visibles dans vos captures (à reproduire à l’identique)
* **Top bar** : champ de recherche + icône filtre + **+ Page** (CTA turquoise).
* **Trio de chips** : “All folders ▾” (multi-sélection hiérarchique), “All tags ▾” (liste à coches), “All pages ▾”.
* **Liste** : ligne compacte, *hover*, *selected state* bleu, **date** en gris, **snippet** tronqué, petite icône (ex. “shopping cart” pour bookmark e-commerce).
* **Panneau d’outline** (badge hamburger circulaire flottant à droite du contenu) → rail d’outline repliable.
* **Menu avatar (footer gauche)** : **Light theme**, Settings, Upgrade, logout, etc.
* **Dark/Light** : la *skin* claire conserve l’architecture et les espacements, en ne changeant que la palette et les ombres.
---
## TL;DR — Nimbus en 8 principes à retenir (pour inspirer un redesign)
1. **Trois panneaux** stables (nav / index / contenu) + **overlays** transitoires.
2. **Filtres persistants** sous forme de **chips** toujours visibles.
3. **Pickers** riches (recherche locale, checkmarks, Clear/Done).
4. **Outline contextuel** à droite, déclenché **dans** la page.
5. **Action de création** unique, toujours au même endroit (**+ Page**).
6. **Workspaces** strictement séparés ; **Portals** pour l’externe. ([FuseBase][1])
7. **Bi-axe dossiers/tags** (structure + sens transversal). ([FuseBase][2])
8. **Share/Add to portal** omniprésents : écrire → publier est un **continuum**. ([FuseBase][8])
Si tu veux, je peux te livrer juste après un *spec UI* prêt à coder (grid, tailles, tokens couleur, comportements exacts des pickers) ou un **prompt Windsurf** pour cloner ces patterns dans ObsiViewer.
[1]: https://thefusebase.com/guides/basics/workspaces/?utm_source=chatgpt.com "Workspaces"
[2]: https://thefusebase.com/guides/basics/folders-and-tags/?utm_source=chatgpt.com "Folders and Tags"
[3]: https://thefusebase.com/guides/client-portal/how-to-manage-your-portal-from-the-web-version/?utm_source=chatgpt.com "How To Manage Your Portal From The Web Version"
[4]: https://thefusebase.com/guides/?utm_source=chatgpt.com "Guides Archive"
[5]: https://nimbusweb.me/fr/guides/getting-started/how-to-navigate/?utm_source=chatgpt.com "How to navigate"
[6]: https://nimbusweb.me/guides/basics/bookmarks/?utm_source=chatgpt.com "Bookmarks"
[7]: https://thefusebase.com/guides/web-clipper/nimbus-clipper-for-google-chrome/?utm_source=chatgpt.com "Nimbus Clipper for Google Chrome"
[8]: https://thefusebase.com/guides/embedding-sharing/shared-folders-and-pages/?utm_source=chatgpt.com "Shared folders and pages"
---
## 🎯 Objectif final (résumé)
### Desktop (≥1024px)
Refondre l'interface ObsiViewer en **3 colonnes** respectant fidèlement la description Nimbus :
1. **Sidebar gauche** (Quick Links, Dossiers arborescents, Tags) — Redimensionnable.
2. **Colonne centrale** Liste des pages (recherche, filtres dossiers/tags, tris, résultats virtualisés).
3. **Vue de page** à droite (lecture markdown, barre d'actions, **panneau sommaire/ToC** docké à l'extrême droite).
Le tout **compact, performant, thème clair/sombre**, navigation au clavier, états persistés localement.
### Mobile/Tablet (<1024px)
Une navigation **par onglets/drawer** intelligente, adaptée à la philosophie Nimbus (progressive disclosure, chips persistants, overlays tactiles) :
- **Tab 1 : Sidebar** (dossiers, tags, recherche) — Panneau full-width ou drawer collapsible.
- **Tab 2 : Liste** (résultats de recherche) — Full-width scrollable.
- **Tab 3 : Page** (markdown) — Full-width avec ToC inline collapsible ou drawer.
**Gestures** : Swipe horizontal pour navigation onglets, pull-to-refresh, tap = open item. Assure que les chips de filtres et pickers sont optimisés pour touch (tailles augmentées, overlays pleine largeur sur mobile).
---
## 📋 Architecture Feature Flag & Toggle
### 1) Toggle UI dans la NavBar
Ajouter un **bouton toggle** dans `src/app/layout/app-navbar/app-navbar.component.ts` :
```html