summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOliver <oliver@mohlin.dev>2025-06-15 06:50:06 +0200
committerOskar <oskar@mullvad.net>2025-06-30 11:05:27 +0200
commitced6456945c038b05e7222c13001488eb323d422 (patch)
tree1c8b307aff8c10c8c8224798182063433a31e1bd
parent89fdea972530236fecea0fa182556604a061dc46 (diff)
downloadmullvadvpn-ced6456945c038b05e7222c13001488eb323d422.tar.xz
mullvadvpn-ced6456945c038b05e7222c13001488eb323d422.zip
Add View component
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/lib/components/view/View.tsx27
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/lib/components/view/components/Container.tsx24
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/lib/components/view/components/index.ts1
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/lib/components/view/index.ts1
4 files changed, 53 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/View.tsx b/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/View.tsx
new file mode 100644
index 0000000000..37c1592ead
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/View.tsx
@@ -0,0 +1,27 @@
+import styled from 'styled-components';
+
+import { Colors, colors, ColorVariables } from '../../foundations';
+import { Flex, FlexProps } from '../flex';
+import { Container } from './components';
+
+export type ViewProps = FlexProps & {
+ backgroundColor?: Colors;
+};
+
+export const StyledView = styled(Flex)<{ $backgroundColor?: ColorVariables }>`
+ height: 100vh;
+ max-width: 100%;
+ background-color: ${({ $backgroundColor }) => $backgroundColor || undefined};
+`;
+
+function View({ backgroundColor = 'blue', ...props }: ViewProps) {
+ return (
+ <StyledView $backgroundColor={colors[backgroundColor]} $flexDirection="column" {...props} />
+ );
+}
+
+const ViewNamespace = Object.assign(View, {
+ Container: Container,
+});
+
+export { ViewNamespace as View };
diff --git a/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/components/Container.tsx b/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/components/Container.tsx
new file mode 100644
index 0000000000..69d2f5291b
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/components/Container.tsx
@@ -0,0 +1,24 @@
+import React from 'react';
+import styled from 'styled-components';
+
+import { spacings } from '../../../foundations';
+import { Flex, FlexProps } from '../../flex';
+
+export interface ContainerProps extends FlexProps {
+ size?: '3' | '4';
+ children: React.ReactNode;
+}
+
+const sizes: Record<'3' | '4', string> = {
+ '3': `calc(100% - ${spacings.large} * 2)`,
+ '4': `calc(100% - ${spacings.medium} * 2)`,
+};
+
+const StyledFlex = styled(Flex)<{ $size: string }>((props) => ({
+ width: props.$size,
+ margin: 'auto',
+}));
+
+export function Container({ size = '4', ...props }: ContainerProps) {
+ return <StyledFlex $size={sizes[size]} $flexDirection="column" {...props} />;
+}
diff --git a/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/components/index.ts b/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/components/index.ts
new file mode 100644
index 0000000000..8a1103ffa4
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/components/index.ts
@@ -0,0 +1 @@
+export * from './Container';
diff --git a/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/index.ts b/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/index.ts
new file mode 100644
index 0000000000..450cf3c6ae
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/lib/components/view/index.ts
@@ -0,0 +1 @@
+export * from './View';