summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer/lib
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2023-10-30 18:04:01 +0100
committerOskar Nyberg <oskar@mullvad.net>2023-10-30 18:04:01 +0100
commitfc82934fe6c36e1bb9b793c9faee50070a963115 (patch)
tree6f484297196d8cd377d090f69aff12d3c51ea5a4 /gui/src/renderer/lib
parent87ce1ee93ec7b58f350b87a3fd0c61c91c45165e (diff)
parentdb89a8d51de88ca08599fa331f6376ef477d15e8 (diff)
downloadmullvadvpn-fc82934fe6c36e1bb9b793c9faee50070a963115.tar.xz
mullvadvpn-fc82934fe6c36e1bb9b793c9faee50070a963115.zip
Merge branch 'update-styled-components'
Diffstat (limited to 'gui/src/renderer/lib')
-rw-r--r--gui/src/renderer/lib/styles.ts9
-rw-r--r--gui/src/renderer/lib/utilityHooks.ts4
2 files changed, 13 insertions, 0 deletions
diff --git a/gui/src/renderer/lib/styles.ts b/gui/src/renderer/lib/styles.ts
new file mode 100644
index 0000000000..554e669373
--- /dev/null
+++ b/gui/src/renderer/lib/styles.ts
@@ -0,0 +1,9 @@
+type NonTransientPropKey<K> = K extends `$${infer L}` ? L : K;
+
+export type NonTransientProps<T, K extends NonTransientPropKey<keyof T>> = {
+ [P in keyof T as NonTransientPropKey<P> extends K ? NonTransientPropKey<P> : P]: T[P];
+};
+
+export type TransientProps<T, K extends keyof T> = {
+ [P in keyof T as P extends K ? `$${P & string}` : P]: T[P];
+};
diff --git a/gui/src/renderer/lib/utilityHooks.ts b/gui/src/renderer/lib/utilityHooks.ts
index 378a6d5ae5..49f508a883 100644
--- a/gui/src/renderer/lib/utilityHooks.ts
+++ b/gui/src/renderer/lib/utilityHooks.ts
@@ -16,6 +16,10 @@ export function useMounted() {
return isMounted;
}
+export function useStyledRef<T>(): React.RefObject<T> {
+ return useRef() as React.RefObject<T>;
+}
+
export function useCombinedRefs<T>(...refs: (React.Ref<T> | undefined)[]): React.RefCallback<T> {
return useCallback((element: T | null) => refs.forEach((ref) => assignToRef(element, ref)), []);
}