import { createResource, createSignal, Show } from "solid-js";
import { api, type AuthUser } from "../lib/api";
import { Button } from "./ui/button";
import { Avatar, AvatarFallback, AvatarImage } from "./ui/avatar";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "./ui/card";
// Theme: .dark class on (shadcn convention). Default dark.
function theme(): string {
return localStorage.getItem("fs-theme") || "dark";
}
export function applyTheme(t: string) {
document.documentElement.classList.toggle("dark", t === "dark");
localStorage.setItem("fs-theme", t);
}
applyTheme(theme());
export function ThemeToggle() {
const [t, setT] = createSignal(theme());
return (
);
}
export function useAuth() {
const [me, { refetch }] = createResource(async (): Promise => {
try { return (await api.me()).user; } catch { return null; }
});
const [version] = createResource(async () => {
try { return await api.version(); } catch { return null; }
});
return { me, refetch, version };
}
// ButuhLogin: kartu ajakan login untuk halaman fitur yg di-hide bila logout.
export function ButuhLogin(props: { fitur: string }) {
return (
🔒 {props.fitur} perlu login
Biar datanya milik kamu sendiri (watchlist, notifikasi, report) —
daftar gratis, cukup username + password.
);
}
export function AuthButton(props: { me: AuthUser | null | undefined; onLogout: () => void }) {
return (
}>
{(u) => (
{u().avatar_url ? : null}
{(u().name || u().email || "?").slice(0, 1).toUpperCase()}
{u().name || u().email}
)}
);
}