diff --git a/src/components/utepils.tsx b/src/components/utepils.tsx new file mode 100644 index 0000000..5e541b4 --- /dev/null +++ b/src/components/utepils.tsx @@ -0,0 +1,49 @@ +import { useUtepils } from "../hooks/use-utepils"; + +function getBackgroundClass(score: number) { + if (score >= 75) return "bg-gradient-to-br from-amber-200 via-orange-200 to-yellow-100"; + if (score >= 45) return "bg-gradient-to-br from-sky-200 via-blue-100 to-slate-100"; + return "bg-gradient-to-br from-slate-300 via-slate-200 to-zinc-100"; +} + +function getBarClass(score: number) { + if (score >= 70) return "bg-green-500"; + if (score >= 40) return "bg-amber-400"; + return "bg-red-500"; +} + +export default function UtepilsCard() { + const { verdict, score, loading, error } = useUtepils(); + console.log("Utepils verdict:", verdict, "Score:", score, "Loading:", loading, "Error:", error); + const title = verdict?.title || "Laster..."; + const subtitle = verdict?.subtitle || "Henter utepils-data"; + const emoji = verdict?.emoji || "⏳"; + + return ( +
+
+
+
+ Utepils-meter +
+ {title} +
{subtitle}
+
+ {emoji} +
+ +
+
Utepils-score
+
{score}%
+
+
+
+
+
+ ); +} diff --git a/src/hooks/use-utepils.ts b/src/hooks/use-utepils.ts new file mode 100644 index 0000000..102b8ff --- /dev/null +++ b/src/hooks/use-utepils.ts @@ -0,0 +1,32 @@ +import { useState, useEffect } from "react"; + +export type Verdict = { + title: string; + subtitle: string; + emoji: string; + score: number; +}; + +export function useUtepils() { + const [verdict, setVerdict] = useState(null); + const [score, setScore] = useState(0); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + fetch("https://utepils-ten.vercel.app/api/utepils/bergen") + .then((res) => { + if (!res.ok) throw new Error(`HTTP error! status: ${res.status}`); + console.log("Fetched utepils data:", res); + return res.json(); + }) + .then((data) => { + setVerdict(data.verdict); + setScore(data.score); + }) + .catch((err) => setError(err.message)) + .finally(() => setLoading(false)); + }, []); + + return { verdict, score, loading, error }; +} diff --git a/src/pages/calendar-screen.tsx b/src/pages/calendar-screen.tsx index ce74df3..f4e12e8 100644 --- a/src/pages/calendar-screen.tsx +++ b/src/pages/calendar-screen.tsx @@ -3,6 +3,7 @@ import Calendar from "../components/calendar"; import { Orakel } from "../components/orakel"; import TodaysBirthdays from "../components/todays-birthdays"; +import UtepilsCard from "../components/utepils"; // import SnowMinimal from "../components/christmas-decoration"; // import HeartsMinimal from "../components/valentines"; @@ -13,6 +14,7 @@ export const CalendarScreen = () => {
+
);