fix(dashboard-v2): fix Button styles on Safari when used as polymorphic component

This commit is contained in:
Michał Leszczyk 2022-04-15 16:10:16 +02:00
parent 5a2a2b6508
commit 7e8d033bed
No known key found for this signature in database
GPG Key ID: FA123CA8BAA2FBF4
1 changed files with 19 additions and 9 deletions

View File

@ -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 = {
/**