// @flow
import type { Node } from 'react';
import React from 'react';
import classnames from 'classnames';
import Icon from 'component/common/icon';

type Props = {
  title?: string | Node,
  subtitle?: string | Node,
  body?: string | Node,
  actions?: string | Node,
  icon?: string,
  className?: string,
  actionIconPadding?: boolean,
};

export default function Card(props: Props) {
  const { title, subtitle, body, actions, icon, className, actionIconPadding = true } = props;
  return (
    <section className={classnames(className, 'card')}>
      {title && (
        <div className="card__header">
          <div className="section__flex">
            {icon && <Icon sectionIcon icon={icon} />}
            <div>
              <h2 className="section__title">{title}</h2>
              {subtitle && <div className="section__subtitle">{subtitle}</div>}
            </div>
          </div>
        </div>
      )}

      {body && <div className={classnames('card__body', { 'card__body--with-icon': icon })}>{body}</div>}
      {actions && (
        <div
          className={classnames('card__main-actions', { 'card__main-actions--with-icon': icon && actionIconPadding })}
        >
          {actions}
        </div>
      )}
    </section>
  );
}