Skip to content

feat: GitlabUser and GitlabUsers components#35

Open
ebuildy wants to merge 21 commits into
mainfrom
feat_gitlab_users
Open

feat: GitlabUser and GitlabUsers components#35
ebuildy wants to merge 21 commits into
mainfrom
feat_gitlab_users

Conversation

@ebuildy

@ebuildy ebuildy commented Jul 17, 2026

Copy link
Copy Markdown
Owner

Summary

  • New <GitlabUser name="…"> component: renders a GitLab user profile as a small card (avatar, display name, linked @username) with configurable sections via a show prop (org, location, bio, counts, since).
  • New <GitlabUsers group|project="…"> component: a responsive cards grid of group/project members (inherited included, 500-member ceiling), with exact-match role filtering, limit, the same show prop (plus a role badge token), and the shared ComponentLayout grid knobs (cardColumns, cardMinWidth, gap, maxWidth, align).
  • Enrich-on-demand: identity/role-only lists cost a single members API call; profile tokens trigger one disk-cached profile lookup per member, deduplicated across pages and with <GitlabUser>. Bot/service accounts without a resolvable profile degrade to identity-only cards instead of failing the build.
  • Follows the existing pipeline (registry → fetcher → inject → pure component); user bio renders as plain text (no dangerouslySetInnerHTML); theme.css gains a Users section.

Design spec: docs/superpowers/specs/2026-07-16-gitlab-users-design.md · Plan: docs/superpowers/plans/2026-07-16-gitlab-users.md

Test Plan

  • Unit: helpers, client, fetchers, components — 501 tests / 54 files green (pnpm test)
  • e2e: real Docusaurus build against the GitLab stub bakes both components into static HTML (incl. the enriched org line proving per-member lookups fire)
  • pnpm run typecheck and pnpm run build clean; ESM-only packaging guard green
  • All 15 commits GPG-signed

ebuildy added 21 commits July 10, 2026 20:09
…istry

Also update the fetchers.js vi.mock in src/remark/index.test.ts to
declare fetchUser/fetchUsers, otherwise importing the registry throws
at module-load time (vitest mock is missing named exports).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant