diff options
| author | Oliver <oliver@mohlin.dev> | 2025-01-07 11:40:16 +0100 |
|---|---|---|
| committer | Markus Pettersson <markus.pettersson@mullvad.net> | 2025-01-13 15:02:51 +0100 |
| commit | a50c8cfa78adf2ea04e5e3a6e76e534ecd076c81 (patch) | |
| tree | 6c43611385186ecd8232325404d37b44d5573714 /desktop | |
| parent | 4c0df6ee8be41db752935c356fb7247c048143f5 (diff) | |
| download | mullvadvpn-a50c8cfa78adf2ea04e5e3a6e76e534ecd076c81.tar.xz mullvadvpn-a50c8cfa78adf2ea04e5e3a6e76e534ecd076c81.zip | |
Add logo component
Diffstat (limited to 'desktop')
| -rw-r--r-- | desktop/packages/mullvad-vpn/src/renderer/lib/components/atoms/index.ts | 1 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/src/renderer/lib/components/atoms/logo/Logo.tsx | 41 |
2 files changed, 42 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/src/renderer/lib/components/atoms/index.ts b/desktop/packages/mullvad-vpn/src/renderer/lib/components/atoms/index.ts new file mode 100644 index 0000000000..95c029cdb9 --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/renderer/lib/components/atoms/index.ts @@ -0,0 +1 @@ +export * from './logo/Logo'; diff --git a/desktop/packages/mullvad-vpn/src/renderer/lib/components/atoms/logo/Logo.tsx b/desktop/packages/mullvad-vpn/src/renderer/lib/components/atoms/logo/Logo.tsx new file mode 100644 index 0000000000..edc0c5aec3 --- /dev/null +++ b/desktop/packages/mullvad-vpn/src/renderer/lib/components/atoms/logo/Logo.tsx @@ -0,0 +1,41 @@ +import ImageView from '../../../../components/ImageView'; +import { Spacings } from '../../../foundations'; +import { Flex } from '../../layout'; + +export interface LogoProps { + variant?: 'icon' | 'text' | 'both'; + size?: '1' | '2'; +} + +const logoSizes = { + '1': 38, + '2': 106, +}; + +const textSizes = { + '1': 15.4, + '2': 18, +}; + +export const Logo = ({ variant = 'icon', size: sizeProp = '1' }: LogoProps) => { + switch (variant) { + case 'icon': { + const logoSize = logoSizes[sizeProp]; + return <ImageView source="logo-icon" height={logoSize} />; + } + case 'text': { + const textSize = textSizes[sizeProp]; + return <ImageView source="logo-text" height={textSize} />; + } + case 'both': { + const logoSize = logoSizes[sizeProp]; + const textSize = textSizes[sizeProp]; + return ( + <Flex $flex={1} $alignItems="center" $gap={Spacings.spacing3}> + <ImageView source="logo-icon" height={logoSize} /> + <ImageView source="logo-text" height={textSize} /> + </Flex> + ); + } + } +}; |
