summaryrefslogtreecommitdiffhomepage
path: root/desktop
diff options
context:
space:
mode:
authorOliver <oliver@mohlin.dev>2025-01-07 11:40:16 +0100
committerMarkus Pettersson <markus.pettersson@mullvad.net>2025-01-13 15:02:51 +0100
commita50c8cfa78adf2ea04e5e3a6e76e534ecd076c81 (patch)
tree6c43611385186ecd8232325404d37b44d5573714 /desktop
parent4c0df6ee8be41db752935c356fb7247c048143f5 (diff)
downloadmullvadvpn-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.ts1
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/lib/components/atoms/logo/Logo.tsx41
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>
+ );
+ }
+ }
+};