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;
+}