import { useCallback, useMemo, useState } from "react"; import Heading from "@/components/ui/heading"; import ActivityScrubber, { ScrubberItem, } from "@/components/scrubber/ActivityScrubber"; import useSWR from "swr"; import { FrigateConfig } from "@/types/frigateConfig"; import { Event } from "@/types/event"; import ActivityIndicator from "@/components/ui/activity-indicator"; import { useApiHost } from "@/api"; import TimelineScrubber from "@/components/playground/TimelineScrubber"; // Color data const colors = [ "background", "foreground", "card", "card-foreground", "popover", "popover-foreground", "primary", "primary-foreground", "secondary", "secondary-foreground", "muted", "muted-foreground", "accent", "accent-foreground", "destructive", "destructive-foreground", "border", "input", "ring", ]; function ColorSwatch({ name, value }: { name: string; value: string }) { return (
{name}
); } function eventsToScrubberItems(events: Event[]): ScrubberItem[] { const apiHost = useApiHost(); return events.map((event: Event) => ({ id: event.id, content: `
${event.label}
`, start: new Date(event.start_time * 1000), end: event.end_time ? new Date(event.end_time * 1000) : undefined, type: "box", })); } function UIPlayground() { const { data: config } = useSWR("config"); const [timeline, setTimeline] = useState(undefined); const onSelect = useCallback(({ items }: { items: string[] }) => { setTimeline(items[0]); }, []); const recentTimestamp = useMemo(() => { const now = new Date(); now.setMinutes(now.getMinutes() - 240); return now.getTime() / 1000; }, []); const { data: events } = useSWR([ "events", { limit: 10, after: recentTimestamp }, ]); return ( <> UI Playground Scrubber

Shows the 10 most recent events within the last 4 hours

{!config && } {config && (
{events && events.length > 0 && ( <> )}
)} {config && (
{timeline && ( <> )}
)} Color scheme

Colors as set by the current theme. See the{" "} shadcn theming docs {" "} for usage.

{colors.map((color, index) => ( ))}
); } export default UIPlayground;