2022-02-18 08:20:47 +00:00
|
|
|
import PropTypes from "prop-types";
|
2022-03-01 15:48:37 +00:00
|
|
|
import styled from "styled-components";
|
2022-02-17 11:53:32 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Primary UI component for user interaction
|
|
|
|
*/
|
2022-03-17 12:15:55 +00:00
|
|
|
export const Button = styled.button.attrs(({ disabled, $primary }) => ({
|
2022-03-01 15:48:37 +00:00
|
|
|
type: "button",
|
2022-03-22 12:46:34 +00:00
|
|
|
className: `px-6 py-2.5 rounded-full font-sans uppercase text-xs tracking-wide transition-[filter]
|
|
|
|
${
|
|
|
|
$primary
|
|
|
|
? `bg-primary ${disabled ? "" : "text-palette-600"}`
|
|
|
|
: `bg-white border-2 ${disabled ? "border-palette-300" : "border-black text-palette-600"}`
|
|
|
|
}
|
|
|
|
${
|
|
|
|
disabled
|
|
|
|
? `${$primary ? "saturate-50 brightness-125 text-palette-400" : "text-palette-300"} cursor-default`
|
|
|
|
: "hover:brightness-90"
|
|
|
|
}`,
|
2022-03-01 15:48:37 +00:00
|
|
|
}))``;
|
2022-02-17 11:53:32 +00:00
|
|
|
Button.propTypes = {
|
|
|
|
/**
|
|
|
|
* Is this the principal call to action on the page?
|
|
|
|
*/
|
2022-03-01 15:48:37 +00:00
|
|
|
$primary: PropTypes.bool,
|
2022-03-17 12:15:55 +00:00
|
|
|
/**
|
|
|
|
* Prevent interaction on the button
|
|
|
|
*/
|
|
|
|
disabled: PropTypes.bool,
|
2022-02-18 08:20:47 +00:00
|
|
|
};
|
2022-02-17 11:53:32 +00:00
|
|
|
|
|
|
|
Button.defaultProps = {
|
2022-03-01 15:48:37 +00:00
|
|
|
$primary: false,
|
2022-03-17 12:15:55 +00:00
|
|
|
disabled: false,
|
2022-02-18 08:20:47 +00:00
|
|
|
};
|