Skip to content

components: build a shared UI primitive set #61

Description

@joelpeace48-cell

Problem

There are only two components (brand-logo, expected-pages) and every page
hand-rolls its own markup with inline styles — for example the repeated
style={{ color: "var(--muted)" }} across the placeholder pages. As the
dashboard lands, this will fragment quickly.

What to do

Build the primitives the dashboard will need, before it needs them:

  • Card, Badge, Button, Table, Stat, EmptyState, Skeleton
  • Typed variants rather than free-form className strings
  • Every one working in both light and dark themes
  • Composable and accessible by default — labelled controls, visible focus

Acceptance criteria

  • Primitive set implemented with typed variants
  • No inline style props left in page components
  • Both themes verified for each primitive
  • Usage documented for contributors

Notes

Do this before /operators, not after. Retrofitting a design system onto a
built dashboard is significantly more work than starting from one.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

GrantFox OSSIssue tracked in GrantFox OSSThird CampaignCampaign: Third Campaignarea:componentsShared componentsdifficulty:hardDesign judgement required; subtle failure modespriority:mediumValuable, not blockingtype:designUX, visual, or interaction design

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions