import clsx from 'clsx'; import {LandingPageContent} from './landing-page-content'; import {Navbar} from '@common/ui/navigation/navbar/navbar'; import {Button, ButtonProps} from '@common/ui/buttons/button'; import {IconButton} from '@common/ui/buttons/icon-button'; import {KeyboardArrowDownIcon} from '@common/icons/material/KeyboardArrowDown'; import {MixedImage} from '@common/ui/images/mixed-image'; import {Footer} from '@common/ui/footer/footer'; import {Trans} from '@common/i18n/trans'; import {AdHost} from '@common/admin/ads/ad-host'; import {Link} from 'react-router-dom'; import {createSvgIconFromTree} from '@common/icons/create-svg-icon'; import {MenuItemConfig} from '@common/core/settings/settings'; import {Fragment} from 'react'; import {DefaultMetaTags} from '@common/seo/default-meta-tags'; import {useTrans} from '@common/i18n/use-trans'; import {useSettings} from '@common/core/settings/use-settings'; interface ContentProps { content: LandingPageContent; } export function LandingPage() { const settings = useSettings(); const homepage = settings.homepage as {appearance: LandingPageContent}; return (
); } function HeroHeader({ content: { headerTitle, headerSubtitle, headerImage, headerImageOpacity, actions, headerOverlayColor1, headerOverlayColor2, }, }: ContentProps) { const {trans} = useTrans(); let overlayBackground = undefined; if (headerOverlayColor1 && headerOverlayColor2) { overlayBackground = `linear-gradient(45deg, ${headerOverlayColor1} 0%, ${headerOverlayColor2} 100%)`; } else if (headerOverlayColor1) { overlayBackground = headerOverlayColor1; } else if (headerOverlayColor2) { overlayBackground = headerOverlayColor2; } return (
{headerTitle && (

)} {headerSubtitle && (
)}
); } interface CtaButtonProps extends ButtonProps { item?: MenuItemConfig; } function CtaButton({item, ...buttonProps}: CtaButtonProps) { if (!item?.label) return null; const Icon = item.icon ? createSvgIconFromTree(item.icon) : undefined; return ( ); } function PrimaryFeatures({content}: ContentProps) { return (
{content?.primaryFeatures?.map((feature, index) => (

))}
); } function SecondaryFeatures({content}: ContentProps) { return (
{content?.secondaryFeatures?.map((feature, index) => { const isEven = index % 2 === 0; return (

); })}
); } function BottomCta({content}: ContentProps) { return (

{content.footerSubtitle && (

)}
); }