// @flow import * as React from 'react'; import { InlineNotice } from '@box/blueprint-web'; import { useCallback } from 'react'; import { FormattedMessage, useIntl } from 'react-intl'; // $FlowFixMe import { BoxAiAdvancedLogo24, BoxAiLogo24 } from '@box/blueprint-web-assets/icons/Logo'; import { type AgentType } from '@box/box-ai-agent-selector'; // $FlowFixMe import { BoxAiAgentSelectorWithApiContainer } from '@box/box-ai-agent-selector'; import Toggle from '../../components/toggle'; import { RadioButton, RadioGroup } from '../../components/radio'; import Link from '../../components/link/Link'; import IconAlertDefault from '../../icons/general/IconAlertDefault'; import messages from './messages'; import './CascadePolicy.scss'; import { STANDARD_AGENT_ID, ENHANCED_AGENT_ID, ENHANCED_AGENT_CONFIGURATION } from './constants'; import type { MetadataCascadePolicyConfiguration } from '../../common/types/metadata'; const COMMUNITY_LINK = 'https://support.box.com/hc/en-us/articles/360044195873-Cascading-metadata-in-folders'; const AI_LINK = 'https://www.box.com/ai'; type Props = { canEdit: boolean, canUseAIFolderExtraction: boolean, cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration, isAIFolderExtractionEnabled: boolean, isCascadingEnabled: boolean, isCascadingOverwritten: boolean, isCustomMetadata: boolean, isExistingCascadePolicy: boolean, onAIFolderExtractionToggle: (value: boolean) => void, onAIAgentSelect?: (agent: AgentType | null) => void, onCascadeModeChange: (value: boolean) => void, onCascadeToggle: (value: boolean) => void, shouldShowCascadeOptions: boolean, }; const CascadePolicy = ({ canEdit, canUseAIFolderExtraction, cascadePolicyConfiguration, isCascadingEnabled, isCascadingOverwritten, isCustomMetadata, isAIFolderExtractionEnabled, isExistingCascadePolicy, onAIFolderExtractionToggle, onAIAgentSelect, onCascadeToggle, onCascadeModeChange, shouldShowCascadeOptions, }: Props) => { const { formatMessage } = useIntl(); const readOnlyState = isCascadingEnabled ? (