diff --git a/react-advanced-tag1/src/components/exercises/UserOverview.tsx b/react-advanced-tag1/src/components/exercises/UserOverview.tsx
index e6c828c..1cd08d2 100644
--- a/react-advanced-tag1/src/components/exercises/UserOverview.tsx
+++ b/react-advanced-tag1/src/components/exercises/UserOverview.tsx
@@ -1,8 +1,13 @@
import { useFetch } from "../../hooks/useFetch";
+import { useMediaQuery } from "../../hooks/useMediaQuery";
export function UserOverview() {
const {data, loading, error} = useFetch("https://jsonplaceholder.typicode.com/users");
+ const isMobile = useMediaQuery('(max-width: 600px)');
+
+ console.log("isMobile", isMobile);
+
if (error) {
return
Error: {error}
;
}
@@ -18,7 +23,7 @@ export function UserOverview() {
diff --git a/react-advanced-tag1/src/hooks/useMediaQuery.ts b/react-advanced-tag1/src/hooks/useMediaQuery.ts
new file mode 100644
index 0000000..f234bef
--- /dev/null
+++ b/react-advanced-tag1/src/hooks/useMediaQuery.ts
@@ -0,0 +1,31 @@
+import { useEffect, useState } from "react";
+
+
+/**
+ * Custom hook to check if a media query matches the current viewport.
+ * @param query - The media query string (e.g., '(max-width: 600px)')
+ * @returns A boolean indicating whether the media query matches.
+ */
+export function useMediaQuery(query: string) {
+ const [matches, setMatches] = useState(false);
+
+ useEffect(() => {
+ const mediaQueryList = window.matchMedia(query);
+ const handleChange = (event: MediaQueryListEvent) => {
+ setMatches(event.matches);
+ };
+
+ // Set the initial value
+ setMatches(mediaQueryList.matches);
+
+ // Add event listener
+ mediaQueryList.addEventListener('change', handleChange);
+
+ // Cleanup function to remove the event listener
+ return () => {
+ mediaQueryList.removeEventListener('change', handleChange);
+ };
+ }, [query]);
+
+ return matches;
+}
\ No newline at end of file