import { ReactNode } from 'react';

import { CommonProps } from '../../../../types';
import { assertEmptyObject } from '../../../../utils/assertEmptyObject';

import { StyledBodyContent, TunedBodyScroll } from './styled';

export interface PageBodyProps extends CommonProps {
  /** Content of page */
  children: ReactNode;
}

/**
 * Component that should contain main content in {@link Page}
 *
 * ```tsx
 * import { PageBody } from 'ui-kit';
 *
 * <PageBody>Some content</PageBody>
 * ```
 */
export function PageBody(props: PageBodyProps) {
  const { children, className, testId, ariaDescribedBy, ...rest } = props;
  assertEmptyObject(rest);

  return (
    <TunedBodyScroll ariaDescribedBy={ariaDescribedBy} className={className} testId={testId}>
      <StyledBodyContent>{children}</StyledBodyContent>
    </TunedBodyScroll>
  );
}
