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
|
* Primary UI component for user interaction
|
||||||
*/
|
*/
|
||||||
export const Button = styled.button.attrs(({ disabled, $primary, type }) => ({
|
export const Button = styled.button.attrs(({ as: polymorphicAs, disabled, $primary, type }) => {
|
||||||
type,
|
// We want to default to type=button in most cases, but sometimes we use this component
|
||||||
className: cn("px-6 py-2.5 rounded-full font-sans uppercase text-xs tracking-wide transition-[opacity_filter]", {
|
// 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-primary text-palette-600": $primary,
|
||||||
"bg-white border-2 border-black text-palette-600": !$primary,
|
"bg-white border-2 border-black text-palette-600": !$primary,
|
||||||
"cursor-not-allowed opacity-60": disabled,
|
"cursor-not-allowed opacity-60": disabled,
|
||||||
"hover:brightness-90": !disabled,
|
"hover:brightness-90": !disabled,
|
||||||
}),
|
}
|
||||||
}))``;
|
),
|
||||||
|
};
|
||||||
|
})``;
|
||||||
|
|
||||||
Button.propTypes = {
|
Button.propTypes = {
|
||||||
/**
|
/**
|
||||||
|
|
Reference in New Issue