PluginProbe
Extendify / 3.1.3
Extendify v3.1.3
3.2.1 3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 All 127 releases
extendify / src / Agent / components / messages / WorkflowMessage.jsx

WorkflowMessage.jsx in Extendify 3.1.3, at src/Agent/components/messages/WorkflowMessage.jsx

98 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { ChatSuggestions } from '@agent/components/ChatSuggestions';
2 import { Rating } from '@agent/components/Rating';
3 import { decodeEntities } from '@wordpress/html-entities';
4 import { __ } from '@wordpress/i18n';
5
6 // Note: this used to have more status like joined, cancelled, transferred etc.
7 export const WorkflowMessage = ({ message }) => {
8 const { answerId, suggestions, status, label } = message.details;
9
10 if (status === 'canceled') {
11 return (
12 <>
13 <WorkflowToolCanceled label={label} />
14 <WorkflowFooter answerId={answerId} suggestions={suggestions} />
15 </>
16 );
17 }
18
19 return (
20 <>
21 {/* No label on a static-component finish — its own message shows the result. */}
22 {label && <WorkflowToolCompleted label={label} />}
23 <WorkflowFooter answerId={answerId} suggestions={suggestions} />
24 </>
25 );
26 };
27
28 const WorkflowFooter = ({ answerId, suggestions }) => {
29 const hasSuggestions = suggestions?.length > 0;
30 if (!answerId && !hasSuggestions) return null;
31
32 return (
33 <div className="flex flex-col gap-px p-2 text-center text-xs italic">
34 {answerId && <Rating answerId={answerId} />}
35 {hasSuggestions && (
36 <div className="relative mb-4 ml-9 mr-2 mt-4 flex flex-col gap-0.5 border-t border-gray-300 p-0 pt-4 text-sm text-gray-800 rtl:ml-2 rtl:mr-9">
37 <p className="m-0 mb-2 p-0 px-2 text-left text-sm not-italic text-gray-900 rtl:text-right">
38 {__(
39 "What's next? Would you like to do something else?",
40 'extendify-local',
41 )}
42 </p>
43 <ChatSuggestions suggestions={suggestions} />
44 </div>
45 )}
46 </div>
47 );
48 };
49
50 const WorkflowToolCompleted = ({ label }) => {
51 return (
52 <div className="flex w-full items-start gap-2.5 p-2">
53 <div className="w-7 shrink-0" />
54 <div className="flex min-w-0 flex-1 flex-col gap-1">
55 <div className="flex items-center gap-2 rounded-lg border border-wp-alert-green bg-wp-alert-green/20 p-3 text-green-900">
56 <div className="h-6 w-6 leading-none">
57 <svg
58 xmlns="http://www.w3.org/2000/svg"
59 fill="none"
60 viewBox="0 0 24 24"
61 strokeWidth={1.5}
62 stroke="currentColor"
63 className="size-6"
64 >
65 <title>{__('Success icon', 'extendify-local')}</title>
66 <path
67 strokeLinecap="round"
68 strokeLinejoin="round"
69 d="M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
70 />
71 </svg>
72 </div>
73 <div className="text-sm">
74 {decodeEntities(label) ||
75 __('Workflow completed successfully', 'extendify-local')}
76 </div>
77 </div>
78 </div>
79 </div>
80 );
81 };
82
83 const WorkflowToolCanceled = ({ label }) => {
84 return (
85 <div className="flex w-full items-start gap-2.5 p-2">
86 <div className="w-7 shrink-0" />
87 <div className="flex min-w-0 flex-1 flex-col gap-1">
88 <div className="flex items-center gap-2 rounded-lg border border-gray-300 bg-gray-50 p-3 text-gray-700">
89 <div className="text-sm">
90 {decodeEntities(label) ||
91 __('Workflow was canceled', 'extendify-local')}
92 </div>
93 </div>
94 </div>
95 </div>
96 );
97 };
98