diff --git a/public/about/images/team/adnan.jpg b/public/about/images/team/adnan.jpg new file mode 100644 index 00000000..157983ef Binary files /dev/null and b/public/about/images/team/adnan.jpg differ diff --git a/public/about/images/team/britel.jpg b/public/about/images/team/britel.jpg new file mode 100644 index 00000000..0a07b73a Binary files /dev/null and b/public/about/images/team/britel.jpg differ diff --git a/public/about/images/team/default.jpg b/public/about/images/team/default.jpg new file mode 100644 index 00000000..b08c3b0a Binary files /dev/null and b/public/about/images/team/default.jpg differ diff --git a/public/about/images/team/imeriem.jpg b/public/about/images/team/imeriem.jpg new file mode 100644 index 00000000..5cfc35d4 Binary files /dev/null and b/public/about/images/team/imeriem.jpg differ diff --git a/public/about/images/team/isoubei.jpg b/public/about/images/team/isoubei.jpg new file mode 100644 index 00000000..db45068b Binary files /dev/null and b/public/about/images/team/isoubei.jpg differ diff --git a/public/about/images/team/kaizendae.jpg b/public/about/images/team/kaizendae.jpg new file mode 100644 index 00000000..7bd2fc72 Binary files /dev/null and b/public/about/images/team/kaizendae.jpg differ diff --git a/public/about/images/team/laytoun.jpg b/public/about/images/team/laytoun.jpg new file mode 100644 index 00000000..1e667e07 Binary files /dev/null and b/public/about/images/team/laytoun.jpg differ diff --git a/public/about/images/team/ofettal.jpg b/public/about/images/team/ofettal.jpg new file mode 100644 index 00000000..8025b506 Binary files /dev/null and b/public/about/images/team/ofettal.jpg differ diff --git a/public/about/images/team/soufyan.jpg b/public/about/images/team/soufyan.jpg new file mode 100644 index 00000000..7f305bd8 Binary files /dev/null and b/public/about/images/team/soufyan.jpg differ diff --git a/public/about/images/team/yosef.jpg b/public/about/images/team/yosef.jpg new file mode 100644 index 00000000..0569702e Binary files /dev/null and b/public/about/images/team/yosef.jpg differ diff --git a/src/components/about/member.astro b/src/components/about/member.astro new file mode 100644 index 00000000..c6eec380 --- /dev/null +++ b/src/components/about/member.astro @@ -0,0 +1,29 @@ +--- +import { Image } from "astro:assets"; +import { Icon } from "astro-icon/components"; + +const { name, x_handle, profile_image } = Astro.props; +--- + +
+ {name} +
+

{name}

+ +
+
diff --git a/src/components/about/team-members.json b/src/components/about/team-members.json new file mode 100644 index 00000000..be5a9621 --- /dev/null +++ b/src/components/about/team-members.json @@ -0,0 +1,65 @@ +[ + { + "id": 1, + "name": "Youssef El Azizi", + "x_handle": "@ElaziziYoussouf", + "profile_image": "/about/images/team/yosef.jpg", + "status": "active" + }, + { + "id": 2, + "name": "Mohammed Aboullaite", + "x_handle": "@laytoun", + "profile_image": "/about/images/team/laytoun.jpg", + "status": "active" + }, + { + "id": 3, + "name": "Mriem Zaid", + "x_handle": "@_iMeriem", + "profile_image": "/about/images/team/imeriem.jpg", + "status": "active" + }, + { + "id": 4, + "name": "Abderrahim SOUBAI-ELIDRISI", + "x_handle": "@soub4i", + "profile_image": "/about/images/team/isoubei.jpg", + "status": "active" + }, + { + "id": 5, + "name": "Otmane Fettal", + "x_handle": "@OFettal", + "profile_image": "/about/images/team/ofettal.jpg", + "status": "active" + }, + { + "id": 6, + "name": "Adnan M'RAKCHI", + "x_handle": "@_admerra", + "profile_image": "/about/images/team/adnan.jpg", + "status": "active" + }, + { + "id": 7, + "name": "Chaimaa BRITEL", + "x_handle": "@ChaimaaBritel", + "profile_image": "/about/images/team/britel.jpg", + "status": "active" + }, + { + "id": 8, + "name": "Abdelati EL ASRI", + "x_handle": "@kaizendae", + "profile_image": "/about/images/team/kaizendae.jpg", + "status": "active" + }, + { + "id": 9, + "name": "Soufyan El Foukahi", + "x_handle": "@soufyanAI", + "profile_image": "/about/images/team/soufyan.jpg", + "status": "past" + } +] \ No newline at end of file diff --git a/src/components/about/team.astro b/src/components/about/team.astro new file mode 100644 index 00000000..11a5fa88 --- /dev/null +++ b/src/components/about/team.astro @@ -0,0 +1,67 @@ +--- +import Member from "./member.astro"; +import { getCollection } from "astro:content"; + +const teamCollection = await getCollection("team"); +const teamMembers = teamCollection.map(member => ({ + name: member.data.name, + x_handle: member.data.x_handle, + profile_image: member.data.profile_image, + status: member.data.status, +})); + +const activeMembers = teamMembers.filter(member => member.status === "active"); +const pastMembers = teamMembers.filter(member => member.status === "past"); +--- + +
+
+ +

