Some checks are pending
E2E / Playwright e2e (push) Waiting to run
- Introduced turbopack alias for canvas in next.config.mjs. - Updated package.json scripts for development and branding tasks. - Added new dependencies for Tiptap extensions. - Implemented new demo layouts for agenda, contacts, drive, and mail applications. - Enhanced globals.css for improved theming and splash screen animations. - Added OAuth callback handling for drive mounts. - Updated layout components to integrate new demo shells and improve structure.
762 lines
21 KiB
TypeScript
762 lines
21 KiB
TypeScript
import type { FullContact } from "@/lib/contacts/types"
|
|
|
|
let _id = 0
|
|
function nextId(): string {
|
|
return `demo-contact-${String(++_id).padStart(3, "0")}`
|
|
}
|
|
|
|
const NOW = 1716000000000
|
|
|
|
function c(
|
|
partial: Omit<FullContact, "id" | "createdAt" | "updatedAt"> & {
|
|
createdAt?: number
|
|
updatedAt?: number
|
|
}
|
|
): FullContact {
|
|
return {
|
|
id: nextId(),
|
|
createdAt: NOW,
|
|
updatedAt: NOW,
|
|
...partial,
|
|
} as FullContact
|
|
}
|
|
|
|
const DEMO_CONTACT_AVATARS = Array.from({ length: 14 }, (_, index) =>
|
|
`/demo/contacts/avatars/avatar-${String(index + 1).padStart(2, "0")}.jpg`
|
|
)
|
|
|
|
function applyDemoAvatars(contacts: FullContact[]): FullContact[] {
|
|
let avatarIndex = 0
|
|
return contacts.map((contact, index) => {
|
|
if (index % 5 >= 2) return contact
|
|
const avatarUrl = DEMO_CONTACT_AVATARS[avatarIndex % DEMO_CONTACT_AVATARS.length]
|
|
avatarIndex += 1
|
|
return { ...contact, avatarUrl }
|
|
})
|
|
}
|
|
|
|
const RAW_DEMO_CONTACTS: FullContact[] = [
|
|
c({
|
|
firstName: "",
|
|
lastName: "",
|
|
phones: [{ value: "+33 6 47 82 19 03", label: "mobile" }],
|
|
emails: [],
|
|
notes: "Numéro reçu par SMS — identité inconnue.",
|
|
}),
|
|
c({
|
|
firstName: "Atelier",
|
|
lastName: "Nord",
|
|
emails: [{ value: "contact@atelier-nord.fr", label: "work" }],
|
|
phones: [{ value: "+33 1 76 54 32 10", label: "work" }],
|
|
company: "Atelier Nord",
|
|
website: "https://atelier-nord.fr",
|
|
addresses: [
|
|
{
|
|
street: "18 rue de la Fonderie",
|
|
city: "Lille",
|
|
region: "Hauts-de-France",
|
|
postalCode: "59000",
|
|
country: "France",
|
|
label: "Siège",
|
|
},
|
|
],
|
|
}),
|
|
c({
|
|
firstName: "Camille",
|
|
lastName: "Visiteur",
|
|
emails: [
|
|
{ value: "camille@demo.ulti", label: "work" },
|
|
{ value: "camille.visiteur@gmail.com", label: "personal" },
|
|
],
|
|
phones: [{ value: "+33 6 12 00 45 78", label: "mobile" }],
|
|
company: "Ultimail",
|
|
department: "Produit",
|
|
jobTitle: "Product Manager",
|
|
nicknames: ["Cam"],
|
|
labels: ["Équipe", "Favori"],
|
|
birthday: { day: 14, month: 6, year: 1991 },
|
|
notes: "Compte démo — calendrier personnel et boîte mail de démonstration.",
|
|
addresses: [
|
|
{
|
|
street: "42 avenue Parmentier",
|
|
city: "Paris",
|
|
region: "Île-de-France",
|
|
postalCode: "75011",
|
|
country: "France",
|
|
label: "home",
|
|
},
|
|
],
|
|
socialProfiles: [
|
|
{ value: "https://linkedin.com/in/camille-visiteur", label: "LinkedIn" },
|
|
{ value: "https://x.com/camille_visiteur", label: "X" },
|
|
],
|
|
interactionCount: 128,
|
|
}),
|
|
c({
|
|
firstName: "Léa",
|
|
lastName: "Fontaine",
|
|
emails: [
|
|
{ value: "lea.fontaine@atelier-nord.fr", label: "work" },
|
|
{ value: "lea.fontaine.perso@gmail.com", label: "personal" },
|
|
],
|
|
phones: [
|
|
{ value: "+33 6 78 45 12 90", label: "mobile" },
|
|
{ value: "+33 1 76 54 32 11", label: "work" },
|
|
],
|
|
company: "Atelier Nord",
|
|
department: "Produit",
|
|
jobTitle: "Head of Product",
|
|
nicknames: ["Léa F."],
|
|
labels: ["Client", "Produit"],
|
|
birthday: { day: 3, month: 11, year: 1988 },
|
|
notes: "Organisatrice du stand-up et du comité produit. Préfère les CR dans UltiDrive.",
|
|
addresses: [
|
|
{
|
|
street: "18 rue de la Fonderie",
|
|
city: "Lille",
|
|
region: "Hauts-de-France",
|
|
postalCode: "59000",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
{
|
|
street: "7 quai de la Loire",
|
|
city: "Paris",
|
|
region: "Île-de-France",
|
|
postalCode: "75019",
|
|
country: "France",
|
|
label: "home",
|
|
},
|
|
],
|
|
socialProfiles: [
|
|
{ value: "https://linkedin.com/in/lea-fontaine", label: "LinkedIn" },
|
|
],
|
|
interactionCount: 54,
|
|
}),
|
|
c({
|
|
firstName: "Marc",
|
|
lastName: "Delcourt",
|
|
emails: [{ value: "marc@delcourt-conseil.com", label: "work" }],
|
|
phones: [{ value: "+33 6 55 88 22 41", label: "mobile" }],
|
|
company: "Delcourt Conseil",
|
|
jobTitle: "Consultant senior",
|
|
department: "Transformation digitale",
|
|
addresses: [
|
|
{
|
|
street: "3 place de la Bourse",
|
|
city: "Bordeaux",
|
|
region: "Nouvelle-Aquitaine",
|
|
postalCode: "33000",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
],
|
|
interactionCount: 19,
|
|
}),
|
|
c({
|
|
firstName: "Anaïs",
|
|
lastName: "Rivet",
|
|
emails: [
|
|
{ value: "anais.rivet@coop-numerique.org", label: "work" },
|
|
{ value: "anais.rivet@gmail.com", label: "personal" },
|
|
],
|
|
phones: [{ value: "+33 6 33 77 44 12", label: "mobile" }],
|
|
company: "Coop Numérique",
|
|
department: "Communauté",
|
|
jobTitle: "Community Lead",
|
|
labels: ["Réseau"],
|
|
addresses: [
|
|
{
|
|
street: "12 cours Julien",
|
|
city: "Marseille",
|
|
region: "Provence-Alpes-Côte d'Azur",
|
|
postalCode: "13006",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [
|
|
{ value: "https://linkedin.com/in/anais-rivet", label: "LinkedIn" },
|
|
{ value: "https://x.com/anais_rivet", label: "X" },
|
|
],
|
|
interactionCount: 31,
|
|
}),
|
|
c({
|
|
firstName: "Sophie",
|
|
lastName: "Morel",
|
|
emails: [{ value: "sophie@startup-io.fr", label: "work" }],
|
|
phones: [
|
|
{ value: "+33 6 90 11 22 33", label: "mobile" },
|
|
{ value: "+33 1 84 88 12 00", label: "work" },
|
|
],
|
|
company: "Startup IO",
|
|
jobTitle: "CEO",
|
|
department: "Direction",
|
|
nicknames: ["Soph"],
|
|
birthday: { day: 22, month: 4, year: 1985 },
|
|
notes: "Rencontrée au salon VivaTech — intéressée par l'intégration webhooks.",
|
|
addresses: [
|
|
{
|
|
street: "55 rue du Faubourg Saint-Honoré",
|
|
city: "Paris",
|
|
region: "Île-de-France",
|
|
postalCode: "75008",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [{ value: "https://linkedin.com/in/sophie-morel", label: "LinkedIn" }],
|
|
interactionCount: 12,
|
|
}),
|
|
c({
|
|
firstName: "Amadou",
|
|
lastName: "Diop",
|
|
emails: [{ value: "amadou.diop@outlook.com", label: "personal" }],
|
|
phones: [{ value: "+221 77 456 78 90", label: "mobile" }],
|
|
company: "Dakar Startup Hub",
|
|
jobTitle: "Program Manager",
|
|
addresses: [
|
|
{
|
|
street: "15 Avenue Cheikh Anta Diop",
|
|
city: "Dakar",
|
|
region: "Dakar",
|
|
postalCode: "18524",
|
|
country: "Sénégal",
|
|
label: "work",
|
|
},
|
|
],
|
|
isOtherContact: true,
|
|
interactionCount: 7,
|
|
}),
|
|
c({
|
|
firstName: "Hélène",
|
|
lastName: "Marchand",
|
|
emails: [
|
|
{ value: "helene.marchand@lyon-tech.fr", label: "work" },
|
|
{ value: "helene.m@gmail.com", label: "personal" },
|
|
],
|
|
phones: [{ value: "+33 6 44 55 66 77", label: "mobile" }],
|
|
company: "Lyon Tech",
|
|
department: "Ingénierie",
|
|
jobTitle: "Lead Backend",
|
|
nicknames: ["Hélène M."],
|
|
labels: ["Tech", "Partenaire"],
|
|
birthday: { day: 8, month: 2, year: 1990 },
|
|
addresses: [
|
|
{
|
|
street: "24 rue de la République",
|
|
city: "Lyon",
|
|
region: "Auvergne-Rhône-Alpes",
|
|
postalCode: "69002",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [{ value: "https://linkedin.com/in/helene-marchand", label: "LinkedIn" }],
|
|
interactionCount: 38,
|
|
}),
|
|
c({
|
|
firstName: "Thomas",
|
|
lastName: "Giraud",
|
|
emails: [{ value: "thomas.giraud@toulouse-data.fr", label: "work" }],
|
|
phones: [{ value: "+33 6 21 43 65 87", label: "mobile" }],
|
|
company: "Toulouse Data",
|
|
jobTitle: "Data Engineer",
|
|
department: "Analytics",
|
|
addresses: [
|
|
{
|
|
street: "8 allées Jean Jaurès",
|
|
city: "Toulouse",
|
|
region: "Occitanie",
|
|
postalCode: "31000",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
],
|
|
notes: "Spécialiste pipelines ETL — contact pour le projet BI.",
|
|
}),
|
|
c({
|
|
firstName: "Émilie",
|
|
lastName: "Rousseau",
|
|
emails: [{ value: "emilie.rousseau@gmail.com", label: "personal" }],
|
|
phones: [{ value: "+33 6 88 77 66 55", label: "mobile" }],
|
|
nicknames: ["Mimi"],
|
|
birthday: { day: 17, month: 9, year: 1993 },
|
|
labels: ["Amis"],
|
|
addresses: [
|
|
{
|
|
street: "14 rue Sainte-Catherine",
|
|
city: "Bordeaux",
|
|
region: "Nouvelle-Aquitaine",
|
|
postalCode: "33000",
|
|
country: "France",
|
|
label: "home",
|
|
},
|
|
],
|
|
interactionCount: 22,
|
|
}),
|
|
c({
|
|
firstName: "Florian",
|
|
lastName: "Meyer",
|
|
emails: [
|
|
{ value: "florian.meyer@gmx.de", label: "personal" },
|
|
{ value: "f.meyer@berlin-dev.io", label: "work" },
|
|
],
|
|
phones: [{ value: "+49 170 1234567", label: "mobile" }],
|
|
company: "Berlin Dev",
|
|
jobTitle: "DevOps Engineer",
|
|
department: "Infrastructure",
|
|
addresses: [
|
|
{
|
|
street: "Torstraße 102",
|
|
city: "Berlin",
|
|
region: "Berlin",
|
|
postalCode: "10119",
|
|
country: "Germany",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [
|
|
{ value: "https://linkedin.com/in/florian-meyer", label: "LinkedIn" },
|
|
{ value: "https://x.com/florian_meyer", label: "X" },
|
|
],
|
|
interactionCount: 15,
|
|
}),
|
|
c({
|
|
firstName: "Javier",
|
|
lastName: "Muñoz",
|
|
emails: [{ value: "javier.munoz@gmail.com", label: "personal" }],
|
|
phones: [{ value: "+34 612 345 678", label: "mobile" }],
|
|
company: "Telefónica",
|
|
jobTitle: "Data Scientist",
|
|
addresses: [
|
|
{
|
|
street: "Calle de Alcalá 48",
|
|
city: "Madrid",
|
|
region: "Comunidad de Madrid",
|
|
postalCode: "28014",
|
|
country: "Spain",
|
|
label: "work",
|
|
},
|
|
],
|
|
labels: ["Conférence"],
|
|
isOtherContact: true,
|
|
}),
|
|
c({
|
|
firstName: "Chloé",
|
|
lastName: "Tremblay",
|
|
emails: [
|
|
{ value: "chloe.tremblay@ultimail.ca", label: "work" },
|
|
{ value: "chloe.t@gmail.com", label: "personal" },
|
|
],
|
|
phones: [
|
|
{ value: "+1 514 555 0198", label: "mobile" },
|
|
{ value: "+1 514 555 0100", label: "work" },
|
|
],
|
|
company: "Ultimail Canada",
|
|
department: "Support",
|
|
jobTitle: "Customer Success",
|
|
nicknames: ["Chlo"],
|
|
birthday: { day: 5, month: 12, year: 1994 },
|
|
addresses: [
|
|
{
|
|
street: "1010 Rue Sainte-Catherine Ouest",
|
|
city: "Montréal",
|
|
region: "Québec",
|
|
postalCode: "H3B 1G1",
|
|
country: "Canada",
|
|
label: "work",
|
|
},
|
|
{
|
|
street: "4525 Avenue du Parc",
|
|
city: "Montréal",
|
|
region: "Québec",
|
|
postalCode: "H2V 4E7",
|
|
country: "Canada",
|
|
label: "home",
|
|
},
|
|
],
|
|
socialProfiles: [{ value: "https://linkedin.com/in/chloe-tremblay", label: "LinkedIn" }],
|
|
interactionCount: 41,
|
|
}),
|
|
c({
|
|
firstName: "Hana",
|
|
lastName: "Yamamoto",
|
|
emails: [{ value: "hana.yamamoto@gmail.com", label: "personal" }],
|
|
phones: [{ value: "+81 90 1234 5678", label: "mobile" }],
|
|
company: "Nippon Design Co.",
|
|
jobTitle: "UX Researcher",
|
|
addresses: [
|
|
{
|
|
street: "2-8-1 Nishi-Shinjuku",
|
|
city: "Tokyo",
|
|
region: "Tokyo",
|
|
postalCode: "163-8001",
|
|
country: "Japan",
|
|
label: "work",
|
|
},
|
|
],
|
|
notes: "Collaboration design system — fuseau UTC+9.",
|
|
labels: ["Design"],
|
|
}),
|
|
c({
|
|
firstName: "Priya",
|
|
lastName: "Sharma",
|
|
emails: [
|
|
{ value: "priya.sharma@outlook.com", label: "personal" },
|
|
{ value: "priya@infosys-partner.in", label: "work" },
|
|
],
|
|
phones: [{ value: "+91 98765 43210", label: "mobile" }],
|
|
company: "Infosys",
|
|
department: "Delivery",
|
|
jobTitle: "Team Lead",
|
|
addresses: [
|
|
{
|
|
street: "44 MG Road",
|
|
city: "Bengaluru",
|
|
region: "Karnataka",
|
|
postalCode: "560001",
|
|
country: "India",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [{ value: "https://linkedin.com/in/priya-sharma", label: "LinkedIn" }],
|
|
interactionCount: 26,
|
|
}),
|
|
c({
|
|
firstName: "Augustin",
|
|
lastName: "Ferrand",
|
|
emails: [{ value: "augustin.ferrand@proton.me", label: "personal" }],
|
|
phones: [],
|
|
isOtherContact: true,
|
|
notes: "Ajouté automatiquement depuis un mail reçu.",
|
|
}),
|
|
c({
|
|
firstName: "Nadia",
|
|
lastName: "Haddad",
|
|
emails: [{ value: "nadia.haddad@gmail.com", label: "personal" }],
|
|
phones: [{ value: "+33 6 43 21 09 87", label: "mobile" }],
|
|
company: "Mistral AI",
|
|
jobTitle: "Research Engineer",
|
|
department: "R&D",
|
|
labels: ["IA"],
|
|
addresses: [
|
|
{
|
|
street: "15 rue des Halles",
|
|
city: "Paris",
|
|
region: "Île-de-France",
|
|
postalCode: "75001",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [{ value: "https://x.com/nadia_haddad", label: "X" }],
|
|
interactionCount: 9,
|
|
}),
|
|
c({
|
|
firstName: "Vincent",
|
|
lastName: "Morel",
|
|
emails: [
|
|
{ value: "vincent.morel@gmail.com", label: "personal" },
|
|
{ value: "vincent.morel@blablacar.com", label: "work" },
|
|
],
|
|
phones: [{ value: "+33 6 65 78 90 12", label: "mobile" }],
|
|
company: "BlaBlaCar",
|
|
jobTitle: "VP Engineering",
|
|
department: "Platform",
|
|
nicknames: ["Vince"],
|
|
birthday: { day: 12, month: 4, year: 1987 },
|
|
addresses: [
|
|
{
|
|
street: "84 avenue de la République",
|
|
city: "Paris",
|
|
region: "Île-de-France",
|
|
postalCode: "75011",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [
|
|
{ value: "https://linkedin.com/in/vincent-morel", label: "LinkedIn" },
|
|
],
|
|
interactionCount: 42,
|
|
}),
|
|
c({
|
|
firstName: "Fatou",
|
|
lastName: "Sow",
|
|
emails: [{ value: "fatou.sow@orange.sn", label: "work" }],
|
|
phones: [{ value: "+221 70 123 45 67", label: "mobile" }],
|
|
company: "Orange Sénégal",
|
|
jobTitle: "Account Manager",
|
|
addresses: [
|
|
{
|
|
street: "Km 8 Route de Ouakam",
|
|
city: "Dakar",
|
|
region: "Dakar",
|
|
postalCode: "18524",
|
|
country: "Sénégal",
|
|
label: "work",
|
|
},
|
|
],
|
|
labels: ["Partenaire"],
|
|
interactionCount: 14,
|
|
}),
|
|
c({
|
|
firstName: "Lucie",
|
|
lastName: "Simon",
|
|
emails: [{ value: "lucie.simon@proton.me", label: "personal" }],
|
|
phones: [{ value: "+33 6 67 89 01 23", label: "mobile" }],
|
|
nicknames: ["Lu"],
|
|
birthday: { day: 28, month: 2, year: 1997 },
|
|
labels: ["Famille"],
|
|
addresses: [
|
|
{
|
|
street: "6 place du Capitole",
|
|
city: "Toulouse",
|
|
region: "Occitanie",
|
|
postalCode: "31000",
|
|
country: "France",
|
|
label: "home",
|
|
},
|
|
],
|
|
}),
|
|
c({
|
|
firstName: "Kevin",
|
|
lastName: "Park",
|
|
emails: [{ value: "kevin.park@gmail.com", label: "personal" }],
|
|
phones: [{ value: "+82 10 1234 5678", label: "mobile" }],
|
|
company: "Samsung",
|
|
jobTitle: "Frontend Engineer",
|
|
department: "Mobile",
|
|
addresses: [
|
|
{
|
|
street: "129 Samsung-ro",
|
|
city: "Suwon",
|
|
region: "Gyeonggi",
|
|
postalCode: "16677",
|
|
country: "South Korea",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [{ value: "https://linkedin.com/in/kevin-park", label: "LinkedIn" }],
|
|
}),
|
|
c({
|
|
firstName: "Manon",
|
|
lastName: "Leroy",
|
|
emails: [
|
|
{ value: "manon.leroy@outlook.fr", label: "personal" },
|
|
{ value: "manon.leroy@ovhcloud.com", label: "work" },
|
|
],
|
|
phones: [{ value: "+33 6 32 10 98 76", label: "mobile" }],
|
|
company: "OVHcloud",
|
|
jobTitle: "SRE",
|
|
department: "Cloud Ops",
|
|
notes: "Contact infra — escalade incidents P1.",
|
|
addresses: [
|
|
{
|
|
street: "2 rue Kellermann",
|
|
city: "Roubaix",
|
|
region: "Hauts-de-France",
|
|
postalCode: "59100",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
],
|
|
interactionCount: 33,
|
|
}),
|
|
c({
|
|
firstName: "Rachid",
|
|
lastName: "Ouali",
|
|
emails: [{ value: "rachid.ouali@yahoo.fr", label: "personal" }],
|
|
phones: [{ value: "+33 6 87 65 43 21", label: "mobile" }],
|
|
company: "Freelance",
|
|
jobTitle: "Photographe",
|
|
addresses: [
|
|
{
|
|
street: "23 cours Mirabeau",
|
|
city: "Aix-en-Provence",
|
|
region: "Provence-Alpes-Côte d'Azur",
|
|
postalCode: "13100",
|
|
country: "France",
|
|
label: "home",
|
|
},
|
|
],
|
|
labels: ["Créatif"],
|
|
}),
|
|
c({
|
|
firstName: "Elena",
|
|
lastName: "Kuznetsova",
|
|
emails: [{ value: "elena.kuznetsova@mail.ru", label: "personal" }],
|
|
phones: [{ value: "+7 916 123 45 67", label: "mobile" }],
|
|
company: "Yandex",
|
|
jobTitle: "ML Engineer",
|
|
addresses: [
|
|
{
|
|
street: "16 Leo Tolstoy Street",
|
|
city: "Moscow",
|
|
region: "Moscow",
|
|
postalCode: "119021",
|
|
country: "Russia",
|
|
label: "work",
|
|
},
|
|
],
|
|
interactionCount: 6,
|
|
}),
|
|
c({
|
|
firstName: "Youssef",
|
|
lastName: "Alaoui",
|
|
emails: [
|
|
{ value: "youssef.alaoui@outlook.com", label: "personal" },
|
|
{ value: "y.alaoui@ram.ma", label: "work" },
|
|
],
|
|
phones: [{ value: "+212 6 45 67 89 01", label: "mobile" }],
|
|
company: "Royal Air Maroc",
|
|
jobTitle: "IT Manager",
|
|
department: "Systèmes",
|
|
addresses: [
|
|
{
|
|
street: "Aéroport Mohammed V",
|
|
city: "Casablanca",
|
|
region: "Casablanca-Settat",
|
|
postalCode: "20000",
|
|
country: "Morocco",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [{ value: "https://linkedin.com/in/youssef-alaoui", label: "LinkedIn" }],
|
|
interactionCount: 11,
|
|
}),
|
|
c({
|
|
firstName: "Charlotte",
|
|
lastName: "Martin",
|
|
emails: [{ value: "charlotte.martin@gmail.com", label: "personal" }],
|
|
phones: [{ value: "+33 6 22 11 00 99", label: "mobile" }],
|
|
birthday: { day: 5, month: 11, year: 1995 },
|
|
nicknames: ["Cha"],
|
|
addresses: [
|
|
{
|
|
street: "9 rue de la République",
|
|
city: "Lyon",
|
|
region: "Auvergne-Rhône-Alpes",
|
|
postalCode: "69001",
|
|
country: "France",
|
|
label: "home",
|
|
},
|
|
],
|
|
labels: ["Amis"],
|
|
interactionCount: 18,
|
|
}),
|
|
c({
|
|
firstName: "Gabriel",
|
|
lastName: "Santos",
|
|
emails: [{ value: "gabriel.santos@outlook.com", label: "personal" }],
|
|
phones: [{ value: "+55 11 98765 4321", label: "mobile" }],
|
|
company: "Nubank",
|
|
jobTitle: "Product Designer",
|
|
addresses: [
|
|
{
|
|
street: "Rua Capote Valente 39",
|
|
city: "São Paulo",
|
|
region: "SP",
|
|
postalCode: "05409-000",
|
|
country: "Brazil",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [
|
|
{ value: "https://linkedin.com/in/gabriel-santos", label: "LinkedIn" },
|
|
{ value: "https://x.com/gabriel_santos", label: "X" },
|
|
],
|
|
}),
|
|
c({
|
|
firstName: "Inès",
|
|
lastName: "Belhadj",
|
|
emails: [{ value: "ines.belhadj@gmail.com", label: "personal" }],
|
|
phones: [],
|
|
company: "Doctolib",
|
|
jobTitle: "iOS Developer",
|
|
department: "Mobile",
|
|
notes: "Ancienne collègue — recommandation stage.",
|
|
addresses: [
|
|
{
|
|
street: "54 quai de la Rapée",
|
|
city: "Paris",
|
|
region: "Île-de-France",
|
|
postalCode: "75012",
|
|
country: "France",
|
|
label: "work",
|
|
},
|
|
],
|
|
}),
|
|
c({
|
|
firstName: "William",
|
|
lastName: "Hartmann",
|
|
emails: [{ value: "william.hartmann@gmx.de", label: "personal" }],
|
|
phones: [{ value: "+49 160 9876543", label: "mobile" }],
|
|
company: "Bosch",
|
|
jobTitle: "Embedded Engineer",
|
|
addresses: [
|
|
{
|
|
street: "Robert-Bosch-Platz 1",
|
|
city: "Stuttgart",
|
|
region: "Baden-Württemberg",
|
|
postalCode: "70839",
|
|
country: "Germany",
|
|
label: "work",
|
|
},
|
|
],
|
|
interactionCount: 4,
|
|
}),
|
|
c({
|
|
firstName: "Sandra",
|
|
lastName: "Oliveira",
|
|
emails: [{ value: "sandra.oliveira@outlook.com", label: "personal" }],
|
|
phones: [{ value: "+351 912 345 678", label: "mobile" }],
|
|
company: "Farfetch",
|
|
jobTitle: "QA Lead",
|
|
addresses: [
|
|
{
|
|
street: "Rua do Ouro 240",
|
|
city: "Lisbon",
|
|
region: "Lisboa",
|
|
postalCode: "1100-063",
|
|
country: "Portugal",
|
|
label: "work",
|
|
},
|
|
],
|
|
labels: ["QA"],
|
|
birthday: { day: 30, month: 6, year: 1990 },
|
|
}),
|
|
c({
|
|
firstName: "Mehdi",
|
|
lastName: "Bouaziz",
|
|
emails: [{ value: "mehdi.bouaziz@outlook.com", label: "personal" }],
|
|
phones: [{ value: "+216 55 123 456", label: "mobile" }],
|
|
company: "Sofrecom",
|
|
jobTitle: "Architecte solutions",
|
|
department: "Consulting",
|
|
addresses: [
|
|
{
|
|
street: "Les Berges du Lac",
|
|
city: "Tunis",
|
|
region: "Tunis",
|
|
postalCode: "1053",
|
|
country: "Tunisia",
|
|
label: "work",
|
|
},
|
|
],
|
|
socialProfiles: [{ value: "https://linkedin.com/in/mehdi-bouaziz", label: "LinkedIn" }],
|
|
interactionCount: 8,
|
|
}),
|
|
].sort((a, b) => {
|
|
const nameA = `${a.firstName} ${a.lastName}`.toLowerCase()
|
|
const nameB = `${b.firstName} ${b.lastName}`.toLowerCase()
|
|
return nameA.localeCompare(nameB)
|
|
})
|
|
|
|
export const DEMO_FULL_CONTACTS: FullContact[] = applyDemoAvatars(RAW_DEMO_CONTACTS)
|
|
|
|
export function createInitialDemoContacts(): FullContact[] {
|
|
return [...DEMO_FULL_CONTACTS]
|
|
}
|