Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ibm
GitHub Repository: ibm/watson-machine-learning-samples
Path: blob/master/cloud/ai-service-apps/nextjs-carbon-react-ui/src/components/InitialMessage/InitialMessage.js
6408 views
1
// Modules -------------------------------------------------------------------->
2
3
import { useContext } from "react";
4
import PropTypes from "prop-types";
5
import cx from "classnames";
6
import Image from "next/image";
7
import { DeploymentContext } from "../../contexts/deployment-context";
8
import QuickChatButton from "../QuickChatButton/QuickChatButton";
9
10
// Globals -------------------------------------------------------------------->
11
const DEFAULT_DESCRIPTION = "You can chat with your gen AI solution.";
12
13
// Component ------------------------------------------------------------------>
14
15
function InitialMessage({ onQuestion }) {
16
const deployment = useContext(DeploymentContext);
17
18
const promptButtons = deployment?.sample_questions || [];
19
const initialGreeting = `Welcome to ${deployment?.name || "watsonx Agent"}`; // TODO translate
20
const beforeStart = deployment?.description || DEFAULT_DESCRIPTION;
21
const imageUrl = `/${deployment?.placeholder_image}`;
22
const initialImageUrl = deployment?.placeholder_image ? imageUrl : null;
23
24
const imageContainerClass = cx("initial-message__imageContainer", {
25
["customImage"]: Boolean(deployment),
26
});
27
28
return (
29
<div className="initial-message">
30
<h2 className="initial-message__header">{initialGreeting}</h2>
31
<span className="initial-message__message">{beforeStart}</span>
32
<div className={imageContainerClass}>
33
{!initialImageUrl && <div className="initial-message__initialMessageImg" />}
34
{initialImageUrl && (
35
<Image
36
src={initialImageUrl}
37
alt="ALT TO REPLACE"
38
fill
39
style={{ objectFit: "cover" }}
40
className="relative"
41
sizes="(max-width: 768px)"
42
priority
43
/>
44
)}
45
</div>
46
{promptButtons.length > 0 && (
47
<>
48
<h2 className="initial-message__quickChatHeader">Quick start samples</h2>
49
<div className="initial-message__quickChat">
50
{promptButtons &&
51
promptButtons.map((promptText, idx) => (
52
<QuickChatButton
53
key={idx}
54
onClick={() => {
55
onQuestion(promptText);
56
}}
57
>
58
{promptText}
59
</QuickChatButton>
60
))}
61
</div>
62
</>
63
)}
64
</div>
65
);
66
}
67
68
InitialMessage.propTypes = {
69
onQuestion: PropTypes.func.isRequired,
70
};
71
72
// Public Methods ------------------------------------------------------------->
73
74
export default InitialMessage;
75
76