Skip to content

Commit ebb4ef0

Browse files
authored
Merge pull request #3 from acmucsd/chaitya/buttons
Chaitya/buttons
2 parents d093804 + 779b60b commit ebb4ef0

File tree

4 files changed

+430
-56
lines changed

4 files changed

+430
-56
lines changed

package-lock.json

+74-31
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/button/Button.tsx

+28-6
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,42 @@ import './button.css';
33

44
/** Primary UI component for user interaction */
55
export interface ButtonProps {
6-
primary?: boolean;
7-
backgroundColor?: string;
6+
mode?: 'light' | 'dark',
7+
primary?: boolean,
8+
danger?: boolean,
9+
desktop?: 'desktop' | 'mobile',
810
size?: 'small' | 'medium' | 'large';
911
label: string;
1012
onClick?: () => void;
1113
}
1214

13-
export const Button: React.FC<ButtonProps> = ({ primary = false, backgroundColor, size = 'medium', label, ...props }) => {
14-
const mode = primary ? 'storybook-button--primary' : 'storybook-button--secondary';
15+
export const Button: React.FC<ButtonProps> = ({
16+
mode = 'light',
17+
primary = true,
18+
19+
size = 'medium',
20+
label,
21+
desktop = 'desktop',
22+
danger = false,
23+
...props }) => {
24+
25+
const modeClass = mode === 'dark' ? 'storybook-button--dark' : 'storybook-button--light';
26+
27+
28+
const variantClass = primary ? 'storybook-button--primary' : 'storybook-button--secondary';
29+
30+
31+
const dangerClass = danger ? 'storybook-button--danger' : '';
32+
33+
34+
const deviceClass = desktop === 'desktop' ? `storybook-button--desktop--${size}` : `storybook-button--mobile--${size}`;
35+
36+
1537
return (
1638
<button
1739
type="button"
18-
className={['storybook-button', `storybook-button--${size}`, mode].join(' ')}
19-
style={backgroundColor ? { backgroundColor } : undefined}
40+
className={['storybook-button', deviceClass, dangerClass, variantClass, modeClass].join(' ')}
41+
2042
{...props}
2143
>
2244
{label}

0 commit comments

Comments
 (0)