about summary refs log tree commit diff
path: root/src/alf/breakpoints.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/alf/breakpoints.ts')
-rw-r--r--src/alf/breakpoints.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/alf/breakpoints.ts b/src/alf/breakpoints.ts
new file mode 100644
index 000000000..934585644
--- /dev/null
+++ b/src/alf/breakpoints.ts
@@ -0,0 +1,28 @@
+import {useMemo} from 'react'
+import {useMediaQuery} from 'react-responsive'
+
+export type Breakpoint = 'gtPhone' | 'gtMobile' | 'gtTablet'
+
+export function useBreakpoints(): Record<Breakpoint, boolean> & {
+  activeBreakpoint: Breakpoint | undefined
+} {
+  const gtPhone = useMediaQuery({minWidth: 500})
+  const gtMobile = useMediaQuery({minWidth: 800})
+  const gtTablet = useMediaQuery({minWidth: 1300})
+  return useMemo(() => {
+    let active: Breakpoint | undefined
+    if (gtTablet) {
+      active = 'gtTablet'
+    } else if (gtMobile) {
+      active = 'gtMobile'
+    } else if (gtPhone) {
+      active = 'gtPhone'
+    }
+    return {
+      activeBreakpoint: active,
+      gtPhone,
+      gtMobile,
+      gtTablet,
+    }
+  }, [gtPhone, gtMobile, gtTablet])
+}