// React import React, { FC, useEffect } from 'react' import { Link } from 'react-router-dom' // Redux import { useDispatch, useSelector } from 'react-redux' import { ApplicationState } from '../../store' import { actionCreators as loaderActionCreators } from '../../store/reducers/Loader' import { actionCreators as blogFeaturedActionCreators } from '../../store/reducers/BlogFeatured' import { actionCreators as headerActionCreators } from '../../store/reducers/Header' // Reactstrap import { Card, CardBody, CardFooter, CardImg, Col, Container, Row } from 'reactstrap' // Models (interfaces) import { CallToActionSectionModel, FeaturedBlogsSectionModel, FeaturesSectionModel, TestimonialsSectionModel, TitleSectionModel } from '../../models/pageSections' import { BlogItemModel, FeatureModel, HeaderModel, TestimonialModel } from '../../models' // Custom components import { FeatherIcon } from '../../components/FeatherIcons' // Functions import { dateFormat } from '../../functions' // CSS Modules import style from './scss/style.module.scss' const TitleSection : FC = ({ title = "", text = "" }) => { return

{title}

...
} interface Fetures { title?: string, items?: FeatureModel [] } const FeaturesSection: FC = ({ title = "", items = [] }) => { return

{title ? title : ''}

{items ? items.map((item, index) =>

{item.title}

) : ''}
} interface Testimonials { items?: TestimonialModel [] } const TestimonialsSection: FC = ({ items = [] }) => { const item = items[0] return
{ item ?
{item.reviewer.fullName}/{item.reviewer.position}
: '' }
} interface FeaturedBlogs extends FeaturedBlogsSectionModel { items?: BlogItemModel [] } const FeaturedBlogsSection: FC = ({ title = "", text = "", items = [] }) =>

{title}

{items.map((item, index) =>
{item.badges}
{item.title}

{item.author.nickName}
{dateFormat(item.created)} · {item.readTime}
)}
const CallToActionSection: FC = ({ title, text, privacyDisclaimer, email = { placeHolder: "", title: "" } }) => { return
} const Home = () => { const dispatch = useDispatch() const { content, blogFeatured } = useSelector((state: ApplicationState) => state) const page = content?.homePage useEffect(() => { dispatch(blogFeaturedActionCreators.requestBlogFeatured()) }, []) useEffect(() => { content?.isLoading || blogFeatured?.isLoading ? dispatch(loaderActionCreators.show()) : setTimeout(() => { dispatch(loaderActionCreators.hide()) }, 1000) }, [content?.isLoading, blogFeatured?.isLoading]) const { header = {}, titleSection = { title: "", text: "" }, featuresSection = {}, testimonialsSection = {}, featuredBlogsSection = {}, callToActionSection = { title: "", text: "", privacyDisclaimer: "", email: { placeHolder: "", title: "" } } } = content?.homePage ? content.homePage : {} useEffect(() => { dispatch(headerActionCreators.updateHeader(header as HeaderModel)) }, [header]) return <> } export { Home }