fix(dashboard-v2): fix Button styles on Safari when used as polymorphic component
This commit is contained in:
parent
5a2a2b6508
commit
7e8d033bed
|
@ -5,15 +5,25 @@ import styled from "styled-components";
|
|||
/**
|
||||
* Primary UI component for user interaction
|
||||
*/
|
||||
export const Button = styled.button.attrs(({ disabled, $primary, type }) => ({
|
||||
type,
|
||||
className: cn("px-6 py-2.5 rounded-full font-sans uppercase text-xs tracking-wide transition-[opacity_filter]", {
|
||||
"bg-primary text-palette-600": $primary,
|
||||
"bg-white border-2 border-black text-palette-600": !$primary,
|
||||
"cursor-not-allowed opacity-60": disabled,
|
||||
"hover:brightness-90": !disabled,
|
||||
}),
|
||||
}))``;
|
||||
export const Button = styled.button.attrs(({ as: polymorphicAs, disabled, $primary, type }) => {
|
||||
// We want to default to type=button in most cases, but sometimes we use this component
|
||||
// as a polymorphic one (i.e. for links), and then we should avoid setting `type` property,
|
||||
// as it breaks styling in Safari.
|
||||
const typeAttr = polymorphicAs && polymorphicAs !== "button" ? undefined : type;
|
||||
|
||||
return {
|
||||
type: typeAttr,
|
||||
className: cn(
|
||||
"px-6 py-2.5 inline-block rounded-full font-sans uppercase text-xs tracking-wide transition-[opacity_filter]",
|
||||
{
|
||||
"bg-primary text-palette-600": $primary,
|
||||
"bg-white border-2 border-black text-palette-600": !$primary,
|
||||
"cursor-not-allowed opacity-60": disabled,
|
||||
"hover:brightness-90": !disabled,
|
||||
}
|
||||
),
|
||||
};
|
||||
})``;
|
||||
|
||||
Button.propTypes = {
|
||||
/**
|
||||
|
|
Reference in New Issue