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);
}}
/>
);
}