+ Meet Our Team +

+
+ { + activeMembers.map(member => ( + + )) + } +
+ + +

+ Former Team Members +

+

+ No effort goes unappreciated. On behalf of the community, we thank our + ex-team members for their contributions and lasting impact. 🙏 +

+
+ { + pastMembers.map(member => ( + + )) + } +
+
+
diff --git a/src/components/footer.astro b/src/components/footer.astro index 3fe09819..62eb8d6b 100644 --- a/src/components/footer.astro +++ b/src/components/footer.astro @@ -12,7 +12,7 @@ import { Icon } from "astro-icon/components"; href="https://github.com/your-repo-link" class="text-gray-400 hover:text-white" > - > This website's sourced code is on GitHub ↗ + > Source code is on GitHub ↗ diff --git a/src/config.ts b/src/config.ts index c3441231..0e9328ed 100644 --- a/src/config.ts +++ b/src/config.ts @@ -32,12 +32,12 @@ export const SOCIALS: SocialObjects = { active: true, }, youtube: { - href: "https://www.youtube.com/channel/UCW2WV7NKU0WPyuv4YoNSqBA", + href: "https://www.youtube.com/@GeeksBlaBla01", linkTitle: `${SITE.title} on YouTube`, active: true, }, linkedin: { - href: "https://www.linkedin.com/company/geeksblabla", + href: "https://www.linkedin.com/company/geeksblabla-community", linkTitle: `${SITE.title} on LinkedIn`, active: true, }, @@ -52,7 +52,7 @@ export const SOCIALS: SocialObjects = { active: true, }, instagram: { - href: "https://www.instagram.com/geeks_blabla", + href: "https://www.instagram.com/geeksblabla", linkTitle: `${SITE.title} on Instagram`, active: true, }, diff --git a/src/content/config.ts b/src/content/config.ts index 2b6d871e..95b3343b 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -1,7 +1,7 @@ import { file, glob } from "astro/loaders"; import { defineCollection } from "astro:content"; import { cldAssetsLoader } from "astro-cloudinary/loaders"; -import { episodeSchema } from "./shema"; +import { episodeSchema, teamSchema } from "./shema"; /** * Podcast collection * Read episodes markdown files from episodes folder in the root of the project @@ -29,4 +29,9 @@ const gallery = !import.meta.env.PUBLIC_CLOUDINARY_CLOUD_NAME }), }); -export const collections = { podcast, gallery }; +const team = defineCollection({ + loader: file("src/components/about/team-members.json"), + schema: teamSchema, +}); + +export const collections = { podcast, gallery, team }; diff --git a/src/content/shema.ts b/src/content/shema.ts index a953436a..bbd5505a 100644 --- a/src/content/shema.ts +++ b/src/content/shema.ts @@ -46,3 +46,13 @@ export const episodeSchema = z dateString, }; }); + +export const teamSchema = z.object({ + id: z.number(), + name: z.string().min(1, "Name cannot be empty"), + x_handle: z.string().regex(/^@\w+$/, "Invalid Twitter handle format"), + profile_image: z + .string() + .regex(/\.(jpg|jpeg|png|gif)$/, "Invalid image file format"), + status: z.enum(["active", "past"]), +}); diff --git a/src/pages/about.astro b/src/pages/about.astro index 48980052..5544bb48 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -1,11 +1,10 @@ --- import Layout from "@/components/layout.astro"; import Header from "@/components/header.astro"; +import Team from "@/components/about/team.astro"; ---
-
-

About

-
+