import type { QuizQuestionImages, QuizQuestionVariant } from "@frontend/squzanswerer"; import { Box, Button, Typography, useMediaQuery, useTheme } from "@mui/material"; import { updateQuestion } from "@root/questions/actions"; import CustomCheckbox from "@ui_kit/CustomCheckbox"; import { memo } from "react"; import FormatIcon1 from "../../../assets/icons/questionsPage/FormatIcon1"; import FormatIcon2 from "../../../assets/icons/questionsPage/FormatIcon2"; import ProportionsIcon11 from "../../../assets/icons/questionsPage/ProportionsIcon11"; import ProportionsIcon12 from "../../../assets/icons/questionsPage/ProportionsIcon12"; import ProportionsIcon21 from "../../../assets/icons/questionsPage/ProportionsIcon21"; type Proportion = "1:1" | "2:1" | "1:2"; type ProportionItem = { value: Proportion; icon: (props: { color: string }) => JSX.Element; }; const PROPORTIONS: ProportionItem[] = [ { value: "1:1", icon: ProportionsIcon11 }, { value: "2:1", icon: ProportionsIcon21 }, { value: "1:2", icon: ProportionsIcon12 }, ]; type Format = "carousel" | "masonry"; type FormatItem = { value: Format; icon: (props: { color: string }) => JSX.Element; }; const FORMATS: FormatItem[] = [ { value: "masonry", icon: FormatIcon2 }, { value: "carousel", icon: FormatIcon1 }, ]; type SettingOpytionsPictProps = { questionId: string; isRequired: boolean; isMulti: boolean; isOwn: boolean; proportions: Proportion; format: Format; }; const SettingOptionsPict = memo(function ({ questionId, isRequired, isMulti, isOwn, proportions, format, }) { const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(985)); const isMobile = useMediaQuery(theme.breakpoints.down(790)); const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990)); return ( Пропорции {PROPORTIONS.map((proportionItem, index) => ( { updateQuestion(questionId, (question) => { if (question.type !== "images") return; question.content.xy = proportionItem.value; }); }} /> ))} Настройки ответов { updateQuestion(questionId, (question) => { question.content.multi = target.checked; }); }} /> { updateQuestion(questionId, (question) => { question.content.own = target.checked; }); }} /> Формат {FORMATS.map((formatItem, index) => ( { updateQuestion(questionId, (question) => { if (question.type !== "images") return; question.content.format = formatItem.value; }); }} /> ))} Настройки вопросов updateQuestion(questionId, (question) => { if (question.type !== "images") return; question.content.required = !target.checked; }) } /> ); }); SettingOptionsPict.displayName = "SettingOptionsPict"; export default SettingOptionsPict; interface Props { Icon: (props: { color: string }) => JSX.Element; isActive?: boolean; onClick: () => void; } export function SelectIconButton({ Icon, isActive = false, onClick }: Props) { const theme = useTheme(); return (