diff --git a/client/.env.example b/client/.env.example
index 0ba98e5..e7c8e53 100644
--- a/client/.env.example
+++ b/client/.env.example
@@ -1,2 +1,5 @@
# Adressen til Graphql backend. Kopier dette til .env.local
-VITE_GRAPHQL_URL=/project2/graphql
\ No newline at end of file
+VITE_GRAPHQL_URL=/project2/graphql
+# Client ID fra Google Cloud
+# jeg trenger en google bruker fra dere hvis dere ønsker å teste google innlogging
+VITE_GOOGLE_CLIENT_ID=1070343515871-rvhhskd48nla3u2p3bsp7b1sl2st385m.apps.googleusercontent.com
\ No newline at end of file
diff --git a/client/package.json b/client/package.json
index 6e56449..3eb3c18 100644
--- a/client/package.json
+++ b/client/package.json
@@ -13,6 +13,7 @@
"@apollo/client": "^4.3.1",
"@mui/icons-material": "^9.4.0",
"@radix-ui/react-dialog": "^1.1.23",
+ "@react-oauth/google": "^0.13.5",
"@tailwindcss/vite": "^4.3.3",
"embla-carousel-autoplay": "^8.6.0",
"embla-carousel-react": "^8.6.0",
diff --git a/client/src/main.tsx b/client/src/main.tsx
index 86a78ef..2eb4526 100644
--- a/client/src/main.tsx
+++ b/client/src/main.tsx
@@ -2,18 +2,25 @@ import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { BrowserRouter } from 'react-router';
import { ApolloProvider } from '@apollo/client/react';
+import { GoogleOAuthProvider } from '@react-oauth/google';
import './index.css';
import client from './lib/apolloClient.ts';
import App from './App.tsx';
createRoot(document.getElementById('root')!).render(
- {/* Gir tilgang til Apollo klienten */}
-
- {/* gjør at basename matcher base i vite config */}
-
-
-
-
+ {/* gir tilgang til google innlogging */}
+
+ {/* Gir tilgang til Apollo klienten */}
+
+ {/* gjør at basename matcher base i vite config */}
+
+
+
+
+ ,
);
diff --git a/client/src/routes/LoginPage.tsx b/client/src/routes/LoginPage.tsx
index 97731a4..30299f9 100644
--- a/client/src/routes/LoginPage.tsx
+++ b/client/src/routes/LoginPage.tsx
@@ -1,10 +1,36 @@
import { useNavigate } from 'react-router';
import { Button } from '../components/ui/Button';
+import { GoogleLogin, type CredentialResponse } from '@react-oauth/google';
+import { useEffect, useRef, useState } from 'react';
// Innloggingsside
export default function LoginPage() {
const navigate = useNavigate();
+ //Midlertidig. token skal sendes til backend senere
+ function handleGoogleSuccess(response: CredentialResponse) {
+ console.log('Google-token:', response.credential);
+ }
+
+ // for å måle bredden rundt google kanpp
+ const googleBoxRef = useRef(null);
+ const [googleButtonWidth, setGoogleButtonWidth] = useState(400);
+
+ // måler hver gang den endrer størrelse
+ useEffect(() => {
+ const box = googleBoxRef.current;
+ if (!box) return;
+
+ const observer = new ResizeObserver(() => {
+ // google tillater maks 400 px
+ setGoogleButtonWidth(Math.min(box.offsetWidth, 400));
+ });
+ observer.observe(box);
+
+ // slutter å måle når man forlater siden
+ return () => observer.disconnect();
+ }, []);
+
return (
Velkommen tilbake
@@ -14,13 +40,16 @@ export default function LoginPage() {
{/* Midlertidig: Google og gjest kobles til backend senere */}