This is an automated email from the ASF dual-hosted git repository.

leonardcs pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps-site.git


The following commit(s) were added to refs/heads/main by this push:
     new 10299c1  Feature/members-list (#38)
10299c1 is described below

commit 10299c15ce65080bb0ac57884e0ad5f8e81f73f2
Author: Leonard <[email protected]>
AuthorDate: Wed Jul 12 17:29:16 2023 +0200

    Feature/members-list (#38)
    
    * Add component
    
    * Add new page
---
 src/components/tables/MembersTable/index.tsx       | 76 ++++++++++++++++++++++
 .../tables/MembersTable/style.module.css           | 43 ++++++++++++
 src/pages/_meta.json                               |  4 ++
 src/pages/community/_meta.json                     |  4 ++
 src/pages/community/members.json                   | 74 +++++++++++++++++++++
 src/pages/community/project-members.mdx            | 14 ++++
 src/styles/globals.css                             |  5 ++
 7 files changed, 220 insertions(+)

diff --git a/src/components/tables/MembersTable/index.tsx 
b/src/components/tables/MembersTable/index.tsx
new file mode 100644
index 0000000..c1eb6d4
--- /dev/null
+++ b/src/components/tables/MembersTable/index.tsx
@@ -0,0 +1,76 @@
+import Link from 'next/link';
+import Image from 'next/image';
+import cn from 'clsx';
+import styles from './style.module.css';
+
+interface Member {
+  name?: string;
+  apacheUsername?: string;
+  githubUsername?: string;
+  role: string;
+}
+
+interface MembersTableProps {
+  members: Member[];
+}
+
+export const MembersTable: React.FC<MembersTableProps> = ({ members }) => {
+  return (
+    <div
+      className={cn([
+        styles.container,
+        'nx-border',
+        'dark:nx-border-neutral-800',
+        'contrast-more:nx-border-neutral-400',
+        'dark:contrast-more:nx-border-neutral-400'
+      ])}
+    >
+      <table className={styles.table}>
+        <thead className="nx-bg-black/[.05] dark:nx-bg-gray-50/10">
+          <tr>
+            <th>GitHub</th>
+            <th>Name</th>
+            <th>Role</th>
+          </tr>
+        </thead>
+        <tbody>
+          {members.map((member, i) => (
+            <tr key={i}>
+              <td className={styles['image-td']}>
+                <Link
+                  className={cn([
+                    styles['image-link'],
+                    member.githubUsername === null ? 'disabled' : ''
+                  ])}
+                  href={`https://github.com/${member.githubUsername || ''}`}
+                >
+                  <div
+                    className={cn([
+                      styles['image-container'],
+                      'nx-bg-black/[.05]',
+                      'dark:nx-bg-gray-50/10'
+                    ])}
+                  >
+                    <Image
+                      src={`https://github.com/${
+                        member.githubUsername || ''
+                      }.png`}
+                      alt={member.githubUsername}
+                      fill
+                      style={{ objectPosition: 'center' }}
+                      onError={e => {
+                        e.currentTarget.style.display = 'none';
+                      }}
+                    />
+                  </div>
+                </Link>
+              </td>
+              <td>{member.name}</td>
+              <td>{member.role}</td>
+            </tr>
+          ))}
+        </tbody>
+      </table>
+    </div>
+  );
+};
diff --git a/src/components/tables/MembersTable/style.module.css 
b/src/components/tables/MembersTable/style.module.css
new file mode 100644
index 0000000..6359600
--- /dev/null
+++ b/src/components/tables/MembersTable/style.module.css
@@ -0,0 +1,43 @@
+.container {
+  margin: 1rem 0;
+  border-radius: 4px;
+  overflow: hidden;
+}
+
+.table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  width: 100%;
+}
+
+.table th,
+.table td {
+  text-align: left;
+  padding: 0.5rem 0.75rem;
+  vertical-align: middle;
+}
+
+:global(.light) .table tr:not(:last-child) {
+  border-bottom: 1px solid rgba(0, 0, 0, 0.05); /* nx-bg-black/[.05] */
+}
+
+:global(.dark) .table tr:not(:last-child) {
+  border-bottom: 1px solid rgba(249, 250, 251, 0.1); /* dark:nx-bg-gray-50/10 
*/
+}
+
+.image-td {
+  display: flex;
+  align-items: center;
+}
+
+.image-link {
+  display: inline-block;
+}
+
+.image-container {
+  width: 50px;
+  height: 50px;
+  border-radius: 50%;
+  position: relative;
+  overflow: hidden;
+}
diff --git a/src/pages/_meta.json b/src/pages/_meta.json
index edc3447..33d279b 100644
--- a/src/pages/_meta.json
+++ b/src/pages/_meta.json
@@ -28,6 +28,10 @@
     "title": "Community",
     "type": "menu",
     "items": {
+      "project-members": {
+        "title": "Project Members",
+        "href": "/community/project-members"
+      },
       "mailing-lists": {
         "title": "Mailing Lists",
         "href": "/community/mailing-lists"
diff --git a/src/pages/community/_meta.json b/src/pages/community/_meta.json
new file mode 100644
index 0000000..12eb37c
--- /dev/null
+++ b/src/pages/community/_meta.json
@@ -0,0 +1,4 @@
+{
+  "project-members": "Project Members",
+  "mailing-lists": "Mailing Lists"
+}
diff --git a/src/pages/community/members.json b/src/pages/community/members.json
new file mode 100644
index 0000000..5bbc502
--- /dev/null
+++ b/src/pages/community/members.json
@@ -0,0 +1,74 @@
+[
+  {
+    "name": "Antoine Drabble",
+    "apacheUsername": "adrabble",
+    "githubUsername": "Drabble",
+    "role": "Committer"
+  },
+  {
+    "name": "Bertil Chapuis",
+    "apacheUsername": "bchapuis",
+    "githubUsername": "bchapuis",
+    "role": "Committer"
+  },
+  {
+    "name": "Bertrand Delacretaz",
+    "apacheUsername": "bdelacretaz",
+    "githubUsername": "bdelacretaz",
+    "role": "Champion"
+  },
+  {
+    "name": "Andrea Borghi",
+    "apacheUsername": "danduk82",
+    "githubUsername": "danduk82",
+    "role": "Committer"
+  },
+  {
+    "name": "Martin Desruisseaux",
+    "apacheUsername": "desruisseaux",
+    "githubUsername": "desruisseaux",
+    "role": "Mentor"
+  },
+  {
+    "name": "Julian Hyde",
+    "apacheUsername": "jhyde",
+    "githubUsername": "julianhyde",
+    "role": "Mentor"
+  },
+  {
+    "name": "Josh Fischer",
+    "apacheUsername": "joshfischer",
+    "githubUsername": "joshfischer1108",
+    "role": "Committer"
+  },
+  {
+    "name": "James Smith",
+    "apacheUsername": "jsmith",
+    "githubUsername": "swerky",
+    "role": "Committer"
+  },
+  {
+    "name": "Calvin Kirs",
+    "apacheUsername": "kirs",
+    "githubUsername": "CalvinKirs",
+    "role": "Mentor"
+  },
+  {
+    "name": "Léonard Besseau",
+    "apacheUsername": "lbesseau",
+    "githubUsername": "LeonardBesseau",
+    "role": "Committer"
+  },
+  {
+    "name": "Leonard C.",
+    "apacheUsername": "leonardcs",
+    "githubUsername": "leonardcser",
+    "role": "Committer"
+  },
+  {
+    "name": "George Percivall",
+    "apacheUsername": "percivall",
+    "githubUsername": "percivall",
+    "role": "Mentor"
+  }
+]
diff --git a/src/pages/community/project-members.mdx 
b/src/pages/community/project-members.mdx
new file mode 100644
index 0000000..35d653f
--- /dev/null
+++ b/src/pages/community/project-members.mdx
@@ -0,0 +1,14 @@
+---
+title: Project Members
+layout: default
+sidebar: hide
+---
+
+import { MembersTable } from '@/components/tables/MembersTable';
+import members from './members.json';
+
+# Project Members
+
+This page lists all the members of the project.
+
+<MembersTable members={members} />
diff --git a/src/styles/globals.css b/src/styles/globals.css
index 2276d2e..dc8fac0 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -11,3 +11,8 @@
   top: 10px;
   right: 15px;
 }
+
+a.disabled {
+  pointer-events: none;
+  cursor: default;
+}

Reply via email to