"use client"; import { useRef, type TouchEvent } from "react"; export interface SourceChip { id: string; label: string; dot?: string; count?: number; } export function SourceChips({ sources, value, onChange }: { sources: SourceChip[]; value: string; onChange: (value: string) => void }): React.ReactElement { const start = useRef<{ x: number; y: number } | null>(null); function end(event: TouchEvent): void { if (start.current === null) return; const dx = (event.changedTouches[0]?.clientX ?? start.current.x) - start.current.x; const dy = (event.changedTouches[0]?.clientY ?? start.current.y) - start.current.y; start.current = null; if (Math.abs(dx) < 50 || Math.abs(dx) < Math.abs(dy) * 1.5) return; const index = sources.findIndex((source) => source.id === value); const next = sources[Math.max(0, Math.min(sources.length - 1, index + (dx < 0 ? 1 : -1)))]; if (next) onChange(next.id); } return
{ start.current = { x: event.touches[0]?.clientX ?? 0, y: event.touches[0]?.clientY ?? 0 }; }} onTouchEnd={end}> {sources.map((source) => )}
; }