import { useCallback, useMemo } from "react"; import { observer } from "mobx-react"; import { Check } from "lucide-react"; // plane constants import { EIssueLayoutTypes, ISSUE_LAYOUT_MAP } from "@plane/constants"; // plane i18n import { useTranslation } from "@plane/i18n"; // plane ui import { Dropdown } from "@plane/ui"; // plane utils import { cn } from "@plane/utils"; // components import { IssueLayoutIcon } from "@/components/issues"; type TLayoutDropDown = { onChange: (value: EIssueLayoutTypes) => void; value: EIssueLayoutTypes; disabledLayouts?: EIssueLayoutTypes[]; }; export const LayoutDropDown = observer((props: TLayoutDropDown) => { const { onChange, value = EIssueLayoutTypes.LIST, disabledLayouts = [] } = props; // plane i18n const { t } = useTranslation(); // derived values const availableLayouts = useMemo( () => Object.values(ISSUE_LAYOUT_MAP).filter((layout) => !disabledLayouts.includes(layout.key)), [disabledLayouts] ); const options = useMemo( () => availableLayouts.map((issueLayout) => ({ data: issueLayout.key, value: issueLayout.key, })), [availableLayouts] ); const buttonContent = useCallback((isOpen: boolean, buttonValue: string | string[] | undefined) => { const dropdownValue = ISSUE_LAYOUT_MAP[buttonValue as EIssueLayoutTypes]; return (