diff --git a/src/assets/images/recommendations/anne-marchadier.jpg b/src/assets/images/recommendations/anne-marchadier.jpg new file mode 100644 index 0000000..4175643 Binary files /dev/null and b/src/assets/images/recommendations/anne-marchadier.jpg differ diff --git a/src/assets/images/recommendations/benoit-sarda.jpg b/src/assets/images/recommendations/benoit-sarda.jpg new file mode 100644 index 0000000..4010451 Binary files /dev/null and b/src/assets/images/recommendations/benoit-sarda.jpg differ diff --git a/src/assets/images/recommendations/benoit-talbot.jpg b/src/assets/images/recommendations/benoit-talbot.jpg new file mode 100644 index 0000000..26979cd Binary files /dev/null and b/src/assets/images/recommendations/benoit-talbot.jpg differ diff --git a/src/assets/images/recommendations/laurent-perez.jpg b/src/assets/images/recommendations/laurent-perez.jpg new file mode 100644 index 0000000..26ceaf3 Binary files /dev/null and b/src/assets/images/recommendations/laurent-perez.jpg differ diff --git a/src/assets/images/recommendations/matthieu-diouron.jpg b/src/assets/images/recommendations/matthieu-diouron.jpg new file mode 100644 index 0000000..f55fcef Binary files /dev/null and b/src/assets/images/recommendations/matthieu-diouron.jpg differ diff --git a/src/assets/images/recommendations/maxime-boudier.jpg b/src/assets/images/recommendations/maxime-boudier.jpg new file mode 100644 index 0000000..37ec42a Binary files /dev/null and b/src/assets/images/recommendations/maxime-boudier.jpg differ diff --git a/src/assets/images/recommendations/pascal-gentil.jpg b/src/assets/images/recommendations/pascal-gentil.jpg new file mode 100644 index 0000000..f5093c9 Binary files /dev/null and b/src/assets/images/recommendations/pascal-gentil.jpg differ diff --git a/src/components/code/FeaturedRecommendation.astro b/src/components/code/FeaturedRecommendation.astro index e173260..7390697 100644 --- a/src/components/code/FeaturedRecommendation.astro +++ b/src/components/code/FeaturedRecommendation.astro @@ -2,15 +2,25 @@ import { Image } from "astro:assets"; import type { ImageMetadata } from "astro"; +const avatarImages = import.meta.glob<{ default: ImageMetadata }>( + '/src/assets/images/recommendations/*.{jpg,jpeg,png,webp}', + { eager: true } +); + interface Props { author: string; authorRole: string; company: string; text: string; - avatar?: ImageMetadata; + avatar?: string; + url?: string; } -const { author, authorRole, company, text, avatar } = Astro.props; +const { author, authorRole, company, text, avatar, url } = Astro.props; + +const avatarImage = avatar + ? avatarImages[`/src/assets/images/recommendations/${avatar}`]?.default + : undefined; const truncated = text.length > 200 ? text.slice(0, 200).replace(/\s+\S*$/, '') + '...' : text; @@ -27,9 +37,9 @@ const initials = author "{truncated}"

