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()} )} ); }