/*
* External dependencies
*/
import { speakToneIcon } from '@automattic/jetpack-ai-client';
import { useAnalytics } from '@automattic/jetpack-shared-extension-utils';
import {
MenuItem,
MenuGroup,
ToolbarDropdownMenu,
DropdownMenu,
Icon,
Button,
Tooltip,
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { chevronRight } from '@wordpress/icons';
import React from 'react';
/**
* Internal dependencies
*/
import './style.scss';
const PROMPT_TONES_LIST = [
'formal',
'informal',
'optimistic',
'humorous',
'serious',
'skeptical',
'empathetic',
'confident',
'passionate',
'provocative',
] as const;
export const DEFAULT_PROMPT_TONE = 'formal';
export const TONE_LABEL = __( 'Change tone', 'jetpack' );
export const PROMPT_TONES_MAP = {
formal: {
label: __( 'Formal', 'jetpack' ),
emoji: '๐ฉ',
},
informal: {
label: __( 'Informal', 'jetpack' ),
emoji: '๐',
},
optimistic: {
label: __( 'Optimistic', 'jetpack' ),
emoji: '๐',
},
humorous: {
label: __( 'Humorous', 'jetpack' ),
emoji: '๐',
},
serious: {
label: __( 'Serious', 'jetpack' ),
emoji: '๐',
},
skeptical: {
label: __( 'Skeptical', 'jetpack' ),
emoji: '๐คจ',
},
empathetic: {
label: __( 'Empathetic', 'jetpack' ),
emoji: '๐',
},
confident: {
label: __( 'Confident', 'jetpack' ),
emoji: '๐',
},
passionate: {
label: __( 'Passionate', 'jetpack' ),
emoji: 'โค๏ธ',
},
provocative: {
label: __( 'Provocative', 'jetpack' ),
emoji: '๐ฅ',
},
};
export type ToneProp = ( typeof PROMPT_TONES_LIST )[ number ];
type ToneToolbarDropdownMenuProps = {
value?: ToneProp;
onChange: ( value: ToneProp ) => void;
label?: string;
disabled?: boolean;
};
const ToneMenuGroup = ( { value, onChange }: ToneToolbarDropdownMenuProps ) => (
{ PROMPT_TONES_LIST.map( tone => {
return (
);
} ) }
);
export function ToneDropdownMenu( {
label = TONE_LABEL,
value = DEFAULT_PROMPT_TONE,
onChange,
disabled = false,
}: ToneToolbarDropdownMenuProps ) {
return (
{ label }
>
),
disabled,
} }
>
{ ( { onClose } ) => (
{
onChange( newTone );
onClose();
} }
/>
) }
);
}
export default function ToneToolbarDropdownMenu( {
value = DEFAULT_PROMPT_TONE,
onChange,
disabled = false,
}: ToneToolbarDropdownMenuProps ) {
const { tracks } = useAnalytics();
const toggleHandler = isOpen => {
if ( isOpen ) {
tracks.recordEvent( 'jetpack_ai_assistant_block_toolbar_menu_show', { tool: 'tone' } );
}
};
return disabled ? (
) : (
{ () => }
);
}