/**
* External dependencies
*/
import { ExternalLink } from '@wordpress/components';
import { createInterpolateElement } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import Message, { MESSAGE_SEVERITY_INFO } from '.';
import './style.scss';
/**
* Types
*/
import type { MessageSeverityProp, MessageProps } from '.';
import type React from 'react';
export const ASSISTANT_STATE_INIT = 'init';
export const ASSISTANT_STATE_READY_TO_GENERATE = 'ready-to-generate';
export const ASSISTANT_STATE_GENERATING = 'generating-content';
export const ASSISTANT_STATE_CONTENT_GENERATED = 'content-generated';
const blockStateTypes = [
ASSISTANT_STATE_INIT,
ASSISTANT_STATE_READY_TO_GENERATE,
ASSISTANT_STATE_GENERATING,
ASSISTANT_STATE_CONTENT_GENERATED,
] as const;
export type BlockMessageProps = MessageProps & {
state: ( typeof blockStateTypes )[ number ];
};
/**
* React component to render a block message.
*
* @param {BlockMessageProps} props - Component props.
* @returns {React.ReactElement } Banner component.
*/
export default function BlockMessage( props: BlockMessageProps ): React.ReactElement {
const { state } = props;
if ( ! state ) {
return null;
}
// Ready to generate message
let messageText = null;
// eslint-disable-next-line prefer-const
let severity: MessageSeverityProp = MESSAGE_SEVERITY_INFO;
switch ( state ) {
case ASSISTANT_STATE_INIT:
messageText = __( 'Ask AI Assistant for anything…', 'jetpack' ); // 'Ask for content suggestions.
break;
case ASSISTANT_STATE_READY_TO_GENERATE:
messageText = createInterpolateElement(
__( 'Press Enter to send your request.', 'jetpack' ),
{
em: ,
}
);
break;
case ASSISTANT_STATE_GENERATING:
messageText = __( 'Generating content…', 'jetpack' );
break;
case ASSISTANT_STATE_CONTENT_GENERATED:
messageText = createInterpolateElement(
__(
'AI-generated content could be inaccurate or biased. Learn more',
'jetpack'
),
{
link: ,
}
);
break;
}
return (
{ messageText }
);
}