import type { FC, HTMLAttributes, ReactComponentElement, ReactNode, } from 'react'; import styles from './columns.module.scss'; export type ColumnProps = HTMLAttributes & { children: ReactNode; }; /** * Column component. * * Render the body as a column. */ export const Column: FC = ({ children, ...props }) => (
{children}
); // eslint-disable-next-line @typescript-eslint/no-magic-numbers type ColumnsNumber = 2 | 3 | 4; export type ColumnsProps = { /** * The columns. */ children: ReactComponentElement[]; /** * Set additional classnames to the columns wrapper. */ className?: string; /** * The number of columns. */ count: ColumnsNumber; /** * Should the columns be stacked on small devices? Default: true. */ responsive?: boolean; }; /** * Columns component. * * Render some Column components as columns. */ export const Columns: FC = ({ children, className = '', count, responsive = true, }) => { const countClass = `wrapper--${count}-columns`; const responsiveClass = responsive ? `wrapper--responsive` : 'wrapper--no-responsive'; const wrapperClass = `${styles.wrapper} ${styles[countClass]} ${styles[responsiveClass]} ${className}`; return
{children}
; };