import { formatUnknownError } from 'utils/formatUnknownError'; import useToast from 'hooks/useToast'; import FormTemplate from 'component/common/FormTemplate/FormTemplate'; import { CREATE_FEATURE } from 'component/providers/AccessProvider/permissions'; import { type ReactNode, useState, useContext, type FormEvent, useMemo, } from 'react'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import { useNavigate } from 'react-router-dom'; import { Dialog, styled } from '@mui/material'; import { useUiFlag } from 'hooks/useUiFlag'; import useProjects from 'hooks/api/getters/useProjects/useProjects'; import { Limit } from 'component/common/Limit/Limit'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import UIContext from 'contexts/UIContext'; import useFeatureForm from 'component/feature/hooks/useFeatureForm'; import useFeatureApi from 'hooks/api/actions/useFeatureApi/useFeatureApi'; import FlagIcon from '@mui/icons-material/Flag'; import ImpressionDataIcon from '@mui/icons-material/AltRoute'; import { useFlagLimits } from 'component/feature/CreateFeature/CreateFeature'; import { useGlobalFeatureSearch } from 'component/feature/FeatureToggleList/useGlobalFeatureSearch'; import useProjectOverview, { featuresCount, } from 'hooks/api/getters/useProjectOverview/useProjectOverview'; import type { FeatureTypeSchema } from 'openapi'; import { getFeatureTypeIcons } from 'utils/getFeatureTypeIcons'; import useFeatureTypes from 'hooks/api/getters/useFeatureTypes/useFeatureTypes'; import { DialogFormTemplate } from 'component/common/DialogFormTemplate/DialogFormTemplate'; import { SingleSelectConfigButton } from 'component/common/DialogFormTemplate/ConfigButtons/SingleSelectConfigButton'; import useAllTags from 'hooks/api/getters/useAllTags/useAllTags'; import Label from '@mui/icons-material/Label'; import { ProjectIcon } from 'component/common/ProjectIcon/ProjectIcon'; import { MultiSelectConfigButton } from 'component/common/DialogFormTemplate/ConfigButtons/MultiSelectConfigButton'; import type { ITag } from 'interfaces/tags'; import { ToggleConfigButton } from 'component/common/DialogFormTemplate/ConfigButtons/ToggleConfigButton'; interface ICreateFeatureDialogProps { open: boolean; onClose: () => void; } const StyledDialog = styled(Dialog)(({ theme }) => ({ '& .MuiDialog-paper': { borderRadius: theme.shape.borderRadiusLarge, maxWidth: theme.spacing(170), width: '100%', backgroundColor: 'transparent', }, padding: 0, '& .MuiPaper-root > section': { overflowX: 'hidden', }, })); const configButtonData = { project: { icon: , text: 'Projects allow you to group feature flags together in the Unleash admin UI and in SDK payloads.', }, tags: { icon: