feat(frontend): add basic frontend

This commit is contained in:
2025-12-26 20:14:30 +03:00
parent 262c42c1b3
commit 707a474ef3
38 changed files with 5230 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
import { Badge } from "../../../shared/ui/badge";
import type { WsStatus } from "../model/types";
const toneByStatus: Record<WsStatus, string> = {
connecting: "bg-slate-600",
open: "bg-emerald-600",
reconnecting: "bg-amber-600",
disconnected: "bg-rose-600",
};
export function WsStatusBadge({ status }: { status: WsStatus }) {
return (
<Badge className={`${toneByStatus[status]} text-white`}>ws: {status}</Badge>
);
}

View File

@@ -0,0 +1,15 @@
import { useEffect } from "react";
import { useLiveStreamStore } from "../model/liveStream.store";
export function useLiveStream(options?: { loadLatest?: boolean }) {
const connect = useLiveStreamStore((s) => s.connect);
const disconnect = useLiveStreamStore((s) => s.disconnect);
const loadLatest = useLiveStreamStore((s) => s.loadLatest);
useEffect(() => {
if (options?.loadLatest) void loadLatest(100);
connect();
return () => disconnect();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
}