- {avatar ? ( + {avatarImage ? ( {author} )} - {author} + {url ? ( + + {author} + + + ) : ( + {author} + )} · {authorRole}, {company}
diff --git a/src/components/code/RecommendationCard.astro b/src/components/code/RecommendationCard.astro index efa2388..b7b9647 100644 --- a/src/components/code/RecommendationCard.astro +++ b/src/components/code/RecommendationCard.astro @@ -2,17 +2,27 @@ import { Image } from "astro:assets"; import type { ImageMetadata } from "astro"; +const avatarImages = import.meta.glob<{ default: ImageMetadata }>( + '/src/assets/images/recommendations/*.{jpg,jpeg,png,webp}', + { eager: true } +); + interface Props { author: string; authorRole: string; company: string; text: string; date: Date; - avatar?: ImageMetadata; + avatar?: string; + url?: string; lang?: string; } -const { author, authorRole, company, text, date, avatar, lang = 'fr' } = Astro.props; +const { author, authorRole, company, text, date, avatar, url, lang = 'fr' } = Astro.props; + +const avatarImage = avatar + ? avatarImages[`/src/assets/images/recommendations/${avatar}`]?.default + : undefined; const dateLocales: Record = { fr: 'fr-FR', en: 'en-US', ar: 'ar-SA' }; const formattedDate = date.toLocaleDateString(dateLocales[lang] || 'fr-FR', { @@ -44,9 +54,9 @@ const avatarGradient = colors[colorIndex];

- {avatar ? ( + {avatarImage ? ( {author} )} - {author} + {url ? ( + + {author} + + + ) : ( + {author} + )} {authorRole} · {company} {formattedDate} diff --git a/src/content.config.ts b/src/content.config.ts index 2fd9e39..61793c6 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -72,11 +72,12 @@ const experiencesCollection = defineCollection({ const recommendationsCollection = defineCollection({ loader: glob({ pattern: "**/*.md", base: "./src/content/recommendations" }), - schema: ({ image }) => z.object({ + schema: z.object({ author: z.string(), authorRole: z.string(), company: z.string(), - avatar: image().optional(), + avatar: z.string().optional(), + url: z.string().url().optional(), date: z.date(), relationship: z.string().optional(), lang: z.enum(['fr', 'en']).default('fr'), diff --git a/src/content/recommendations/anne-marchadier.md b/src/content/recommendations/anne-marchadier.md index 83d2df1..93dfd6e 100644 --- a/src/content/recommendations/anne-marchadier.md +++ b/src/content/recommendations/anne-marchadier.md @@ -2,6 +2,8 @@ author: "Anne Marchadier Valmont" authorRole: "Responsable administratif" company: "4CAD Group" +avatar: anne-marchadier.jpg +url: https://www.linkedin.com/in/anne-marchadier-valmont-50421a12 date: 2009-08-19 lang: "fr" --- diff --git a/src/content/recommendations/antoine-wolff.md b/src/content/recommendations/antoine-wolff.md index 95b359e..dbd2487 100644 --- a/src/content/recommendations/antoine-wolff.md +++ b/src/content/recommendations/antoine-wolff.md @@ -2,6 +2,7 @@ author: "Antoine Wolff" authorRole: "Développeur, graphiste et chef de projet" company: "LeCollectif" +url: https://www.linkedin.com/in/wolffantoine date: 2020-12-07 lang: "fr" --- diff --git a/src/content/recommendations/benoit-sarda.md b/src/content/recommendations/benoit-sarda.md index 4ff888d..73d9f00 100644 --- a/src/content/recommendations/benoit-sarda.md +++ b/src/content/recommendations/benoit-sarda.md @@ -2,6 +2,8 @@ author: "Benoit Sarda" authorRole: "Sr Solution Architect, Manuf" company: "Amazon Web Services (AWS)" +avatar: benoit-sarda.jpg +url: https://www.linkedin.com/in/benoitsarda date: 2011-12-07 lang: "fr" --- diff --git a/src/content/recommendations/benoit-talbot.md b/src/content/recommendations/benoit-talbot.md index 05f2b01..2e68769 100644 --- a/src/content/recommendations/benoit-talbot.md +++ b/src/content/recommendations/benoit-talbot.md @@ -2,6 +2,8 @@ author: "Benoit Talbot" authorRole: "Consultant technico-fonctionel Sage ERP X3" company: "Concept ERP" +avatar: benoit-talbot.jpg +url: https://www.linkedin.com/in/benoit-talbot-65610a81 date: 2015-01-29 lang: "fr" --- diff --git a/src/content/recommendations/bouchra-ghaoui.md b/src/content/recommendations/bouchra-ghaoui.md index ecc09f0..1d1b782 100644 --- a/src/content/recommendations/bouchra-ghaoui.md +++ b/src/content/recommendations/bouchra-ghaoui.md @@ -2,6 +2,7 @@ author: "Bouchra Ghaoui" authorRole: "Senior Engagement Manager" company: "Capgemini" +url: https://www.linkedin.com/in/bouchra-ghaoui-46509a10 date: 2011-12-09 lang: "fr" --- diff --git a/src/content/recommendations/daniel-gall.md b/src/content/recommendations/daniel-gall.md index 04ce22d..e96fcc7 100644 --- a/src/content/recommendations/daniel-gall.md +++ b/src/content/recommendations/daniel-gall.md @@ -2,6 +2,7 @@ author: "Daniel Gall" authorRole: "Consultant" company: "Taos Conseil" +url: https://www.linkedin.com/in/daniel-g-385524 date: 2011-12-07 lang: "fr" --- diff --git a/src/content/recommendations/gregoire-lacoste.md b/src/content/recommendations/gregoire-lacoste.md index 69a6f81..044529e 100644 --- a/src/content/recommendations/gregoire-lacoste.md +++ b/src/content/recommendations/gregoire-lacoste.md @@ -2,6 +2,7 @@ author: "Grégoire Lacoste" authorRole: "Chief Product Officer" company: "CertifiCall" +url: https://www.linkedin.com/in/gregoirelacoste date: 2020-12-08 lang: "fr" --- diff --git a/src/content/recommendations/guillaume-gendrillon.md b/src/content/recommendations/guillaume-gendrillon.md index 39839c2..b4a3e90 100644 --- a/src/content/recommendations/guillaume-gendrillon.md +++ b/src/content/recommendations/guillaume-gendrillon.md @@ -2,6 +2,7 @@ author: "Guillaume Gendrillon" authorRole: "Lead designer Information Voyageur et signalétique" company: "RATPgroup" +url: https://www.linkedin.com/in/guillaumegendrillon date: 2011-12-05 lang: "fr" --- diff --git a/src/content/recommendations/laurent-perez.md b/src/content/recommendations/laurent-perez.md index 0f4a4d2..64d97e0 100644 --- a/src/content/recommendations/laurent-perez.md +++ b/src/content/recommendations/laurent-perez.md @@ -2,6 +2,8 @@ author: "Laurent Perez" authorRole: "Senior Developer" company: "itk" +avatar: laurent-perez.jpg +url: https://www.linkedin.com/in/laurentperez date: 2009-09-07 lang: "en" --- diff --git a/src/content/recommendations/matthieu-diouron.md b/src/content/recommendations/matthieu-diouron.md index 75227be..6a59aa1 100644 --- a/src/content/recommendations/matthieu-diouron.md +++ b/src/content/recommendations/matthieu-diouron.md @@ -2,6 +2,8 @@ author: "Matthieu Diouron" authorRole: "Director of Business Development" company: "T-Systems France" +avatar: matthieu-diouron.jpg +url: https://www.linkedin.com/in/mdiouron date: 2009-09-09 lang: "fr" --- diff --git a/src/content/recommendations/maxime-boudier.md b/src/content/recommendations/maxime-boudier.md index 0177628..8995e32 100644 --- a/src/content/recommendations/maxime-boudier.md +++ b/src/content/recommendations/maxime-boudier.md @@ -2,6 +2,8 @@ author: "Maxime Boudier" authorRole: "Staff Web Engineer" company: "SNCF Connect & Tech" +avatar: maxime-boudier.jpg +url: https://www.linkedin.com/in/maximeboudier date: 2020-12-12 lang: "fr" --- diff --git a/src/content/recommendations/olivier-cornudet.md b/src/content/recommendations/olivier-cornudet.md index 79e5087..4a30311 100644 --- a/src/content/recommendations/olivier-cornudet.md +++ b/src/content/recommendations/olivier-cornudet.md @@ -2,6 +2,7 @@ author: "Olivier Cornudet" authorRole: "Consultant manager" company: "e-THEMIS" +url: https://www.linkedin.com/in/olivier-cornudet-9a398738 date: 2015-02-11 lang: "fr" --- diff --git a/src/content/recommendations/pascal-gentil.md b/src/content/recommendations/pascal-gentil.md index 20d2db1..0a01edf 100644 --- a/src/content/recommendations/pascal-gentil.md +++ b/src/content/recommendations/pascal-gentil.md @@ -2,6 +2,8 @@ author: "Pascal Gentil" authorRole: "Chef de projet Sage X3" company: "YOUR PARTNER" +avatar: pascal-gentil.jpg +url: https://www.linkedin.com/in/pascalgentil date: 2015-02-08 lang: "fr" --- diff --git a/src/content/recommendations/vanessa-boissard.md b/src/content/recommendations/vanessa-boissard.md index d482c65..3983b82 100644 --- a/src/content/recommendations/vanessa-boissard.md +++ b/src/content/recommendations/vanessa-boissard.md @@ -2,6 +2,7 @@ author: "Vanessa Boissard" authorRole: "Psychologue sociale" company: "AlterAlliance" +url: https://www.linkedin.com/in/vanessaboissard date: 2011-12-05 lang: "fr" --- diff --git a/src/pages/ar/برمجة/index.astro b/src/pages/ar/برمجة/index.astro index 7440eec..0966fde 100644 --- a/src/pages/ar/برمجة/index.astro +++ b/src/pages/ar/برمجة/index.astro @@ -100,6 +100,7 @@ const recommendationTexts = recommendations.map((rec) => ({ company={rec.data.company} text={rec.text} avatar={rec.data.avatar} + url={rec.data.url} /> ))}
diff --git a/src/pages/ar/برمجة/توصيات.astro b/src/pages/ar/برمجة/توصيات.astro index bc21436..8709147 100644 --- a/src/pages/ar/برمجة/توصيات.astro +++ b/src/pages/ar/برمجة/توصيات.astro @@ -34,6 +34,7 @@ const recommendations = (await getCollection("recommendations")) text={rec.body || ''} date={rec.data.date} avatar={rec.data.avatar} + url={rec.data.url} lang={rec.data.lang} /> diff --git a/src/pages/code/index.astro b/src/pages/code/index.astro index 971bcff..389eebb 100644 --- a/src/pages/code/index.astro +++ b/src/pages/code/index.astro @@ -100,6 +100,7 @@ const recommendationTexts = recommendations.map((rec) => ({ company={rec.data.company} text={rec.text} avatar={rec.data.avatar} + url={rec.data.url} /> ))} diff --git a/src/pages/code/recommandations.astro b/src/pages/code/recommandations.astro index 19386c5..a30074a 100644 --- a/src/pages/code/recommandations.astro +++ b/src/pages/code/recommandations.astro @@ -34,6 +34,7 @@ const recommendations = (await getCollection("recommendations")) text={rec.body || ''} date={rec.data.date} avatar={rec.data.avatar} + url={rec.data.url} lang={rec.data.lang} /> diff --git a/src/pages/en/code/index.astro b/src/pages/en/code/index.astro index 66b84b5..a361626 100644 --- a/src/pages/en/code/index.astro +++ b/src/pages/en/code/index.astro @@ -100,6 +100,7 @@ const recommendationTexts = recommendations.map((rec) => ({ company={rec.data.company} text={rec.text} avatar={rec.data.avatar} + url={rec.data.url} /> ))} diff --git a/src/pages/en/code/recommendations.astro b/src/pages/en/code/recommendations.astro index 09fd84b..78a35f5 100644 --- a/src/pages/en/code/recommendations.astro +++ b/src/pages/en/code/recommendations.astro @@ -34,6 +34,7 @@ const recommendations = (await getCollection("recommendations")) text={rec.body || ''} date={rec.data.date} avatar={rec.data.avatar} + url={rec.data.url} lang={rec.data.lang} />