import {useState, useCallback, useMemo} from 'react';
import {ViewStyle} from 'react-native';
import {IS_TV, TV_FOCUS_COLOR, TV_FOCUS_BORDER} from '../utils/tv';

/**
 * Hook that provides D-pad focus props + highlight style for TV.
 * On non-TV devices, returns no-ops so callers don't need IS_TV checks.
 */
export function useTVFocus(borderColor: string = TV_FOCUS_COLOR) {
  const [focused, setFocused] = useState(false);
  const onFocus = useCallback(() => setFocused(true), []);
  const onBlur = useCallback(() => setFocused(false), []);

  const focusStyle: ViewStyle | null = useMemo(
    () =>
      focused
        ? {borderWidth: TV_FOCUS_BORDER, borderColor}
        : null,
    [focused, borderColor],
  );

  if (!IS_TV) {
    return {focused: false, focusProps: {} as const, focusStyle: null};
  }

  return {
    focused,
    focusProps: {focusable: true, onFocus, onBlur} as const,
    focusStyle,
  };
}
