import { ReactNode } from 'react';

import { IconProps } from '@@/Icon';

import { SearchBar } from './SearchBar';
import { Table } from './Table';

type Props = {
  title?: string;
  titleIcon?: IconProps['icon'];
  searchValue: string;
  onSearchChange(value: string): void;
  renderTableSettings?(): ReactNode;
  renderTableActions?(): ReactNode;
  description?: ReactNode;
};

export function DatatableHeader({
  onSearchChange,
  renderTableActions,
  renderTableSettings,
  searchValue,
  title,
  titleIcon,
  description,
}: Props) {
  if (!title) {
    return null;
  }

  return (
    <Table.Title label={title} icon={titleIcon} description={description}>
      <SearchBar value={searchValue} onChange={onSearchChange} />
      {renderTableActions && (
        <Table.Actions>{renderTableActions()}</Table.Actions>
      )}
      <Table.TitleActions>
        {!!renderTableSettings && renderTableSettings()}
      </Table.TitleActions>
    </Table.Title>
  );
}