'use client';

import { useEffect, useState } from 'react';

/**
 * Откладывает рендер детей до момента монтирования на клиенте.
 * Устраняет ошибку "Can't perform a React state update on a component that hasn't mounted yet"
 * при гидрации с next-themes и другими провайдерами.
 */
export function ClientOnly({
  children,
  fallback = null,
}: {
  children: React.ReactNode;
  fallback?: React.ReactNode;
}) {
  const [mounted, setMounted] = useState(false);

  useEffect(() => {
    setMounted(true);
  }, []);

  if (!mounted) return fallback;
  return <>{children}</>;
}
