Skip to content

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

Open
Loisyy wants to merge 1 commit into
FinesseStudioLab:mainfrom
Loisyy:feat/design-system-button
Open

feat: add accessible themeable Button component to design system#1103
Loisyy wants to merge 1 commit into
FinesseStudioLab:mainfrom
Loisyy:feat/design-system-button

Conversation

@Loisyy

@Loisyy Loisyy commented Jul 30, 2026

Copy link
Copy Markdown

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

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

1 participant