diff options
| author | Oliver <oliver@mohlin.dev> | 2025-09-10 10:18:59 +0200 |
|---|---|---|
| committer | Tobias Järvelöv <tobias.jarvelov@mullvad.net> | 2025-09-11 09:25:55 +0200 |
| commit | 8fc8e021f5ca9964328e894a908af4acc42cc27a (patch) | |
| tree | ecfc4acd2df7ef979093e9929e3e9909e80667e3 | |
| parent | 0d2fe7453749fed0249f9ae98e4cee1c46050d9e (diff) | |
| download | mullvadvpn-8fc8e021f5ca9964328e894a908af4acc42cc27a.tar.xz mullvadvpn-8fc8e021f5ca9964328e894a908af4acc42cc27a.zip | |
Make Link component polymorphic
| -rw-r--r-- | desktop/packages/mullvad-vpn/src/renderer/lib/components/link/Link.tsx | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/desktop/packages/mullvad-vpn/src/renderer/lib/components/link/Link.tsx b/desktop/packages/mullvad-vpn/src/renderer/lib/components/link/Link.tsx index 5e1bef8d5f..625c851296 100644 --- a/desktop/packages/mullvad-vpn/src/renderer/lib/components/link/Link.tsx +++ b/desktop/packages/mullvad-vpn/src/renderer/lib/components/link/Link.tsx @@ -2,7 +2,7 @@ import React from 'react'; import styled, { css } from 'styled-components'; import { Colors, colors, Radius, Typography } from '../../foundations'; -import { TransientProps } from '../../types'; +import { PolymorphicProps, TransientProps } from '../../types'; import { LinkIcon, LinkText, StyledIcon as StyledLinkIcon, StyledLinkText } from './components'; import { useHoverColor } from './hooks'; import { LinkProvider } from './LinkContext'; @@ -10,11 +10,9 @@ import { LinkProvider } from './LinkContext'; type LinkBaseProps = { variant?: Typography; color?: Colors; - onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void; }; -export type LinkProps = LinkBaseProps & - Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof LinkBaseProps>; +export type LinkProps<T extends React.ElementType = 'a'> = PolymorphicProps<T, LinkBaseProps>; const StyledLink = styled.a< TransientProps<LinkProps> & { @@ -48,7 +46,12 @@ const StyledLink = styled.a< `; }); -function Link({ color, variant, children, ...props }: LinkProps) { +function Link<T extends React.ElementType = 'a'>({ + color, + variant, + children, + ...props +}: LinkProps<T>) { const hoverColor = useHoverColor(color); return ( <LinkProvider variant={variant} color={color}> |
