Skip to content

design: team-page - Add the Team page patterns (LSA-109) - #142

Merged
brandonmarshal merged 7 commits into
developfrom
design/lsa-109-team-page-patterns-1-8
Oct 22, 2026
Merged

brandonmarshal merged 7 commits into
developfrom
design/lsa-109-team-page-patterns-1-8

Conversation

@brandonmarshal

@brandonmarshal brandonmarshal commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Design Pull Request

This repository enforces changelog, release, and label automation for all PRs and issues.
See the organisation-wide Automation Governance & Release Strategy for contributor rules.

Linked issues

Relates to Linear LSA-109 (design: team-page - Build Team page). It does not close the issue: the Team page content on DEV, SEO metadata and the manual QA are still open.

Design Overview

The five section patterns for the About "Team" page (/about/team/), built from the standalone prototype About Team Standalone.html and the content doc 03-about-team.md.

  • Hero - Split Index Card: breadcrumb, eyebrow, H1, lede and a primary and an outline button on the left; on the right a bordered card that indexes the team in two side-by-side lists (Leadership and Infrastructure on the left, Design and development on the right), with the role under each name. Group titles and names link to anchors further down the page. Rows slide and turn brand-coloured on hover.
  • Section - Profile Card Group: an eyebrow and H2 above a three-column grid of plain 4:5 portrait cards (portrait, name, monospace role, bio). The section and each card carry an anchor. The grid is capped to a 76rem measure so the portraits stay card-sized on wide screens.
  • Section - Text Stack: an eyebrow, H2 and one or two lede paragraphs in a narrow left-aligned column on a card band.
  • Section - Text Stack With Actions: the same stack with an H3 and a primary and an outline button (Careers).
  • CTA - Dark Band Buttons: a fixed-dark rounded band with an eyebrow, H2, paragraph and a white primary button with an arrow and an outline button.
  • Content: the roster, roles and portrait URLs come from the About "People behind the work" pattern (split-header-profile-card-grid), linked directly to the DEV media. The bios are the design's, checked against the About focus lines. Links: /free-consultation/, /work/, /about/careers/, /about/culture/ and the LightSpeed LinkedIn page already used in the footer.
  • Reuse first: the buttons are the shared is-style-outline and is-style-button-primary-on-dark; the band reuses ls-corner-glow and the surface.band-start and on-dark tokens; the eyebrow reuses the lightspeed/dot Icon block. No new tokens and no new block or section styles.

Design Files / References

Standalone HTML prototype About Team Standalone.html and content doc 03-about-team.md. No Figma frames.

Changes

  • Patterns: patterns/hero/hero-split-index-card.php, patterns/sections/profile-card-group.php, patterns/sections/text-stack.php, patterns/sections/text-stack-actions.php and patterns/cta/cta-dark-band-buttons.php. Layout, spacing, type and colour are block attributes and existing tokens; the profile card is a plain group with no card shell.
  • Styles: src/scss/structural/about-team.scss (compiled to assets/css/about-team.css) owns only what JSON cannot express: the index row hover, the jump-link scroll offset and smooth scroll (scoped to pages with the index hero and off under reduced motion), the profile grid measure, balanced heading wrapping, and the arrow on the dark primary button. Each rule carries a JSON-limitation comment.
  • Loading: inc/animations.php registers the about-team bundle (loads on /about/team/ and wherever the patterns render), functions.php adds the editor stylesheet and package.json adds the build entries.
  • Outline buttons: the CTA band's outline button keeps only the on-dark colours as inline attributes. Its radius and border stay the theme defaults, so the arrow tile sits inside the edge.

Scope and exclusions

  • The Team page content (the eight sections composed on the page, the alternating card bands, the three Profile Card Group instances and their people) lives in page content, not in this repo. It has been built on the local site only; DEV is not touched.
  • SEO metadata and the doc's interactive Skill Matrix / 3D sphere ideas are not part of this PR.
  • Review size: 10 files plus CHANGELOG.md (11 in total), 590 added and 3 removed lines against develop. assets/css/about-team.css is compiled output (1 added line). That is above the preferred ~400 lines but within 15 files and under 800 lines. It is one outcome, and the SCSS depends on the patterns' classes, so it is not split.

Screenshots / video

None attached. Checked on the local site at 1440px and 390px: the hero is 536px tall (text 343px, index card 395px), the portraits are 392 x 490px at 1440px, there is no horizontal scroll, and all 17 jump anchors resolve.

