Files
EpicNext-Cms/src/components/live-online-counter.tsx
T
openhands a6e808a099
CI / check (push) Successful in 4m10s
CI / preflight (push) Skipped
CI / deploy (push) Successful in 2m43s
perf(landing): share one SSE socket for online counters, respect reduced motion
Header and hero/stats counters each opened their own EventSource to the
online-count stream; a shared subscriber now opens a single socket and
multicasts to every mounted counter. The entrance count-up animation skips
its requestAnimationFrame loop when the user prefers reduced motion.
2026-09-18 12:57:52 +02:00

22 lines
560 B
TypeScript

"use client";
import { AnimatedCounter } from "@/components/animated-counter";
import { useOnlineCount } from "@/lib/online-count-sse";
/**
* Live animated online-count number. Shares a single SSE connection (see
* `useOnlineCount`) so the whole page uses one socket instead of one per
* counter, while keeping the entrance counter animation.
*/
export function LiveOnlineCounter({
initial,
suffix = "",
}: {
initial: number;
suffix?: string;
}) {
const count = useOnlineCount(initial);
return <AnimatedCounter value={count} suffix={suffix} />;
}