Skip to content

Fix: Member management UI cleanup#111

Merged
ThomasHalwax merged 6 commits intomainfrom
fix/member-management-ui
Mar 23, 2026
Merged

Fix: Member management UI cleanup#111
ThomasHalwax merged 6 commits intomainfrom
fix/member-management-ui

Conversation

@axel-krapotke
Copy link
Copy Markdown
Contributor

Problem

  • React warning about missing keys in member list
  • UI elements oversized and inconsistent with ProjectList styling
  • Panel jumped vertically when search results changed
  • Inline styles scattered throughout components

Changes

Technical

  • Add React keys to List.js via React.cloneElement
  • User component uses React.forwardRef for proper ref forwarding
  • Memoized callbacks (useCallback/useMemo) to prevent unnecessary re-renders
  • Removed Card/useServices dependency from User component

Visual

  • Viewport-relative panel size (75vw × 75vh) — no more jumping
  • Scrollable member list within fixed panel
  • Font sizes aligned with ProjectList baseline (18/16/13px)
  • Compact user items with avatar (36px), name, user ID, and color-coded role badge
  • Proper button styling with hover states and danger/primary variants
  • Relaxed inner spacing for comfortable reading

Cleanup

  • Dedicated CSS files: MemberManagement.css, User.css
  • All inline styles removed from MemberManagement.js and User.js
  • Unused CSS classes removed from ProjectList.css
  • Avatar size configurable via size prop (default 32px)

Technical fixes:
- Add React keys to List.js via React.cloneElement (fixes console warning)
- Forward ref properly in User component (React.forwardRef)
- Memoize callbacks (useCallback/useMemo) to prevent unnecessary re-renders
- Move ACTIONS constant outside component to avoid recreation

Visual improvements:
- Reduce avatar size from 48px to 32px (configurable via size prop)
- Compact user list items with proper text truncation
- Role badges with color-coded backgrounds (owner/admin/contributor)
- Fixed-width panel (480px) instead of 75% viewport width
- Proper button styling with borders, hover states, and danger/primary variants
- Role select with consistent sizing
- Self-role shown as subtle label next to project name

Cleanup:
- Extract MemberManagement styles into dedicated MemberManagement.css
- Extract User styles into dedicated User.css
- Remove inline styles from MemberManagement.js and User.js
- Remove unused CSS classes from ProjectList.css
- Remove unnecessary Card/useServices dependency from User component
- Fixed panel size (400x420px) — no vertical jumping on search results
- Reduced all paddings/gaps for a compact, professional look
- Smaller font sizes throughout (13/12/11/10px)
- Avatar 28px instead of 32px
- Thinner margins to panel edges (12px/8px/4px)
Smaller padding to panel edges (8px toolbar, 4px actions, 2px list)
so more space goes to the actual content. Avatars back to 36px.
Panel adapts to window size instead of fixed pixels.
Font sizes back to comfortable reading sizes (15/13/11px).
Toolbar padding 14px/16px, actions 8px/16px, list area 12px.
User items 6px/8px padding with 10px gap. Search margin 8px bottom.
Title 18px, body text 16px, secondary text 13px — consistent with
the 16px base used by f73b-button and card-title in ProjectList.
@ThomasHalwax ThomasHalwax merged commit 4aca844 into main Mar 23, 2026
1 check passed
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.

2 participants