Accessibility / performance notes

  • One H1, then H2 sections and H3 names; the index group titles are paragraphs so the outline is not skipped. Portraits have the alt text "Portrait of {name}".
  • Jump links and names are real links with hover and focus states; smooth scroll and the row slide are off under prefers-reduced-motion.
  • The standing axe scan reports no serious or critical violations on the page (Chromium and Mobile Chrome).
  • Known: the bios are the design and doc copy, which the doc marks "Needs Review". Ash's founding year and WordCamp Europe 2025 mention, Barbara's HR-related role and Zared's WordCamp Cape Town 2024 mention need the owner's sign-off before launch.
  • Known: the hero buttons ("Book a consultation", "Explore our culture") are not in the doc or the design; they were added to match the other heroes.

Testing

  • npm run lint:json passes (no theme.json or styles/ file changed)
  • npm run security:scan passes
  • npm run patterns:escape reports nothing for the five new patterns
  • npm run build:css leaves no diff
  • npm run theme:validate completes with warnings only
  • npx stylelint src/scss/structural/about-team.scss passes
  • php -l and phpcs (WordPress standard) pass for the five patterns, inc/animations.php and functions.php
  • Local, 1440px and 390px: hero index (hover slide, jump links, anchors), profile card grid, text stacks, Careers buttons and CTA band checked; no horizontal scroll
  • Playwright standing suite with SINGLE_PAGE_URL on /about/team/ (Chromium plus Mobile Chrome): 15 passed, run twice (the second after the maintainer switched the site to dark mode; the Playwright browser's own colour scheme was not confirmed)
  • Dark mode visual check on desktop, tablet and mobile (pending the maintainer; only simulated with the dark.json token values so far)
  • CodeRabbit CLI review (not run on this branch)
  • Screen reader tested
  • Team page on DEV after deploy

Changelog

meta:needs-changelog: adds new patterns and a stylesheet. The entry is in CHANGELOG.md on this branch.

Checklist

  • Related issues linked above
  • Existing buttons, tokens, corner glow and Icon block reused; no new tokens or styles
  • Accessibility standards met (screen reader not yet tested)
  • Changelog entry added

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added a team page layout with an introductory hero, linked team index, and profile cards featuring portraits, roles, and bios.
    • Added reusable content sections for team messaging, careers links, and a closing call to action with links to consultation and work pages.
  • Style
    • Improved heading wrapping and profile-grid sizing, and added smooth scrolling to team links with offsets for the sticky header.
    • Added hover and keyboard-focus feedback to links, rows, and the CTA arrow, while respecting reduced-motion preferences.

…ro (LSA-109)

Patterns
- Add Hero - Split Index Card: split hero with a grouped jump-link team index
- Add Section - Profile Card Group: three-column plain portrait cards with anchors
- Add Section - Text Stack: eyebrow, H2 and stacked lede paragraphs on a band
- Add Section - Text Stack With Actions: text stack with a primary and two ghost buttons
- Add CTA - Dark Band Buttons: fixed-dark closing band with two buttons

Behaviour
- Keep the hero text sticky while the index card scrolls past
- Slide and recolour index rows on hover and focus
- Offset jump links and smooth-scroll on this page only
- Drop the shared arrow tile on the ghost buttons and add the arrow to the dark primary button

Styles
- Add about-team.scss and compiled about-team.css for what JSON cannot express
- Reuse existing tokens, button-primary-on-dark and is-style-outline, with no new tokens or styles

Wiring
- Register about-team.css in package.json, the editor styles and the effect styles
- Load it on /about/team/ and wherever the patterns render

Content
- Use the About page roster, roles and DEV photo URLs
- Link the CTAs to /free-consultation/, /work/, /about/careers/, /about/culture/ and the LightSpeed LinkedIn page
Bug fix
- Cap the profile grid to a 76rem measure so three columns no longer stretch across the full wide width
- Portraits drop from about 440x550 to about 392x490 at 1440px, matching the design's card size

Files
- Add the ls-profile-grid class to the grid in Section - Profile Card Group
- Add the max-width rule to about-team.scss and recompile about-team.css
- Add ls-profile-grid to the render markers in inc/animations.php
…109)

Hero
- Add a primary "Book a consultation" and an outline "Explore our culture" button
- Split the index into two side-by-side lists with the role under each name
- Change the hero columns to 50/50 and centre them vertically
- Cut the hero height by about a third so the text and card are balanced

