Skip to content

feat: add accessible themeable Button component to design system - #1103

Merged
joelpeace48-cell merged 5 commits into
FinesseStudioLab:mainfrom
Loisyy:feat/design-system-button
Aug 6, 2026
Merged

feat: add accessible themeable Button component to design system#1103
joelpeace48-cell merged 5 commits into
FinesseStudioLab:mainfrom
Loisyy:feat/design-system-button

Conversation

@Loisyy

@Loisyy Loisyy commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Builds the Button component for the shared design system per issue #969.

What's included

Button.jsx — accessible, themeable component
Button.css — styled via CSS custom properties, flips with [data-theme='light']
Button.stories.jsx — Storybook stories for all variants, sizes and states
Button.test.jsx — 24 unit tests, all passing
index.js — exports Button from the barrel

Variants

primary, secondary, danger, ghost

Sizes

sm, md, lg

States

default, hover, focus, disabled, loading (spinner + aria-busy)

Accessibility

Native element — correct role, keyboard and screen-reader support out of the box
aria-busy set while loading; visually-hidden "Loading" label keeps AT informed
aria-disabled + disabled both applied when disabled
Focus ring via :focus-visible — invisible to mouse users
Fully keyboard accessible via Enter and Space

Testing

24 unit tests covering all variants, sizes, states, keyboard interactions and accessibility attributes — all passing. No existing tests broken.

Closes #969

- Variants: primary, secondary, danger, ghost
- Sizes: sm, md, lg
- States: default, hover, focus, disabled, loading (spinner + aria-busy)
- Fully keyboard accessible (Enter/Space)
- Focus ring via :focus-visible (invisible to mouse users)
- Themed via CSS custom properties — flips with [data-theme='light']
- Storybook stories for all variants, sizes and states
- 24 unit tests — all passing

Closes FinesseStudioLab#969
@drips-wave

drips-wave Bot commented Jul 30, 2026

Copy link
Copy Markdown

@Loisyy Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@joelpeace48-cell
joelpeace48-cell merged commit 012e454 into FinesseStudioLab:main Aug 6, 2026
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.

Design system: Button component

2 participants