diff options
Diffstat (limited to 'src/components/Button')
| -rw-r--r-- | src/components/Button/index.styled.ts | 23 | ||||
| -rw-r--r-- | src/components/Button/index.tsx | 19 |
2 files changed, 42 insertions, 0 deletions
diff --git a/src/components/Button/index.styled.ts b/src/components/Button/index.styled.ts new file mode 100644 index 0000000..1bb964f --- /dev/null +++ b/src/components/Button/index.styled.ts @@ -0,0 +1,23 @@ +import styled from "styled-components"; +import { theme } from "../../constants"; + +export const Button = styled.button<{ variant?: keyof typeof theme }>` + background-color: ${({ theme, variant }) => + variant ? theme[variant] : theme.background100}; + + border-radius: 5px; + border: none; + + color: ${({ theme }) => theme.text}; + font-size: 1rem; + font-weight: 800; + + width: max-content; + padding: 12.5px 20px; + + &:hover { + opacity: 0.8; + } + + cursor: pointer; +`; diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx new file mode 100644 index 0000000..7e6fa5f --- /dev/null +++ b/src/components/Button/index.tsx @@ -0,0 +1,19 @@ +import React, { CSSProperties } from "react"; + +import * as Styled from "./index.styled"; +import { theme } from "../../constants"; + +interface Props { + style?: CSSProperties; + variant?: keyof typeof theme; + children: React.ReactNode; + onClick?: () => void; +} + +export function Button({ onClick, style, variant, children }: Props) { + return ( + <Styled.Button onClick={onClick} variant={variant} style={style}> + {children} + </Styled.Button> + ); +} |
