summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOliver <oliver@mohlin.dev>2025-09-13 16:31:34 +0200
committerTobias Järvelöv <tobias.jarvelov@mullvad.net>2025-09-22 12:52:45 +0200
commit075dafd31135ce3b0f64b3e01d227cdae05ac4ca (patch)
tree892a00774ac262fce0228aa5e1559271db0775f7
parente8d84c3ff6ff568a5b5cdbe8ad9b403f1d7caa5d (diff)
downloadmullvadvpn-075dafd31135ce3b0f64b3e01d227cdae05ac4ca.tar.xz
mullvadvpn-075dafd31135ce3b0f64b3e01d227cdae05ac4ca.zip
Add transition and pressed state to Button component
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/lib/components/button/Button.tsx17
1 files changed, 16 insertions, 1 deletions
diff --git a/desktop/packages/mullvad-vpn/src/renderer/lib/components/button/Button.tsx b/desktop/packages/mullvad-vpn/src/renderer/lib/components/button/Button.tsx
index 7c10b08a53..27bda0a6d8 100644
--- a/desktop/packages/mullvad-vpn/src/renderer/lib/components/button/Button.tsx
+++ b/desktop/packages/mullvad-vpn/src/renderer/lib/components/button/Button.tsx
@@ -16,16 +16,19 @@ const styles = {
primary: {
background: colors.blue,
hover: colors.blue60,
+ pressed: colors.blue40,
disabled: colors.blue40,
},
success: {
background: colors.green,
hover: colors.green80,
+ pressed: colors.green40,
disabled: colors.green40,
},
destructive: {
background: colors.red,
hover: colors.red80,
+ pressed: colors.red40,
disabled: colors.red40,
},
},
@@ -48,10 +51,12 @@ export const StyledButton = styled.button<ButtonProps>`
return css`
--background: ${variant.background};
--hover: ${variant.hover};
+ --pressed: ${variant.pressed};
--disabled: ${variant.disabled};
--radius: ${styles.radius};
--size: ${size};
--width: ${width};
+ --transition-duration: 0.15s;
display: flex;
flex: var(--size);
@@ -65,10 +70,20 @@ export const StyledButton = styled.button<ButtonProps>`
border-radius: var(--radius);
background: var(--background);
- &:not(:disabled):hover {
+ @media (prefers-reduced-motion: no-preference) {
+ transition: background-color var(--transition-duration) ease;
+ }
+
+ &&:not(:disabled):hover {
+ --transition-duration: 0s;
background: var(--hover);
}
+ &&:not(:disabled):active {
+ --transition-duration: 0s;
+ background: var(--pressed);
+ }
+
&:disabled {
background: var(--disabled);
}