Cleanup
- Remove the sticky hero column rule, no longer needed
- Keep the row hover slide and the jump links

Files
- Update hero-split-index-card.php
- Update about-team.scss and recompile about-team.css
…utline override (LSA-109)

Careers
- Remove the "Explore our culture" button
- Keep View Open Roles and Connect on LinkedIn

Buttons
- Keep the shared is-style-outline button for every secondary button
- Remove the no-arrow override the hero, Careers row and CTA band no longer need

Files
- Update hero-split-index-card.php, text-stack-actions.php and cta-dark-band-buttons.php
- Remove the ghost-button rule from about-team.scss and recompile about-team.css
- Correct the about-team comment in inc/animations.php
…edge (LSA-109)

Bug fix
- Remove the inline pill radius, 1px border and font size from the CTA band's outline button
- The arrow tile was poking out of the fully round end; the button now uses the default 8px radius and 2px border like the hero and Careers buttons

Kept
- On-dark text colour, transparent background and soft border colour

Files
- Update cta-dark-band-buttons.php
@brandonmarshal brandonmarshal added area:design-system Tokens/components guidelines comp:block-patterns Patterns library/registration lang:css Stylesheets lang:php PHP code priority:normal Default priority for most issues. status:needs-review Awaiting code review meta:needs-changelog Requires a CHANGELOG.md entry before merge type:design labels Oct 22, 2026
@brandonmarshal brandonmarshal self-assigned this Oct 22, 2026
@linear-code

linear-code Bot commented Oct 22, 2026

Copy link
Copy Markdown

LSA-109

@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
📥 Commits

Reviewing files that changed from the base of the PR and between e47eb4d and 13527ff.

📒 Files selected for processing: 4
  • CHANGELOG.md
  • functions.php
  • inc/animations.php
  • package.json

Included review availability: This review used your included allowance. 2 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.

📝 Walkthrough

Adds WordPress patterns for the team index, profile cards, a CTA band, and text sections. Adds team-specific styles and configures CSS builds and stylesheet loading.

Changes: About Team Page Patterns

Layer / File(s) Summary
Team index and profile patterns
patterns/hero/hero-split-index-card.php, patterns/sections/profile-card-group.php
Adds a split team hero with links to group and profile anchors. Adds five profile cards with portraits, names, roles, and bios.
Supporting CTA and text patterns
patterns/cta/cta-dark-band-buttons.php, patterns/sections/text-stack.php, patterns/sections/text-stack-actions.php
Adds a dark CTA band and two text sections with their respective copy and links.
About-team styles and asset wiring
src/scss/structural/about-team.scss, assets/css/about-team.css, package.json, inc/animations.php, functions.php, CHANGELOG.md
Adds layout, anchor-scroll, hover, focus, and reduced-motion styles. Configures stylesheet compilation and loading, and documents the patterns and styling in the changelog.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant Visitor
  participant Hero as hero-split-index-card
  participant Browser
  participant Profiles as profile-card-group
  participant Styles as about-team stylesheet
  Visitor->>Hero: Activates a profile anchor link
  Hero->>Browser: Provides the fragment URL
  Browser->>Profiles: Resolves the matching card anchor
  Styles-->>Browser: Provides scroll offset and motion rules
  Browser-->>Visitor: Scrolls to the profile card
Loading

Suggested reviewers: zaredrogers

Merge Risk: ⚪ Minimal · up to 13527

No actionable merge-blocking risk is established.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly identifies the main change: adding Team page patterns for the team-page design objective. It is concise and specific.
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 7 files. (2 skipped: 2 …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 7 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Changelog
- Add the Team page patterns entry linking to PR 142

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Conflicts
- Keep both sides in package.json: the Careers and Culture build entries plus about-team
- Keep both sides in functions.php and inc/animations.php: the careers editor style and effect bundle plus about-team
- Put the Team entry above the Careers and Culture entries in CHANGELOG.md

Cleanup
- Correct the about-team effect-style comment to match the final behaviour

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:design-system Tokens/components guidelines comp:block-patterns Patterns library/registration lang:css Stylesheets lang:php PHP code meta:needs-changelog Requires a CHANGELOG.md entry before merge priority:normal Default priority for most issues. status:needs-review Awaiting code review type:design

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants