508 lines
17 KiB
TypeScript
508 lines
17 KiB
TypeScript
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<DemoFolder, "starred">
|
||
/** 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",
|
||
}
|
||
|
||
/** Fixed calendar day for demo relative times ("09:42", "Mer.", …). Wednesday 2026-06-17. */
|
||
export const DEMO_REFERENCE_DATE_UTC = {
|
||
year: 2026,
|
||
month: 5,
|
||
day: 17,
|
||
} as const
|
||
|
||
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" },
|
||
},
|
||
]
|