export type DemoFolder = | "inbox" | "starred" | "sent" | "archive" | "trash" | "drafts" export type DemoEmail = { id: string fromName: string fromEmail: string subject: string preview: string /** Paragraphes du corps du message. */ body: string[] time: string unread: boolean starred: boolean important?: boolean hasAttachment?: boolean folder: Exclude /** Pastille principale en liste (couleur explicite). */ label?: { text: string; color: string } /** Libellés de tri et dossiers (texte nav exact). */ tags?: string[] } export const DEMO_USER = { name: "Camille Visiteur", email: "camille@demo.ulti", } export const DEMO_EMAILS: DemoEmail[] = [ { id: "m1", fromName: "Léa Fontaine", fromEmail: "lea.fontaine@atelier-nord.fr", subject: "Compte rendu — comité produit du 9 juin", preview: "Bonjour Camille, voici le compte rendu de notre comité produit. Les décisions clés sont en gras…", body: [ "Bonjour Camille,", "Voici le compte rendu de notre comité produit de mardi. Les décisions clés : lancement de la version 2.4 au 1er juillet, gel des nouvelles fonctionnalités à partir du 20 juin, et revue sécurité planifiée la semaine prochaine.", "Le document complet est partagé dans UltiDrive (dossier Produit > Comités). N'hésite pas à commenter directement dedans, la co-édition est active.", "Bonne journée,\nLéa", ], time: "09:42", unread: true, starred: false, folder: "inbox", label: { text: "Produit", color: "#4f6df5" }, tags: ["Produit"], }, { id: "m2", fromName: "UltiAI", fromEmail: "assistant@demo.ulti", subject: "Votre résumé du matin — 7 mails traités", preview: "Pendant la nuit : 2 mails urgents détectés, 4 newsletters archivées automatiquement, 1 facture classée…", body: [ "Bonjour Camille,", "Voici ce que j'ai préparé pour vous ce matin :", "• 2 mails marqués urgents (réponse attendue avant midi)\n• 4 newsletters archivées selon vos règles\n• 1 facture détectée et classée dans Comptabilité\n• 1 invitation agenda en attente de réponse", "Astuce : vous pouvez ajuster mes règles de tri dans Réglages > Tri IA.", ], time: "08:15", unread: true, starred: true, folder: "inbox", label: { text: "IA", color: "#9a5cf0" }, tags: ["IA"], }, { id: "m3", fromName: "Marc Delcourt", fromEmail: "marc@delcourt-conseil.com", subject: "Re: Proposition de partenariat — version finale", preview: "Parfait pour moi. J'ai signé la dernière version dans le document partagé, on peut avancer…", body: [ "Bonjour,", "Parfait pour moi. J'ai relu la dernière version dans le document partagé et tout est bon — on peut avancer sur la signature cette semaine.", "Merci pour la réactivité !", "Marc", ], time: "Hier", unread: false, starred: true, important: true, folder: "inbox", tags: ["Partenaires"], }, { id: "m4", fromName: "Notifications UltiDrive", fromEmail: "drive@demo.ulti", subject: "Sarah a commenté « Budget 2026.ultidoc »", preview: "« Je propose qu'on revoie la ligne infrastructure à la hausse, le trafic a doublé depuis janvier »…", body: [ "Sarah Lemoine a ajouté un commentaire sur le document Budget 2026 :", "« Je propose qu'on revoie la ligne infrastructure à la hausse, le trafic a doublé depuis janvier. »", "Ouvrez le document pour répondre ou résoudre le commentaire.", ], time: "Hier", unread: false, starred: false, folder: "inbox", label: { text: "Drive", color: "#1fb6c9" }, tags: ["Drive", "Comptabilité"], }, { id: "m5", fromName: "Anaïs Rivet", fromEmail: "anais.rivet@coop-numerique.org", subject: "Migration terminée 🎉 — retour d'expérience", preview: "On a finalisé la migration des 40 comptes la semaine dernière. Bilan : aucune perte, équipe ravie…", body: [ "Salut Camille,", "On a finalisé la migration des 40 comptes la semaine dernière. Bilan : aucune perte de données, l'équipe a retrouvé ses habitudes en une journée grâce à l'interface familière.", "Je te prépare un retour d'expérience complet pour le blog si ça t'intéresse.", "Anaïs", ], time: "Lun.", unread: false, starred: false, folder: "inbox", tags: ["Clients"], }, { id: "m6", fromName: "Camille Visiteur", fromEmail: "camille@demo.ulti", subject: "Ordre du jour — réunion d'équipe jeudi", preview: "Bonjour à tous, voici l'ordre du jour pour jeudi : avancement sprint, démo des nouveautés, points bloquants…", body: [ "Bonjour à tous,", "Voici l'ordre du jour pour la réunion de jeudi 10h :", "1. Avancement du sprint en cours\n2. Démo des nouveautés UltiDocs\n3. Points bloquants et arbitrages\n4. Divers", "À jeudi !", ], time: "Lun.", unread: false, starred: false, folder: "sent", }, { id: "m7", fromName: "Infra Ulti", fromEmail: "infra@demo.ulti", subject: "Sauvegarde hebdomadaire effectuée ✓", preview: "La sauvegarde chiffrée de votre instance s'est terminée sans erreur (durée : 4 min 12 s)…", body: [ "La sauvegarde chiffrée de votre instance s'est terminée sans erreur.", "Durée : 4 min 12 s — 18,4 Go — intégrité vérifiée.", "Prochaine sauvegarde planifiée : dimanche 03:00.", ], time: "Dim.", unread: false, starred: false, folder: "archive", tags: ["Mises à jour"], }, { id: "m8", fromName: "Open Source Weekly", fromEmail: "newsletter@opensource-weekly.io", subject: "Cette semaine : PostgreSQL 17, Rust 1.88, et 3 outils souverains", preview: "Bonjour Camille, voici la sélection de la semaine : nouveautés bases de données, écosystème Rust…", body: [ "Bonjour Camille,", "Voici la sélection de la semaine dans l'écosystème open source :", "• PostgreSQL 17 : améliorations du partitionnement\n• Rust 1.88 : async en stabilisation\n• 3 suites souveraines à surveiller pour remplacer Google Workspace", "Bonne lecture !", ], time: "07:30", unread: true, starred: false, folder: "inbox", tags: ["Newsletters"], }, { id: "m9", fromName: "Ultimail", fromEmail: "promo@demo.ulti", subject: "−20 % sur Ultimail Pro — offre de lancement", preview: "Passez à Ultimail Pro avant le 30 juin : stockage illimité, UltiMeet intégré, agents IA avancés…", body: [ "Bonjour Camille,", "Pour fêter le lancement public, profitez de −20 % sur Ultimail Pro jusqu'au 30 juin.", "Inclus : stockage Drive illimité, salles UltiMeet persistantes, règles de tri IA illimitées et support prioritaire.", "Code : LAUNCH20", ], time: "06:55", unread: true, starred: false, folder: "inbox", tags: ["Promotions"], }, { id: "m10", fromName: "LinkedIn", fromEmail: "notifications@linkedin.com", subject: "Thomas Martin a commenté votre publication", preview: "« Belle initiative sur la souveraineté numérique — on en parle au prochain meetup ? »…", body: [ "Thomas Martin a commenté votre publication :", "« Belle initiative sur la souveraineté numérique — on en parle au prochain meetup ? »", "Voir la conversation sur LinkedIn.", ], time: "Hier", unread: false, starred: false, folder: "inbox", tags: ["Réseaux sociaux"], }, { id: "m11", fromName: "GitHub", fromEmail: "noreply@github.com", subject: "[ulti-backend] Dependabot : 2 mises à jour de sécurité", preview: "Dependabot a ouvert 2 PR sur ulti-backend : golang.org/x/crypto et github.com/lib/pq…", body: [ "Dependabot a détecté 2 vulnérabilités corrigeables sur ulti-backend :", "• golang.org/x/crypto — CVE-2026-0142\n• github.com/lib/pq — mise à jour mineure recommandée", "Consultez les pull requests ou activez l'auto-merge si vos checks CI passent.", ], time: "Mar.", unread: false, starred: false, folder: "inbox", tags: ["Mises à jour", "Produit"], label: { text: "Produit", color: "#4f6df5" }, }, { id: "m12", fromName: "Communauté Ultimail", fromEmail: "forum@demo.ulti", subject: "Nouvelle réponse : « Webhooks agenda — bonnes pratiques »", preview: "Julien a répondu à votre fil : « Nous utilisons des templates JSON avec variables $event.title… »", body: [ "Julien a répondu à votre fil sur le forum :", "« Nous utilisons des templates JSON avec variables $event.title et $event.attendees pour brancher Slack et n8n sans code custom. »", "Voir la discussion complète sur forum.demo.ulti.", ], time: "Mar.", unread: true, starred: false, folder: "inbox", tags: ["Forums"], }, { id: "m13", fromName: "Amazon Business", fromEmail: "order-update@amazon.fr", subject: "Commande n° 402-8819203-7720156 — expédiée", preview: "Votre commande (clavier Keychron K3, hub USB-C) a été expédiée. Livraison prévue demain…", body: [ "Bonjour Camille,", "Votre commande a été expédiée.", "Articles : Keychron K3 (AZERTY), hub USB-C 7 ports\nLivraison estimée : demain avant 20h", ], time: "Mer.", unread: false, starred: false, folder: "inbox", tags: ["Achats"], }, { id: "m14", fromName: "SNCF Connect", fromEmail: "billetterie@sncf.com", subject: "Votre billet Paris → Lyon — vendredi 14 juin", preview: "Trajet TGV 6641, départ 08:12 gare de Lyon, place 42 voiture 7. Billet disponible dans l'app…", body: [ "Bonjour Camille,", "Voici le récapitulatif de votre trajet :", "TGV 6641 — Paris Gare de Lyon → Lyon Part-Dieu\nVendredi 14 juin, départ 08:12 — arrivée 10:04\nPlace 42, voiture 7", "Votre billet est disponible dans l'application SNCF Connect.", ], time: "Mer.", unread: false, starred: false, hasAttachment: true, folder: "inbox", tags: ["Déplacements", "Voyages"], }, { id: "m15", fromName: "Stripe", fromEmail: "billing@stripe.com", subject: "Facture Ultimail Pro — juin 2026", preview: "Montant : 79,00 € TTC. Paiement par carte se terminant par 4242. PDF joint…", body: [ "Bonjour,", "Votre facture Ultimail Pro pour juin 2026 est disponible.", "Montant : 79,00 € TTC\nPériode : 1–30 juin 2026\nMoyen de paiement : carte •••• 4242", "Le PDF est joint à ce message.", ], time: "Jeu.", unread: false, starred: false, hasAttachment: true, folder: "inbox", tags: ["Finance", "Factures", "Comptabilité"], }, { id: "m16", fromName: "RH Ultimail", fromEmail: "rh@demo.ulti", subject: "Documents d'onboarding — à compléter avant lundi", preview: "Bonjour Camille, merci de signer le règlement intérieur et la fiche mutuelle dans UltiSign…", body: [ "Bonjour Camille,", "Pour finaliser votre dossier administratif, merci de compléter dans UltiSign :", "• Règlement intérieur\n• Fiche mutuelle\n• Attestation de télétravail", "Deadline : lundi 17 juin.", ], time: "Jeu.", unread: true, starred: false, folder: "inbox", tags: ["RH"], }, { id: "m17", fromName: "Maman", fromEmail: "maman.visiteur@gmail.com", subject: "Repas de famille dimanche — qui amène le dessert ?", preview: "Salut ma chérie, on confirme dimanche 12h chez tata Claire. Tu peux amener la tarte aux fraises ?", body: [ "Salut ma chérie,", "On confirme le repas dimanche 12h chez tata Claire. Tu peux amener la tarte aux fraises comme l'an dernier ?", "Gros bisous,\nMaman", ], time: "Ven.", unread: false, starred: false, folder: "inbox", tags: ["Famille"], }, { id: "m18", fromName: "Airbnb", fromEmail: "automated@airbnb.com", subject: "Rappel : séjour à Annecy dans 10 jours", preview: "Check-in le 22 juin à partir de 16h. Code d'accès et instructions dans l'application…", body: [ "Bonjour Camille,", "Votre séjour à Annecy approche (22–29 juin).", "Check-in : 16h\nAdresse et code d'accès disponibles dans l'application 24 h avant l'arrivée.", ], time: "Sam.", unread: false, starred: false, folder: "inbox", tags: ["Voyages", "Déplacements"], }, { id: "m19", fromName: "Support ACME Corp", fromEmail: "support@acme-corp.fr", subject: "Ticket #8842 — déploiement Ultimail en production", preview: "Bonjour, nous avons validé le cutover DNS pour lundi 6h. Merci de confirmer la fenêtre de maintenance…", body: [ "Bonjour Camille,", "Nous avons validé le cutover DNS pour lundi 6h00 (TTL réduit à 300 s).", "Merci de confirmer la fenêtre de maintenance et la personne de contact sur site.", "Support ACME — ticket #8842", ], time: "09:10", unread: true, starred: false, important: true, folder: "inbox", tags: ["Clients"], }, { id: "m20", fromName: "Camille Visiteur", fromEmail: "camille@demo.ulti", subject: "Re: Roadmap Q3 — points à clarifier", preview: "Merci Léa, je reviens vers toi demain avec une proposition sur UltiMeet et les webhooks agenda…", body: [ "Merci Léa pour le CR.", "Je reviens vers toi demain avec une proposition consolidée sur UltiMeet et les webhooks agenda.", ], time: "10:05", unread: false, starred: false, folder: "drafts", }, { id: "m21", fromName: "OldPromo", fromEmail: "deals@spammy-shop.net", subject: "Dernière chance — −90 % sur tout le site", preview: "Ne manquez pas cette offre exceptionnelle…", body: [ "Ne manquez pas cette offre exceptionnelle valable 24 h seulement.", "Cliquez ici pour en profiter.", ], time: "Dim.", unread: false, starred: false, folder: "trash", }, { id: "m22", fromName: "Camille Visiteur", fromEmail: "camille@demo.ulti", subject: "Compte-rendu migration ACME — version client", preview: "Bonjour Marc, comme convenu voici la version client du CR de migration. N'hésitez pas à annoter…", body: [ "Bonjour Marc,", "Comme convenu, voici la version client du compte-rendu de migration.", "Le document est sur UltiDrive (dossier Clients > ACME). N'hésitez pas à annoter directement.", "Camille", ], time: "Mar.", unread: false, starred: false, folder: "sent", }, { id: "m23", fromName: "Sophie Bernard", fromEmail: "sophie@startup-io.fr", subject: "Intro investisseurs — suite à UltiMeet", preview: "Merci pour la démo hier. Nos partners seraient intéressés par un call la semaine prochaine…", body: [ "Bonjour Camille,", "Merci pour la démo UltiMeet hier — l'interface a vraiment bluffé l'équipe.", "Nos partners seraient intéressés par un call la semaine prochaine. Tu es dispo mardi ou jeudi ?", "Sophie", ], time: "11:20", unread: true, starred: true, folder: "inbox", tags: ["Partenaires"], }, { id: "m24", fromName: "OVHcloud", fromEmail: "facturation@ovh.com", subject: "Facture hébergement — mai 2026", preview: "Montant : 142,80 € HT. Services : 2 instances, backup object storage…", body: [ "Bonjour,", "Votre facture OVHcloud de mai 2026 est disponible.", "Montant : 142,80 € HT\nServices : 2 instances VPS, backup object storage", ], time: "Lun.", unread: false, starred: false, hasAttachment: true, folder: "archive", tags: ["Factures", "Finance", "Comptabilité"], }, { id: "m25", fromName: "Notion", fromEmail: "team@mail.notion.so", subject: "Camille vous a mentionné dans « Sprint board Q2 »", preview: "@Camille peux-tu valider les specs webhooks avant la review de vendredi ?", body: [ "Camille vous a mentionné dans « Sprint board Q2 » :", "@Camille peux-tu valider les specs webhooks avant la review de vendredi ?", "Ouvrir dans Notion", ], time: "08:48", unread: true, starred: false, folder: "inbox", tags: ["Produit"], label: { text: "Produit", color: "#4f6df5" }, }, ]