import React from "react"; import { IGatsbyImageData } from "gatsby-plugin-image"; import { Link } from "gatsby"; import FeatureComponent from "./feature/FeatureComponent"; interface Props { title?: string; content?: string; image?: string | IGatsbyImageData; idMap?: number; layout?: 'left' | 'right'; backgroundImage?: string; action?: { label: string; to: string; }; custom?: JSX.Element; } const oClassName = { 'left' : { 'container': 'flex-col lg:flex-row', 'content': 'pt-10 lg:pl-10' }, 'right' : { 'container': 'flex-col-reverse lg:flex-row-reverse', 'content': 'pt-10 pb-10 lg:pr-10 lg:pb-0' } } const Feature = (props: Props) => { const { layout='left', title='', content='', image, idMap, backgroundImage, action, custom } = props; const className = oClassName[layout]; const bTextOnly = ( ! (idMap || image || custom)); const classNameContent = (bTextOnly) ? 'grow' : `lg:w-1/2 ${className['content']}`; const classNameBackground = (backgroundImage) ? "bg-[url('" + backgroundImage + "')] bg-cover bg-no-repeat bg-center " : ''; return ( <div className={`flex ${className['container']} ${classNameBackground}`}> { ! bTextOnly && ( <div className="h-[480px] lg:w-1/2"> <FeatureComponent idMap={idMap} image={image} custom={custom} /> </div> ) } <div className={classNameContent}> <h2 className="font-extrabold sm:text-4xl">{title}</h2> <p className="text-xl text-gray-500 leading-8 pt-10 text-justify">{content}</p> { action && ( <Link to={action.to} className="btn btn-active mt-10" > {action.label} </Link> ) } </div> </div> ); }; export default Feature;