import {LandingPageContent} from '@app/landing/landing-page-content'; import {useFormContext} from 'react-hook-form'; import { appearanceState, AppearanceValues, useAppearanceStore, } from '@common/admin/appearance/appearance-store'; import {Fragment, ReactNode} from 'react'; import {FormTextField} from '@common/ui/forms/input-field/text-field/text-field'; import {Trans} from '@common/i18n/trans'; import {FormSlider} from '@common/ui/forms/slider/slider'; import {DialogTrigger} from '@common/ui/overlays/dialog/dialog-trigger'; import {AppearanceButton} from '@common/admin/appearance/appearance-button'; import {ColorIcon} from '@common/admin/appearance/sections/themes/color-icon'; import {ColorPickerDialog} from '@common/ui/color-picker/color-picker-dialog'; import {Link} from 'react-router-dom'; import {FormImageSelector} from '@common/ui/images/image-selector'; export function LandingPageSectionGeneral() { return (
); } function HeaderSection() { const defaultImage = useAppearanceStore( s => (s.defaults?.settings.homepage.appearance as LandingPageContent) ?.headerImage ); return ( <> } className="mb-20" name="settings.homepage.appearance.headerTitle" onFocus={() => { appearanceState().preview.setHighlight('[data-testid="headerTitle"]'); }} /> } className="mb-30" inputElementType="textarea" rows={4} name="settings.homepage.appearance.headerSubtitle" onFocus={() => { appearanceState().preview.setHighlight( '[data-testid="headerSubtitle"]' ); }} /> } defaultValue={defaultImage} diskPrefix="homepage" /> } minValue={0} step={0.1} maxValue={1} formatOptions={{style: 'percent'}} />
} /> } /> ); } function FooterSection() { const defaultImage = useAppearanceStore( s => (s.defaults?.settings.homepage.appearance as LandingPageContent) ?.footerImage ); return ( } className="mb-20" name="settings.homepage.appearance.footerTitle" onFocus={() => { appearanceState().preview.setHighlight('[data-testid="footerTitle"]'); }} /> } className="mb-20" name="settings.homepage.appearance.footerSubtitle" onFocus={() => { appearanceState().preview.setHighlight( '[data-testid="footerSubtitle"]' ); }} /> } defaultValue={defaultImage} diskPrefix="homepage" /> ); } interface ColorPickerTriggerProps { formKey: string; label: ReactNode; } function ColorPickerTrigger({label, formKey}: ColorPickerTriggerProps) { const key = formKey as 'settings.homepage.appearance.headerOverlayColor1'; const {watch, setValue} = useFormContext(); const formValue = watch(key); const setColor = (value: string | null) => { setValue(formKey as any, value, { shouldDirty: true, }); }; return ( { setColor(value); }} > } > {label} { setColor(newValue); }} /> ); }