@pega/cosmos-react-work 9.0.0-build.9.9 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/lib/components/AppAnnouncement/AppAnnouncement.d.ts +2 -1
  2. package/lib/components/AppAnnouncement/AppAnnouncement.d.ts.map +1 -1
  3. package/lib/components/AppAnnouncement/AppAnnouncement.js +36 -21
  4. package/lib/components/AppAnnouncement/AppAnnouncement.js.map +1 -1
  5. package/lib/components/Article/ArticleRating.d.ts +1 -1
  6. package/lib/components/Article/ArticleRating.d.ts.map +1 -1
  7. package/lib/components/ArticleList/AIArticleSummary.d.ts +3 -1
  8. package/lib/components/ArticleList/AIArticleSummary.d.ts.map +1 -1
  9. package/lib/components/ArticleList/ArticleBuddy.d.ts +1 -1
  10. package/lib/components/ArticleList/ArticleBuddy.d.ts.map +1 -1
  11. package/lib/components/ArticleList/ArticleBuddy.js +5 -1
  12. package/lib/components/ArticleList/ArticleBuddy.js.map +1 -1
  13. package/lib/components/ArticleList/ArticleBuddyList.d.ts +1 -1
  14. package/lib/components/ArticleList/ArticleBuddyList.d.ts.map +1 -1
  15. package/lib/components/ArticleList/ArticleBuddyResponse.d.ts +189 -3
  16. package/lib/components/ArticleList/ArticleBuddyResponse.d.ts.map +1 -1
  17. package/lib/components/ArticleList/ArticleBuddyResponse.js +1 -1
  18. package/lib/components/ArticleList/ArticleBuddyResponse.js.map +1 -1
  19. package/lib/components/ArticleList/ArticleFeedback.d.ts +3 -1
  20. package/lib/components/ArticleList/ArticleFeedback.d.ts.map +1 -1
  21. package/lib/components/ArticleList/ArticleList.d.ts +2 -2
  22. package/lib/components/ArticleList/ArticleList.d.ts.map +1 -1
  23. package/lib/components/ArticleList/ArticleList.js +6 -0
  24. package/lib/components/ArticleList/ArticleList.js.map +1 -1
  25. package/lib/components/ArticleList/ArticleList.types.d.ts +17 -2
  26. package/lib/components/ArticleList/ArticleList.types.d.ts.map +1 -1
  27. package/lib/components/ArticleList/ArticleList.types.js.map +1 -1
  28. package/lib/components/ArticleList/ArticleListHeader.d.ts +183 -1
  29. package/lib/components/ArticleList/ArticleListHeader.d.ts.map +1 -1
  30. package/lib/components/ArticleList/ArticleSummary.styles.d.ts +2 -2
  31. package/lib/components/ArticleList/ArticleSummary.styles.d.ts.map +1 -1
  32. package/lib/components/ArticleList/ArticleSummaryHeader.d.ts.map +1 -1
  33. package/lib/components/ArticleList/ArticleSummaryHeader.js +3 -1
  34. package/lib/components/ArticleList/ArticleSummaryHeader.js.map +1 -1
  35. package/lib/components/ArticleList/QuestionList.d.ts +5 -3
  36. package/lib/components/ArticleList/QuestionList.d.ts.map +1 -1
  37. package/lib/components/ArticleList/RelatedQuestions.d.ts +4 -2
  38. package/lib/components/ArticleList/RelatedQuestions.d.ts.map +1 -1
  39. package/lib/components/Assignments/Assignments.d.ts +2 -2
  40. package/lib/components/Assignments/Assignments.d.ts.map +1 -1
  41. package/lib/components/Assignments/Assignments.js +1 -1
  42. package/lib/components/Assignments/Assignments.js.map +1 -1
  43. package/lib/components/Assignments/Assignments.styles.d.ts +7 -3
  44. package/lib/components/Assignments/Assignments.styles.d.ts.map +1 -1
  45. package/lib/components/CaseHierarchy/CaseHierarchy.d.ts +2 -2
  46. package/lib/components/CaseHierarchy/CaseHierarchy.d.ts.map +1 -1
  47. package/lib/components/CaseHierarchy/CaseHierarchy.js +4 -3
  48. package/lib/components/CaseHierarchy/CaseHierarchy.js.map +1 -1
  49. package/lib/components/CaseHierarchy/CaseHierarchy.styles.d.ts +7 -3
  50. package/lib/components/CaseHierarchy/CaseHierarchy.styles.d.ts.map +1 -1
  51. package/lib/components/CaseHierarchy/CaseHierarchy.styles.js +9 -7
  52. package/lib/components/CaseHierarchy/CaseHierarchy.styles.js.map +1 -1
  53. package/lib/components/CaseHierarchy/CaseHierarchy.test-ids.d.ts +1 -1
  54. package/lib/components/CaseHierarchy/CaseHierarchy.test-ids.d.ts.map +1 -1
  55. package/lib/components/CaseHierarchy/CaseHierarchy.test-ids.js +2 -1
  56. package/lib/components/CaseHierarchy/CaseHierarchy.test-ids.js.map +1 -1
  57. package/lib/components/CaseHierarchy/CaseHierarchy.types.d.ts +7 -1
  58. package/lib/components/CaseHierarchy/CaseHierarchy.types.d.ts.map +1 -1
  59. package/lib/components/CaseHierarchy/CaseHierarchy.types.js.map +1 -1
  60. package/lib/components/CasePreview/CasePreview.d.ts +1 -1
  61. package/lib/components/CasePreview/CasePreview.d.ts.map +1 -1
  62. package/lib/components/CasePreview/CasePreview.js +83 -115
  63. package/lib/components/CasePreview/CasePreview.js.map +1 -1
  64. package/lib/components/CaseView/CaseHeader/CaseHeader.d.ts.map +1 -1
  65. package/lib/components/CaseView/CaseHeader/CaseHeader.js +97 -27
  66. package/lib/components/CaseView/CaseHeader/CaseHeader.js.map +1 -1
  67. package/lib/components/CaseView/CaseHeader/Summary.d.ts.map +1 -1
  68. package/lib/components/CaseView/CaseHeader/Summary.js +8 -1
  69. package/lib/components/CaseView/CaseHeader/Summary.js.map +1 -1
  70. package/lib/components/CaseView/CaseSummaryFields.js +1 -1
  71. package/lib/components/CaseView/CaseSummaryFields.js.map +1 -1
  72. package/lib/components/CaseView/CaseView.d.ts.map +1 -1
  73. package/lib/components/CaseView/CaseView.js +49 -20
  74. package/lib/components/CaseView/CaseView.js.map +1 -1
  75. package/lib/components/CaseView/CaseView.styles.d.ts +83 -47
  76. package/lib/components/CaseView/CaseView.styles.d.ts.map +1 -1
  77. package/lib/components/CaseView/CaseView.styles.js +329 -122
  78. package/lib/components/CaseView/CaseView.styles.js.map +1 -1
  79. package/lib/components/CaseView/CaseView.types.d.ts +24 -8
  80. package/lib/components/CaseView/CaseView.types.d.ts.map +1 -1
  81. package/lib/components/CaseView/CaseView.types.js.map +1 -1
  82. package/lib/components/CaseView/UtilitiesSummary.d.ts +1 -1
  83. package/lib/components/CaseView/UtilitiesSummary.d.ts.map +1 -1
  84. package/lib/components/CaseView/UtilitiesSummary.js +14 -4
  85. package/lib/components/CaseView/UtilitiesSummary.js.map +1 -1
  86. package/lib/components/CaseView/UtilitySummaryItemDialog.d.ts.map +1 -1
  87. package/lib/components/CaseView/UtilitySummaryItemDialog.js +10 -4
  88. package/lib/components/CaseView/UtilitySummaryItemDialog.js.map +1 -1
  89. package/lib/components/ConfigurableLayout/LayoutCell.d.ts.map +1 -1
  90. package/lib/components/ConfigurableLayout/LayoutCell.js +25 -25
  91. package/lib/components/ConfigurableLayout/LayoutCell.js.map +1 -1
  92. package/lib/components/Confirmation/Confirmation.d.ts +10 -0
  93. package/lib/components/Confirmation/Confirmation.d.ts.map +1 -1
  94. package/lib/components/Confirmation/Confirmation.js +2 -2
  95. package/lib/components/Confirmation/Confirmation.js.map +1 -1
  96. package/lib/components/Confirmation/index.d.ts +1 -1
  97. package/lib/components/Confirmation/index.d.ts.map +1 -1
  98. package/lib/components/Confirmation/index.js.map +1 -1
  99. package/lib/components/Details/Details.d.ts +3 -2
  100. package/lib/components/Details/Details.d.ts.map +1 -1
  101. package/lib/components/Details/Details.js +6 -5
  102. package/lib/components/Details/Details.js.map +1 -1
  103. package/lib/components/Details/Details.styles.d.ts +17 -15
  104. package/lib/components/Details/Details.styles.d.ts.map +1 -1
  105. package/lib/components/Details/Details.styles.js +28 -15
  106. package/lib/components/Details/Details.styles.js.map +1 -1
  107. package/lib/components/Details/Details.test-ids.d.ts +1 -1
  108. package/lib/components/Details/Details.test-ids.d.ts.map +1 -1
  109. package/lib/components/Details/Details.test-ids.js +2 -1
  110. package/lib/components/Details/Details.test-ids.js.map +1 -1
  111. package/lib/components/Details/DetailsList.d.ts.map +1 -1
  112. package/lib/components/Details/DetailsList.js +1 -5
  113. package/lib/components/Details/DetailsList.js.map +1 -1
  114. package/lib/components/GenAICoach/ActiveCases.d.ts +5 -0
  115. package/lib/components/GenAICoach/ActiveCases.d.ts.map +1 -0
  116. package/lib/components/GenAICoach/ActiveCases.js +50 -0
  117. package/lib/components/GenAICoach/ActiveCases.js.map +1 -0
  118. package/lib/components/GenAICoach/CaseWorkflow.d.ts +5 -0
  119. package/lib/components/GenAICoach/CaseWorkflow.d.ts.map +1 -0
  120. package/lib/components/GenAICoach/CaseWorkflow.js +111 -0
  121. package/lib/components/GenAICoach/CaseWorkflow.js.map +1 -0
  122. package/lib/components/GenAICoach/ConversationHistory.d.ts.map +1 -1
  123. package/lib/components/GenAICoach/ConversationHistory.js +11 -13
  124. package/lib/components/GenAICoach/ConversationHistory.js.map +1 -1
  125. package/lib/components/GenAICoach/GenAICoach.d.ts +4 -3
  126. package/lib/components/GenAICoach/GenAICoach.d.ts.map +1 -1
  127. package/lib/components/GenAICoach/GenAICoach.js +721 -141
  128. package/lib/components/GenAICoach/GenAICoach.js.map +1 -1
  129. package/lib/components/GenAICoach/GenAICoach.styles.d.ts +1639 -35
  130. package/lib/components/GenAICoach/GenAICoach.styles.d.ts.map +1 -1
  131. package/lib/components/GenAICoach/GenAICoach.styles.js +867 -82
  132. package/lib/components/GenAICoach/GenAICoach.styles.js.map +1 -1
  133. package/lib/components/GenAICoach/GenAICoach.test-ids.d.ts +3 -2
  134. package/lib/components/GenAICoach/GenAICoach.test-ids.d.ts.map +1 -1
  135. package/lib/components/GenAICoach/GenAICoach.test-ids.js +6 -1
  136. package/lib/components/GenAICoach/GenAICoach.test-ids.js.map +1 -1
  137. package/lib/components/GenAICoach/GenAICoach.types.d.ts +215 -9
  138. package/lib/components/GenAICoach/GenAICoach.types.d.ts.map +1 -1
  139. package/lib/components/GenAICoach/GenAICoach.types.js.map +1 -1
  140. package/lib/components/GenAICoach/GenAIMessage.d.ts +6 -0
  141. package/lib/components/GenAICoach/GenAIMessage.d.ts.map +1 -1
  142. package/lib/components/GenAICoach/GenAIMessage.js +101 -52
  143. package/lib/components/GenAICoach/GenAIMessage.js.map +1 -1
  144. package/lib/components/GenAICoach/GenAIMessageFeedback.d.ts +4 -0
  145. package/lib/components/GenAICoach/GenAIMessageFeedback.d.ts.map +1 -0
  146. package/lib/components/GenAICoach/GenAIMessageFeedback.js +95 -0
  147. package/lib/components/GenAICoach/GenAIMessageFeedback.js.map +1 -0
  148. package/lib/components/GenAICoach/GenAIMessageProgress.d.ts +4 -1
  149. package/lib/components/GenAICoach/GenAIMessageProgress.d.ts.map +1 -1
  150. package/lib/components/GenAICoach/GenAIMessageProgress.js +11 -35
  151. package/lib/components/GenAICoach/GenAIMessageProgress.js.map +1 -1
  152. package/lib/components/GenAICoach/InitialSuggestedMessage.d.ts.map +1 -1
  153. package/lib/components/GenAICoach/InitialSuggestedMessage.js +5 -6
  154. package/lib/components/GenAICoach/InitialSuggestedMessage.js.map +1 -1
  155. package/lib/components/GenAICoach/PortalAgentSplitView.d.ts +6 -0
  156. package/lib/components/GenAICoach/PortalAgentSplitView.d.ts.map +1 -0
  157. package/lib/components/GenAICoach/PortalAgentSplitView.js +75 -0
  158. package/lib/components/GenAICoach/PortalAgentSplitView.js.map +1 -0
  159. package/lib/components/GenAICoach/Questionnaire.d.ts +4 -0
  160. package/lib/components/GenAICoach/Questionnaire.d.ts.map +1 -0
  161. package/lib/components/GenAICoach/Questionnaire.js +155 -0
  162. package/lib/components/GenAICoach/Questionnaire.js.map +1 -0
  163. package/lib/components/GenAICoach/ToolCandidates.d.ts +4 -0
  164. package/lib/components/GenAICoach/ToolCandidates.d.ts.map +1 -0
  165. package/lib/components/GenAICoach/ToolCandidates.js +19 -0
  166. package/lib/components/GenAICoach/ToolCandidates.js.map +1 -0
  167. package/lib/components/GenAICoach/ToolConfirmationMessage.d.ts +4 -0
  168. package/lib/components/GenAICoach/ToolConfirmationMessage.d.ts.map +1 -0
  169. package/lib/components/GenAICoach/ToolConfirmationMessage.js +20 -0
  170. package/lib/components/GenAICoach/ToolConfirmationMessage.js.map +1 -0
  171. package/lib/components/GenAICoach/ToolDetails.d.ts +5 -0
  172. package/lib/components/GenAICoach/ToolDetails.d.ts.map +1 -0
  173. package/lib/components/GenAICoach/ToolDetails.js +99 -0
  174. package/lib/components/GenAICoach/ToolDetails.js.map +1 -0
  175. package/lib/components/GenAICoach/index.d.ts +5 -3
  176. package/lib/components/GenAICoach/index.d.ts.map +1 -1
  177. package/lib/components/GenAICoach/index.js +4 -2
  178. package/lib/components/GenAICoach/index.js.map +1 -1
  179. package/lib/components/HierarchicalAssignments/Assignments.styles.d.ts +55 -34
  180. package/lib/components/HierarchicalAssignments/Assignments.styles.d.ts.map +1 -1
  181. package/lib/components/HierarchicalAssignments/Assignments.styles.js +41 -11
  182. package/lib/components/HierarchicalAssignments/Assignments.styles.js.map +1 -1
  183. package/lib/components/HierarchicalAssignments/HierarchicalAssignments.types.d.ts +2 -0
  184. package/lib/components/HierarchicalAssignments/HierarchicalAssignments.types.d.ts.map +1 -1
  185. package/lib/components/HierarchicalAssignments/HierarchicalAssignments.types.js.map +1 -1
  186. package/lib/components/HierarchicalAssignments/nodeItems/AssignmentItem.d.ts +1 -1
  187. package/lib/components/HierarchicalAssignments/nodeItems/AssignmentItem.d.ts.map +1 -1
  188. package/lib/components/HierarchicalAssignments/nodeItems/AssignmentItem.js +7 -4
  189. package/lib/components/HierarchicalAssignments/nodeItems/AssignmentItem.js.map +1 -1
  190. package/lib/components/HierarchicalAssignments/nodeItems/CaseDetail.d.ts.map +1 -1
  191. package/lib/components/HierarchicalAssignments/nodeItems/CaseDetail.js +2 -2
  192. package/lib/components/HierarchicalAssignments/nodeItems/CaseDetail.js.map +1 -1
  193. package/lib/components/IntelligentGuidance/IntelligentGuidance.d.ts.map +1 -1
  194. package/lib/components/IntelligentGuidance/IntelligentGuidance.js +1 -1
  195. package/lib/components/IntelligentGuidance/IntelligentGuidance.js.map +1 -1
  196. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.d.ts +9 -5
  197. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.d.ts.map +1 -1
  198. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js +17 -3
  199. package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js.map +1 -1
  200. package/lib/components/InteractionNotification/InteractionNotification.d.ts +31 -8
  201. package/lib/components/InteractionNotification/InteractionNotification.d.ts.map +1 -1
  202. package/lib/components/InteractionNotification/InteractionNotification.js +17 -10
  203. package/lib/components/InteractionNotification/InteractionNotification.js.map +1 -1
  204. package/lib/components/Predictions/Predictions.d.ts.map +1 -1
  205. package/lib/components/Predictions/Predictions.js +11 -2
  206. package/lib/components/Predictions/Predictions.js.map +1 -1
  207. package/lib/components/SearchResults/ActiveFilter.d.ts +1 -1
  208. package/lib/components/SearchResults/ActiveFilter.d.ts.map +1 -1
  209. package/lib/components/SearchResults/Filter.d.ts.map +1 -1
  210. package/lib/components/SearchResults/Filter.js +1 -1
  211. package/lib/components/SearchResults/Filter.js.map +1 -1
  212. package/lib/components/SearchResults/SearchResult.d.ts.map +1 -1
  213. package/lib/components/SearchResults/SearchResult.js +14 -6
  214. package/lib/components/SearchResults/SearchResult.js.map +1 -1
  215. package/lib/components/SearchResults/SearchResults.d.ts.map +1 -1
  216. package/lib/components/SearchResults/SearchResults.js +18 -3
  217. package/lib/components/SearchResults/SearchResults.js.map +1 -1
  218. package/lib/components/SearchResults/SearchResults.styles.d.ts +12 -10
  219. package/lib/components/SearchResults/SearchResults.styles.d.ts.map +1 -1
  220. package/lib/components/Shortcuts/Shortcuts.d.ts +7 -0
  221. package/lib/components/Shortcuts/Shortcuts.d.ts.map +1 -0
  222. package/lib/components/Shortcuts/Shortcuts.js +47 -0
  223. package/lib/components/Shortcuts/Shortcuts.js.map +1 -0
  224. package/lib/components/Shortcuts/Shortcuts.styles.d.ts +22 -0
  225. package/lib/components/Shortcuts/Shortcuts.styles.d.ts.map +1 -0
  226. package/lib/components/Shortcuts/Shortcuts.styles.js +114 -0
  227. package/lib/components/Shortcuts/Shortcuts.styles.js.map +1 -0
  228. package/lib/components/Shortcuts/Shortcuts.test-ids.d.ts +2 -0
  229. package/lib/components/Shortcuts/Shortcuts.test-ids.d.ts.map +1 -0
  230. package/lib/components/Shortcuts/Shortcuts.test-ids.js +8 -0
  231. package/lib/components/Shortcuts/Shortcuts.test-ids.js.map +1 -0
  232. package/lib/components/Shortcuts/Shortcuts.types.d.ts +64 -0
  233. package/lib/components/Shortcuts/Shortcuts.types.d.ts.map +1 -0
  234. package/lib/components/Shortcuts/Shortcuts.types.js +2 -0
  235. package/lib/components/Shortcuts/Shortcuts.types.js.map +1 -0
  236. package/lib/components/Shortcuts/index.d.ts +3 -0
  237. package/lib/components/Shortcuts/index.d.ts.map +1 -0
  238. package/lib/components/Shortcuts/index.js +2 -0
  239. package/lib/components/Shortcuts/index.js.map +1 -0
  240. package/lib/components/Stages/Stages.d.ts.map +1 -1
  241. package/lib/components/Stages/Stages.js +37 -12
  242. package/lib/components/Stages/Stages.js.map +1 -1
  243. package/lib/components/Stages/Stages.styles.d.ts +22 -15
  244. package/lib/components/Stages/Stages.styles.d.ts.map +1 -1
  245. package/lib/components/Stages/Stages.styles.js +285 -119
  246. package/lib/components/Stages/Stages.styles.js.map +1 -1
  247. package/lib/components/Stages/Stages.types.d.ts +5 -0
  248. package/lib/components/Stages/Stages.types.d.ts.map +1 -1
  249. package/lib/components/Stages/Stages.types.js.map +1 -1
  250. package/lib/components/Stakeholders/Stakeholders.d.ts.map +1 -1
  251. package/lib/components/Stakeholders/Stakeholders.js +109 -145
  252. package/lib/components/Stakeholders/Stakeholders.js.map +1 -1
  253. package/lib/components/Tags/Tags.d.ts +2 -2
  254. package/lib/components/Tags/Tags.d.ts.map +1 -1
  255. package/lib/components/Tags/Tags.js +12 -2
  256. package/lib/components/Tags/Tags.js.map +1 -1
  257. package/lib/components/Tasks/TaskList.d.ts +10 -3
  258. package/lib/components/Tasks/TaskList.d.ts.map +1 -1
  259. package/lib/components/Tasks/TaskList.js +59 -5
  260. package/lib/components/Tasks/TaskList.js.map +1 -1
  261. package/lib/components/Tasks/Tasks.d.ts +10 -3
  262. package/lib/components/Tasks/Tasks.d.ts.map +1 -1
  263. package/lib/components/Tasks/Tasks.js +29 -5
  264. package/lib/components/Tasks/Tasks.js.map +1 -1
  265. package/lib/components/UtilitiesLayout/UtilitiesLayout.d.ts.map +1 -1
  266. package/lib/components/UtilitiesLayout/UtilitiesLayout.js +3 -2
  267. package/lib/components/UtilitiesLayout/UtilitiesLayout.js.map +1 -1
  268. package/lib/components/UtilitiesLayout/UtilitiesLayout.styles.d.ts +2 -2
  269. package/lib/components/UtilitiesLayout/UtilitiesLayout.styles.d.ts.map +1 -1
  270. package/lib/components/UtilitiesLayout/UtilitiesLayout.styles.js +3 -2
  271. package/lib/components/UtilitiesLayout/UtilitiesLayout.styles.js.map +1 -1
  272. package/lib/index.d.ts +2 -0
  273. package/lib/index.d.ts.map +1 -1
  274. package/lib/index.js +2 -0
  275. package/lib/index.js.map +1 -1
  276. package/package.json +6 -7
@@ -1 +1 @@
1
- {"version":3,"file":"InitialSuggestedMessage.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/InitialSuggestedMessage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,uBAAuB,GAC3B,SAAS,cAAc,CAAC,EACtB,EAAE,EACF,OAAO,EACP,MAAM,EACN,MAAM,EACwC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAE/B,OAAO,CACL,MAAC,IAAI,IACH,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EACjC,EAAE,EAAE,sBAAsB,EAC1B,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1B,CAAC,EACD,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE;YAC9B,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACtB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,iBACY,OAAO,CAAC,IAAI,aAEzB,KAAC,WAAW,cACV,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAG,OAAO,GAAQ,GAC/C,EACd,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YACvC,KAAC,IAAI,IAAC,IAAI,EAAE,SAAS,GAAG,EAAE,GAAI,GACzB,IACF,CACR,CAAC;AACJ,CAAC,CAAC;AAEJ,eAAe,uBAAuB,CAAC","sourcesContent":["import type { FunctionComponent, PropsWithoutRef } from 'react';\n\nimport { Card, CardContent, Flex, Icon, useDirection, useTestIds } from '@pega/cosmos-react-core';\n\nimport type { InitialSuggestedMessageProps } from './GenAICoach.types';\nimport { StyledSuggestedMessage } from './GenAICoach.styles';\nimport { getGenAICoachTestIds } from './GenAICoach.test-ids';\n\nconst InitialSuggestedMessage: FunctionComponent<InitialSuggestedMessageProps> =\n function SuggestionCard({\n id,\n message,\n testId,\n onSend\n }: PropsWithoutRef<InitialSuggestedMessageProps>) {\n const testIds = useTestIds(testId, getGenAICoachTestIds);\n const { end } = useDirection();\n\n return (\n <Card\n container={{ justify: 'between' }}\n as={StyledSuggestedMessage}\n onClick={() => {\n onSend({ id, message });\n }}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onSend({ id, message });\n }\n }}\n data-testid={testIds.root}\n >\n <CardContent>\n <Flex container={{ alignItems: 'center' }}>{message}</Flex>\n </CardContent>\n <Flex container={{ alignItems: 'center' }}>\n <Icon name={`arrow-${end}`} />\n </Flex>\n </Card>\n );\n };\n\nexport default InitialSuggestedMessage;\n"]}
1
+ {"version":3,"file":"InitialSuggestedMessage.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/InitialSuggestedMessage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE3F,MAAM,uBAAuB,GAC3B,SAAS,cAAc,CAAC,EACtB,EAAE,EACF,OAAO,EACP,MAAM,EACN,MAAM,EACwC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAEzD,OAAO,CACL,KAAC,0BAA0B,IACzB,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1B,CAAC,EACD,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE;YAC9B,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACtB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,iBACY,OAAO,CAAC,IAAI,YAEzB,KAAC,wBAAwB,cAAE,OAAO,GAA4B,GACnC,CAC9B,CAAC;AACJ,CAAC,CAAC;AAEJ,eAAe,uBAAuB,CAAC","sourcesContent":["import type { FunctionComponent, PropsWithoutRef } from 'react';\n\nimport { useTestIds } from '@pega/cosmos-react-core';\n\nimport type { InitialSuggestedMessageProps } from './GenAICoach.types';\nimport { getGenAICoachTestIds } from './GenAICoach.test-ids';\nimport { StyledInitialMessageButton, StyledInitialMessageText } from './GenAICoach.styles';\n\nconst InitialSuggestedMessage: FunctionComponent<InitialSuggestedMessageProps> =\n function SuggestionCard({\n id,\n message,\n testId,\n onSend\n }: PropsWithoutRef<InitialSuggestedMessageProps>) {\n const testIds = useTestIds(testId, getGenAICoachTestIds);\n\n return (\n <StyledInitialMessageButton\n onClick={() => {\n onSend({ id, message });\n }}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onSend({ id, message });\n }\n }}\n data-testid={testIds.root}\n >\n <StyledInitialMessageText>{message}</StyledInitialMessageText>\n </StyledInitialMessageButton>\n );\n };\n\nexport default InitialSuggestedMessage;\n"]}
@@ -0,0 +1,6 @@
1
+ import type { PortalAgentSplitViewProps } from './GenAICoach.types';
2
+ declare const _default: (({ testId, children, pagePanel, showAgentPanel, initialWidth, onResizeEnd }: PortalAgentSplitViewProps) => import("react/jsx-runtime").JSX.Element) & {
3
+ getTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly ["split-container", "main-region"]>;
4
+ };
5
+ export default _default;
6
+ //# sourceMappingURL=PortalAgentSplitView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortalAgentSplitView.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/PortalAgentSplitView.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;sGASjE,yBAAyB;;;AA4I5B,wBAAiF"}
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef } from 'react';
3
+ import { remToPx, stripUnit } from 'polished';
4
+ import { useDirection, useTestIds, ResizeHandle, withTestIds, useI18n } from '@pega/cosmos-react-core';
5
+ import { portalAgentMinWidth, resizeDrawerKeyboardStep } from '@pega/cosmos-react-core/lib/styles/constants';
6
+ import { StyledPortalAgentRegion, StyledPortalMainRegion, StyledPortalSeparator, StyledPortalSplitContainer } from './GenAICoach.styles';
7
+ import { getPortalAgentSplitViewTestIds } from './GenAICoach.test-ids';
8
+ const PortalAgentSplitView = ({ testId, children, pagePanel, showAgentPanel, initialWidth, onResizeEnd }) => {
9
+ const t = useI18n();
10
+ const { ltr } = useDirection();
11
+ const testIds = useTestIds(testId, getPortalAgentSplitViewTestIds);
12
+ const regionMinWidthPx = Number(stripUnit(remToPx(portalAgentMinWidth)));
13
+ const splitContainerRef = useRef(null);
14
+ const agentPanelRef = useRef(null);
15
+ useEffect(() => {
16
+ const container = splitContainerRef.current;
17
+ if (!container || !initialWidth)
18
+ return;
19
+ container.style.setProperty('--region-a-width', initialWidth);
20
+ }, [initialWidth]);
21
+ const handleRegionResize = useCallback((e) => {
22
+ const container = splitContainerRef.current;
23
+ const regionAEl = agentPanelRef.current;
24
+ if (!container || !regionAEl)
25
+ return;
26
+ const ownerWindow = container.ownerDocument.defaultView;
27
+ if (!ownerWindow)
28
+ return;
29
+ const startX = e.clientX;
30
+ const startWidth = regionAEl.getBoundingClientRect().width;
31
+ const ac = new AbortController();
32
+ ownerWindow.addEventListener('mousemove', moveEvent => {
33
+ const containerWidth = container.getBoundingClientRect().width;
34
+ const maxPx = containerWidth - regionMinWidthPx;
35
+ const delta = ltr ? moveEvent.clientX - startX : startX - moveEvent.clientX;
36
+ const newWidth = Math.max(regionMinWidthPx, Math.min(maxPx, startWidth + delta));
37
+ container.style.setProperty('--region-a-width', `${((newWidth / containerWidth) * 100).toFixed(4)}%`);
38
+ }, { passive: true, signal: ac.signal });
39
+ ownerWindow.addEventListener('mouseup', () => {
40
+ const finalWidth = container.style.getPropertyValue('--region-a-width');
41
+ if (finalWidth) {
42
+ onResizeEnd?.(finalWidth);
43
+ }
44
+ ac.abort();
45
+ }, { once: true });
46
+ }, [ltr, onResizeEnd, regionMinWidthPx]);
47
+ const handleRegionKeyboardResize = useCallback((e, grabbed) => {
48
+ const container = splitContainerRef.current;
49
+ if (!container)
50
+ return;
51
+ if (e.code === 'Space' && grabbed) {
52
+ const finalWidth = container.style.getPropertyValue('--region-a-width');
53
+ if (finalWidth) {
54
+ onResizeEnd?.(finalWidth);
55
+ }
56
+ return;
57
+ }
58
+ if (!grabbed || !agentPanelRef.current)
59
+ return;
60
+ if (e.code !== 'ArrowLeft' && e.code !== 'ArrowRight')
61
+ return;
62
+ e.preventDefault();
63
+ const containerWidth = container.getBoundingClientRect().width;
64
+ const maxPx = containerWidth - regionMinWidthPx;
65
+ const resizeStep = containerWidth * resizeDrawerKeyboardStep;
66
+ const currentWidth = agentPanelRef.current.getBoundingClientRect().width;
67
+ const direction = (e.code === 'ArrowRight' ? 1 : -1) * (ltr ? 1 : -1);
68
+ const newWidth = Math.max(regionMinWidthPx, Math.min(maxPx, currentWidth + direction * resizeStep));
69
+ const nextWidth = `${((newWidth / containerWidth) * 100).toFixed(4)}%`;
70
+ container.style.setProperty('--region-a-width', nextWidth);
71
+ }, [ltr, onResizeEnd, regionMinWidthPx, resizeDrawerKeyboardStep]);
72
+ return (_jsxs(StyledPortalSplitContainer, { ref: splitContainerRef, "data-testid": testIds.splitContainer, children: [_jsx(StyledPortalAgentRegion, { ref: agentPanelRef, agentVisible: showAgentPanel, mainVisible: pagePanel.visible, "aria-hidden": !showAgentPanel, inert: !showAgentPanel ? '' : undefined, children: children }), showAgentPanel && pagePanel.visible && (_jsx(StyledPortalSeparator, { children: _jsx(ResizeHandle, { onMouseDown: handleRegionResize, onKeyDown: handleRegionKeyboardResize, contextualLabel: t('resize_noun', [t('panel')]) }) })), _jsx(StyledPortalMainRegion, { "data-testid": testIds.mainRegion, "aria-hidden": !pagePanel.visible, inert: !pagePanel.visible ? '' : undefined, children: pagePanel.content })] }));
73
+ };
74
+ export default withTestIds(PortalAgentSplitView, getPortalAgentSplitViewTestIds);
75
+ //# sourceMappingURL=PortalAgentSplitView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortalAgentSplitView.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/PortalAgentSplitView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport type { KeyboardEvent, MouseEvent } from 'react';\nimport { remToPx, stripUnit } from 'polished';\n\nimport {\n useDirection,\n useTestIds,\n ResizeHandle,\n withTestIds,\n useI18n\n} from '@pega/cosmos-react-core';\nimport {\n portalAgentMinWidth,\n resizeDrawerKeyboardStep\n} from '@pega/cosmos-react-core/lib/styles/constants';\n\nimport {\n StyledPortalAgentRegion,\n StyledPortalMainRegion,\n StyledPortalSeparator,\n StyledPortalSplitContainer\n} from './GenAICoach.styles';\nimport { getPortalAgentSplitViewTestIds } from './GenAICoach.test-ids';\nimport type { PortalAgentSplitViewProps } from './GenAICoach.types';\n\nconst PortalAgentSplitView = ({\n testId,\n children,\n pagePanel,\n showAgentPanel,\n initialWidth,\n onResizeEnd\n}: PortalAgentSplitViewProps) => {\n const t = useI18n();\n const { ltr } = useDirection();\n const testIds = useTestIds(testId, getPortalAgentSplitViewTestIds);\n\n const regionMinWidthPx = Number(stripUnit(remToPx(portalAgentMinWidth)));\n\n const splitContainerRef = useRef<HTMLDivElement>(null);\n const agentPanelRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const container = splitContainerRef.current;\n\n if (!container || !initialWidth) return;\n\n container.style.setProperty('--region-a-width', initialWidth);\n }, [initialWidth]);\n\n const handleRegionResize = useCallback(\n (e: MouseEvent) => {\n const container = splitContainerRef.current;\n const regionAEl = agentPanelRef.current;\n\n if (!container || !regionAEl) return;\n\n const ownerWindow = container.ownerDocument.defaultView;\n\n if (!ownerWindow) return;\n\n const startX = e.clientX;\n const startWidth = regionAEl.getBoundingClientRect().width;\n const ac = new AbortController();\n\n ownerWindow.addEventListener(\n 'mousemove',\n moveEvent => {\n const containerWidth = container.getBoundingClientRect().width;\n const maxPx = containerWidth - regionMinWidthPx;\n\n const delta = ltr ? moveEvent.clientX - startX : startX - moveEvent.clientX;\n const newWidth = Math.max(regionMinWidthPx, Math.min(maxPx, startWidth + delta));\n\n container.style.setProperty(\n '--region-a-width',\n `${((newWidth / containerWidth) * 100).toFixed(4)}%`\n );\n },\n { passive: true, signal: ac.signal }\n );\n\n ownerWindow.addEventListener(\n 'mouseup',\n () => {\n const finalWidth = container.style.getPropertyValue('--region-a-width');\n\n if (finalWidth) {\n onResizeEnd?.(finalWidth);\n }\n\n ac.abort();\n },\n { once: true }\n );\n },\n [ltr, onResizeEnd, regionMinWidthPx]\n );\n\n const handleRegionKeyboardResize = useCallback(\n (e: KeyboardEvent, grabbed: boolean) => {\n const container = splitContainerRef.current;\n if (!container) return;\n\n if (e.code === 'Space' && grabbed) {\n const finalWidth = container.style.getPropertyValue('--region-a-width');\n\n if (finalWidth) {\n onResizeEnd?.(finalWidth);\n }\n\n return;\n }\n\n if (!grabbed || !agentPanelRef.current) return;\n\n if (e.code !== 'ArrowLeft' && e.code !== 'ArrowRight') return;\n\n e.preventDefault();\n\n const containerWidth = container.getBoundingClientRect().width;\n const maxPx = containerWidth - regionMinWidthPx;\n\n const resizeStep = containerWidth * resizeDrawerKeyboardStep;\n const currentWidth = agentPanelRef.current.getBoundingClientRect().width;\n const direction = (e.code === 'ArrowRight' ? 1 : -1) * (ltr ? 1 : -1);\n\n const newWidth = Math.max(\n regionMinWidthPx,\n Math.min(maxPx, currentWidth + direction * resizeStep)\n );\n\n const nextWidth = `${((newWidth / containerWidth) * 100).toFixed(4)}%`;\n\n container.style.setProperty('--region-a-width', nextWidth);\n },\n [ltr, onResizeEnd, regionMinWidthPx, resizeDrawerKeyboardStep]\n );\n\n return (\n <StyledPortalSplitContainer ref={splitContainerRef} data-testid={testIds.splitContainer}>\n <StyledPortalAgentRegion\n ref={agentPanelRef}\n agentVisible={showAgentPanel}\n mainVisible={pagePanel.visible}\n aria-hidden={!showAgentPanel}\n inert={!showAgentPanel ? '' : undefined}\n >\n {children}\n </StyledPortalAgentRegion>\n\n {showAgentPanel && pagePanel.visible && (\n <StyledPortalSeparator>\n <ResizeHandle\n onMouseDown={handleRegionResize}\n onKeyDown={handleRegionKeyboardResize}\n contextualLabel={t('resize_noun', [t('panel')])}\n />\n </StyledPortalSeparator>\n )}\n\n <StyledPortalMainRegion\n data-testid={testIds.mainRegion}\n aria-hidden={!pagePanel.visible}\n inert={!pagePanel.visible ? '' : undefined}\n >\n {pagePanel.content}\n </StyledPortalMainRegion>\n </StyledPortalSplitContainer>\n );\n};\n\nexport default withTestIds(PortalAgentSplitView, getPortalAgentSplitViewTestIds);\n"]}
@@ -0,0 +1,4 @@
1
+ import type { QuestionnaireProps } from './GenAICoach.types';
2
+ declare const Questionnaire: ({ data, onChange, onCancel }: QuestionnaireProps) => import("react/jsx-runtime").JSX.Element | null;
3
+ export default Questionnaire;
4
+ //# sourceMappingURL=Questionnaire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Questionnaire.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/Questionnaire.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAKV,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAiN5B,QAAA,MAAM,aAAa,GAAI,8BAA8B,kBAAkB,mDA4FtE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,155 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useMemo, useState } from 'react';
3
+ import { Button, Card, CardContent, CardFooter, CardHeader, Checkbox, CheckboxGroup, ComboBox, Flex, Icon, RadioButton, RadioButtonGroup, Text, useI18n, registerIcon } from '@pega/cosmos-react-core';
4
+ import * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';
5
+ import { StyledComboBoxWrapper, StyledQuestionBlock, StyledQuestionnaireCard } from './GenAICoach.styles';
6
+ registerIcon(timesIcon);
7
+ const getLabel = (option) => option.displayLabel ?? option.label;
8
+ const createEmptyAnswer = (question) => ({
9
+ value: [],
10
+ questionText: question.questionText
11
+ });
12
+ const buildInitialAnswers = (questions) => Object.fromEntries(questions.map(q => [q.field, createEmptyAnswer(q)]));
13
+ const splitOptions = (optionItems, maxInlineOptions) => {
14
+ if (optionItems.length <= maxInlineOptions) {
15
+ return { inlineOptions: optionItems, overflowOptions: [] };
16
+ }
17
+ return {
18
+ inlineOptions: optionItems.slice(0, maxInlineOptions - 1),
19
+ overflowOptions: optionItems.slice(maxInlineOptions - 1)
20
+ };
21
+ };
22
+ const QuestionItem = ({ question, answer, onChange }) => {
23
+ const t = useI18n();
24
+ const isSingleSelect = question.type === 'single';
25
+ const maxInlineOptions = 5;
26
+ const { inlineOptions, overflowOptions } = splitOptions(question.optionItems, maxInlineOptions);
27
+ const hasOverflow = overflowOptions.length > 0;
28
+ const [selectedOverflowKey, setSelectedOverflowKey] = useState('');
29
+ const [isOverflowActive, setIsOverflowActive] = useState(false);
30
+ const [searchTerm, setSearchTerm] = useState('');
31
+ const overflowKeySet = useMemo(() => new Set(overflowOptions.map(o => o.key)), []);
32
+ const overflowOptionsByKey = useMemo(() => new Map(overflowOptions.map(o => [o.key, o])), []);
33
+ const isSelected = (key) => answer.value.includes(key);
34
+ const clearOverflowState = () => {
35
+ setSelectedOverflowKey('');
36
+ setSearchTerm('');
37
+ setIsOverflowActive(false);
38
+ };
39
+ const handleInlineSelect = (key) => {
40
+ clearOverflowState();
41
+ onChange(question.field, key, true);
42
+ };
43
+ const overflowMenuItems = useMemo(() => {
44
+ const search = searchTerm.toLowerCase();
45
+ return overflowOptions
46
+ .map(opt => ({
47
+ id: opt.key,
48
+ primary: getLabel(opt),
49
+ selected: isSelected(opt.key)
50
+ }))
51
+ .filter(item => !search || item.primary.toLowerCase().includes(search));
52
+ }, [searchTerm, answer]);
53
+ const overflowSelection = useMemo(() => {
54
+ if (isSingleSelect) {
55
+ if (!isOverflowActive || !selectedOverflowKey)
56
+ return undefined;
57
+ const option = overflowOptionsByKey.get(selectedOverflowKey);
58
+ const displayText = option ? getLabel(option) : selectedOverflowKey;
59
+ return { items: { id: selectedOverflowKey, text: displayText } };
60
+ }
61
+ const selectedOverflowValues = answer.value.filter(v => overflowKeySet.has(v));
62
+ if (selectedOverflowValues.length === 0)
63
+ return undefined;
64
+ return {
65
+ items: selectedOverflowValues.map(key => {
66
+ const option = overflowOptionsByKey.get(key);
67
+ return { id: key, text: option ? getLabel(option) : key };
68
+ }),
69
+ onRemove: (id) => onChange(question.field, id, false)
70
+ };
71
+ }, [
72
+ isSingleSelect,
73
+ isOverflowActive,
74
+ selectedOverflowKey,
75
+ answer,
76
+ overflowKeySet,
77
+ overflowOptionsByKey,
78
+ question.field,
79
+ onChange
80
+ ]);
81
+ const handleOverflowSelect = useCallback((id) => {
82
+ if (isSingleSelect) {
83
+ const option = overflowOptionsByKey.get(id);
84
+ if (option) {
85
+ setSelectedOverflowKey(option.key);
86
+ setIsOverflowActive(true);
87
+ setSearchTerm('');
88
+ onChange(question.field, option.key, true);
89
+ }
90
+ }
91
+ else {
92
+ onChange(question.field, id, !isSelected(id));
93
+ }
94
+ }, [isSingleSelect, answer, question.field, onChange, overflowOptionsByKey]);
95
+ const activateOverflow = () => {
96
+ setIsOverflowActive(true);
97
+ };
98
+ const deselectAllOverflow = () => {
99
+ answer.value
100
+ .filter(v => overflowKeySet.has(v))
101
+ .forEach(key => onChange(question.field, key, false));
102
+ };
103
+ const otherLabel = t('other');
104
+ const overflowComboBox = hasOverflow ? (_jsx(StyledComboBoxWrapper, { children: _jsx(ComboBox, { labelHidden: true, label: otherLabel, placeholder: otherLabel, value: searchTerm, selected: overflowSelection, onChange: (e) => setSearchTerm(e.target.value), onBlur: () => setSearchTerm(''), mode: isSingleSelect ? undefined : 'multi-select', menu: { items: overflowMenuItems, onItemClick: handleOverflowSelect } }) })) : null;
105
+ const inlineRadioButtons = inlineOptions.map(option => (_jsx(RadioButton, { label: getLabel(option), name: question.field, checked: isSelected(option.key), onChange: () => handleInlineSelect(option.key) }, option.key)));
106
+ const inlineCheckboxes = inlineOptions.map(option => (_jsx(Checkbox, { label: getLabel(option), checked: isSelected(option.key), onChange: e => onChange(question.field, option.key, e.target.checked) }, option.key)));
107
+ return (_jsx(StyledQuestionBlock, { children: isSingleSelect ? (_jsx(RadioButtonGroup, { name: question.field, labelHidden: true, children: overflowComboBox
108
+ ? [
109
+ ...inlineRadioButtons,
110
+ _jsx(RadioButton, { label: overflowComboBox, name: question.field, checked: isOverflowActive, onChange: activateOverflow }, 'overflow')
111
+ ]
112
+ : inlineRadioButtons })) : (_jsx(CheckboxGroup, { labelHidden: true, children: overflowComboBox
113
+ ? [
114
+ ...inlineCheckboxes,
115
+ _jsx(Checkbox, { label: overflowComboBox, checked: answer.value.some(v => overflowKeySet.has(v)), onChange: e => {
116
+ if (!e.target.checked)
117
+ deselectAllOverflow();
118
+ } }, 'overflow')
119
+ ]
120
+ : inlineCheckboxes })) }));
121
+ };
122
+ const Questionnaire = ({ data, onChange, onCancel }) => {
123
+ const t = useI18n();
124
+ const questions = data.questions ?? [];
125
+ const totalSteps = questions.length;
126
+ const [currentStep, setCurrentStep] = useState(0);
127
+ const [answers, setAnswers] = useState(() => buildInitialAnswers(questions));
128
+ const handleChange = useCallback((field, key, selected) => {
129
+ setAnswers(prev => {
130
+ const question = questions.find(q => q.field === field);
131
+ const currentValues = prev[field]?.value ?? [];
132
+ let updatedValues;
133
+ if (question?.type === 'single') {
134
+ updatedValues = selected ? [key] : [];
135
+ }
136
+ else {
137
+ updatedValues = selected ? [...currentValues, key] : currentValues.filter(v => v !== key);
138
+ }
139
+ const nextAnswers = {
140
+ ...prev,
141
+ [field]: { ...prev[field], value: updatedValues }
142
+ };
143
+ onChange(nextAnswers);
144
+ return nextAnswers;
145
+ });
146
+ }, [onChange, questions]);
147
+ if (totalSteps === 0)
148
+ return null;
149
+ const activeQuestion = questions[currentStep];
150
+ const activeAnswer = answers[activeQuestion.field] ?? createEmptyAnswer(activeQuestion);
151
+ const isMultiStep = totalSteps > 1;
152
+ return (_jsxs(Card, { as: StyledQuestionnaireCard, children: [_jsx(CardHeader, { actions: _jsx(Button, { variant: 'simple', icon: true, onClick: onCancel, "aria-label": t('dismiss'), children: _jsx(Icon, { name: 'times' }) }), children: _jsx(Text, { variant: 'h4', children: activeQuestion.questionText }) }), _jsx(CardContent, { children: _jsx(QuestionItem, { question: activeQuestion, answer: activeAnswer, onChange: handleChange }, activeQuestion.field) }), isMultiStep && (_jsx(CardFooter, { justify: 'center', children: _jsxs(Flex, { container: { direction: 'row', alignItems: 'center', gap: 0.5 }, children: [_jsx(Button, { variant: 'simple', icon: true, onClick: () => setCurrentStep(s => s - 1), disabled: currentStep === 0, "aria-label": t('pagination_prev'), children: _jsx(Icon, { name: 'caret-left' }) }), _jsx(Text, { variant: 'secondary', children: t('x_of_y', [currentStep + 1, totalSteps]) }), _jsx(Button, { variant: 'simple', icon: true, onClick: () => setCurrentStep(s => s + 1), disabled: currentStep === totalSteps - 1, "aria-label": t('pagination_next'), children: _jsx(Icon, { name: 'caret-right' }) })] }) }))] }));
153
+ };
154
+ export default Questionnaire;
155
+ //# sourceMappingURL=Questionnaire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Questionnaire.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/Questionnaire.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { ChangeEvent } from 'react';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport {\n Button,\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n Checkbox,\n CheckboxGroup,\n ComboBox,\n Flex,\n Icon,\n RadioButton,\n RadioButtonGroup,\n Text,\n useI18n,\n registerIcon\n} from '@pega/cosmos-react-core';\nimport type { MenuItemProps } from '@pega/cosmos-react-core';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\n\nimport type {\n FormAnswer,\n OptionItem,\n Question,\n QuestionItemProps,\n QuestionnaireProps\n} from './GenAICoach.types';\nimport {\n StyledComboBoxWrapper,\n StyledQuestionBlock,\n StyledQuestionnaireCard\n} from './GenAICoach.styles';\n\nregisterIcon(timesIcon);\n\nconst getLabel = (option: OptionItem): string => option.displayLabel ?? option.label;\n\nconst createEmptyAnswer = (question: Question): FormAnswer => ({\n value: [],\n questionText: question.questionText\n});\n\nconst buildInitialAnswers = (questions: Question[]): Record<string, FormAnswer> =>\n Object.fromEntries(questions.map(q => [q.field, createEmptyAnswer(q)]));\n\nconst splitOptions = (\n optionItems: OptionItem[],\n maxInlineOptions: number\n): { inlineOptions: OptionItem[]; overflowOptions: OptionItem[] } => {\n if (optionItems.length <= maxInlineOptions) {\n return { inlineOptions: optionItems, overflowOptions: [] };\n }\n\n return {\n inlineOptions: optionItems.slice(0, maxInlineOptions - 1),\n overflowOptions: optionItems.slice(maxInlineOptions - 1)\n };\n};\n\nconst QuestionItem = ({ question, answer, onChange }: QuestionItemProps) => {\n const t = useI18n();\n\n const isSingleSelect = question.type === 'single';\n const maxInlineOptions = 5;\n\n const { inlineOptions, overflowOptions } = splitOptions(question.optionItems, maxInlineOptions);\n const hasOverflow = overflowOptions.length > 0;\n\n const [selectedOverflowKey, setSelectedOverflowKey] = useState('');\n const [isOverflowActive, setIsOverflowActive] = useState(false);\n const [searchTerm, setSearchTerm] = useState('');\n\n const overflowKeySet = useMemo(() => new Set(overflowOptions.map(o => o.key)), []);\n const overflowOptionsByKey = useMemo(() => new Map(overflowOptions.map(o => [o.key, o])), []);\n\n const isSelected = (key: string) => answer.value.includes(key);\n\n const clearOverflowState = () => {\n setSelectedOverflowKey('');\n setSearchTerm('');\n setIsOverflowActive(false);\n };\n\n const handleInlineSelect = (key: string) => {\n clearOverflowState();\n onChange(question.field, key, true);\n };\n\n const overflowMenuItems: MenuItemProps[] = useMemo(() => {\n const search = searchTerm.toLowerCase();\n\n return overflowOptions\n .map(opt => ({\n id: opt.key,\n primary: getLabel(opt),\n selected: isSelected(opt.key)\n }))\n .filter(item => !search || item.primary.toLowerCase().includes(search));\n }, [searchTerm, answer]);\n\n const overflowSelection = useMemo(() => {\n if (isSingleSelect) {\n if (!isOverflowActive || !selectedOverflowKey) return undefined;\n\n const option = overflowOptionsByKey.get(selectedOverflowKey);\n const displayText = option ? getLabel(option) : selectedOverflowKey;\n\n return { items: { id: selectedOverflowKey, text: displayText } };\n }\n\n const selectedOverflowValues = answer.value.filter(v => overflowKeySet.has(v));\n\n if (selectedOverflowValues.length === 0) return undefined;\n\n return {\n items: selectedOverflowValues.map(key => {\n const option = overflowOptionsByKey.get(key);\n return { id: key, text: option ? getLabel(option) : key };\n }),\n onRemove: (id: MenuItemProps['id']) => onChange(question.field, id, false)\n };\n }, [\n isSingleSelect,\n isOverflowActive,\n selectedOverflowKey,\n answer,\n overflowKeySet,\n overflowOptionsByKey,\n question.field,\n onChange\n ]);\n\n const handleOverflowSelect = useCallback(\n (id: MenuItemProps['id']) => {\n if (isSingleSelect) {\n const option = overflowOptionsByKey.get(id);\n\n if (option) {\n setSelectedOverflowKey(option.key);\n setIsOverflowActive(true);\n setSearchTerm('');\n onChange(question.field, option.key, true);\n }\n } else {\n onChange(question.field, id, !isSelected(id));\n }\n },\n [isSingleSelect, answer, question.field, onChange, overflowOptionsByKey]\n );\n\n const activateOverflow = () => {\n setIsOverflowActive(true);\n };\n\n const deselectAllOverflow = () => {\n answer.value\n .filter(v => overflowKeySet.has(v))\n .forEach(key => onChange(question.field, key, false));\n };\n\n const otherLabel = t('other');\n\n const overflowComboBox = hasOverflow ? (\n <StyledComboBoxWrapper>\n <ComboBox\n labelHidden\n label={otherLabel}\n placeholder={otherLabel}\n value={searchTerm}\n selected={overflowSelection}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setSearchTerm(e.target.value)}\n onBlur={() => setSearchTerm('')}\n mode={isSingleSelect ? undefined : 'multi-select'}\n menu={{ items: overflowMenuItems, onItemClick: handleOverflowSelect }}\n />\n </StyledComboBoxWrapper>\n ) : null;\n\n const inlineRadioButtons = inlineOptions.map(option => (\n <RadioButton\n key={option.key}\n label={getLabel(option)}\n name={question.field}\n checked={isSelected(option.key)}\n onChange={() => handleInlineSelect(option.key)}\n />\n ));\n\n const inlineCheckboxes = inlineOptions.map(option => (\n <Checkbox\n key={option.key}\n label={getLabel(option)}\n checked={isSelected(option.key)}\n onChange={e => onChange(question.field, option.key, e.target.checked)}\n />\n ));\n\n return (\n <StyledQuestionBlock>\n {isSingleSelect ? (\n <RadioButtonGroup name={question.field} labelHidden>\n {overflowComboBox\n ? [\n ...inlineRadioButtons,\n <RadioButton\n key='overflow'\n label={overflowComboBox}\n name={question.field}\n checked={isOverflowActive}\n onChange={activateOverflow}\n />\n ]\n : inlineRadioButtons}\n </RadioButtonGroup>\n ) : (\n <CheckboxGroup labelHidden>\n {overflowComboBox\n ? [\n ...inlineCheckboxes,\n <Checkbox\n key='overflow'\n label={overflowComboBox}\n checked={answer.value.some(v => overflowKeySet.has(v))}\n onChange={e => {\n if (!e.target.checked) deselectAllOverflow();\n }}\n />\n ]\n : inlineCheckboxes}\n </CheckboxGroup>\n )}\n </StyledQuestionBlock>\n );\n};\n\nconst Questionnaire = ({ data, onChange, onCancel }: QuestionnaireProps) => {\n const t = useI18n();\n const questions = data.questions ?? [];\n const totalSteps = questions.length;\n\n const [currentStep, setCurrentStep] = useState(0);\n const [answers, setAnswers] = useState<Record<string, FormAnswer>>(() =>\n buildInitialAnswers(questions)\n );\n\n const handleChange = useCallback(\n (field: string, key: string, selected: boolean) => {\n setAnswers(prev => {\n const question = questions.find(q => q.field === field);\n const currentValues = prev[field]?.value ?? [];\n let updatedValues: string[];\n\n if (question?.type === 'single') {\n updatedValues = selected ? [key] : [];\n } else {\n updatedValues = selected ? [...currentValues, key] : currentValues.filter(v => v !== key);\n }\n\n const nextAnswers = {\n ...prev,\n [field]: { ...prev[field], value: updatedValues }\n };\n\n onChange(nextAnswers);\n\n return nextAnswers;\n });\n },\n [onChange, questions]\n );\n\n if (totalSteps === 0) return null;\n\n const activeQuestion = questions[currentStep];\n const activeAnswer = answers[activeQuestion.field] ?? createEmptyAnswer(activeQuestion);\n const isMultiStep = totalSteps > 1;\n\n return (\n <Card as={StyledQuestionnaireCard}>\n <CardHeader\n actions={\n <Button variant='simple' icon onClick={onCancel} aria-label={t('dismiss')}>\n <Icon name='times' />\n </Button>\n }\n >\n <Text variant='h4'>{activeQuestion.questionText}</Text>\n </CardHeader>\n\n <CardContent>\n <QuestionItem\n key={activeQuestion.field}\n question={activeQuestion}\n answer={activeAnswer}\n onChange={handleChange}\n />\n </CardContent>\n\n {isMultiStep && (\n <CardFooter justify='center'>\n <Flex container={{ direction: 'row', alignItems: 'center', gap: 0.5 }}>\n <Button\n variant='simple'\n icon\n onClick={() => setCurrentStep(s => s - 1)}\n disabled={currentStep === 0}\n aria-label={t('pagination_prev')}\n >\n <Icon name='caret-left' />\n </Button>\n\n <Text variant='secondary'>{t('x_of_y', [currentStep + 1, totalSteps])}</Text>\n\n <Button\n variant='simple'\n icon\n onClick={() => setCurrentStep(s => s + 1)}\n disabled={currentStep === totalSteps - 1}\n aria-label={t('pagination_next')}\n >\n <Icon name='caret-right' />\n </Button>\n </Flex>\n </CardFooter>\n )}\n </Card>\n );\n};\n\nexport default Questionnaire;\n"]}
@@ -0,0 +1,4 @@
1
+ import type { ToolCandidateDetailsProps } from './GenAICoach.types';
2
+ declare const ToolCandidates: ({ loading, error, renderCandidatesTable }: ToolCandidateDetailsProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default ToolCandidates;
4
+ //# sourceMappingURL=ToolCandidates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCandidates.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/ToolCandidates.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGpE,QAAA,MAAM,cAAc,GAAI,2CAIrB,yBAAyB,4CAuB3B,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ErrorState, Flex, Progress, useI18n } from '@pega/cosmos-react-core';
3
+ import { StyledToolCandidatesModal } from './GenAICoach.styles';
4
+ const ToolCandidates = ({ loading = true, error, renderCandidatesTable }) => {
5
+ const t = useI18n();
6
+ let content = null;
7
+ if (loading) {
8
+ content = _jsx(Progress, { placement: 'block', variant: 'ring' });
9
+ }
10
+ else if (error) {
11
+ content = _jsx(ErrorState, { message: error });
12
+ }
13
+ else {
14
+ content = (_jsxs(Flex, { container: { direction: 'column', gap: 1 }, children: [t('reasoning_disclaimer'), renderCandidatesTable?.()] }));
15
+ }
16
+ return (_jsx(StyledToolCandidatesModal, { heading: t('semantic_discovery_results'), children: content }));
17
+ };
18
+ export default ToolCandidates;
19
+ //# sourceMappingURL=ToolCandidates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCandidates.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/ToolCandidates.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,cAAc,GAAG,CAAC,EACtB,OAAO,GAAG,IAAI,EACd,KAAK,EACL,qBAAqB,EACK,EAAE,EAAE;IAC9B,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,IAAI,OAAO,GAAc,IAAI,CAAC;IAE9B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,GAAG,KAAC,QAAQ,IAAC,SAAS,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,GAAG,CAAC;IAC1D,CAAC;SAAM,IAAI,KAAK,EAAE,CAAC;QACjB,OAAO,GAAG,KAAC,UAAU,IAAC,OAAO,EAAE,KAAK,GAAI,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CACR,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aAC7C,CAAC,CAAC,sBAAsB,CAAC,EACzB,qBAAqB,EAAE,EAAE,IACrB,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,yBAAyB,IAAC,OAAO,EAAE,CAAC,CAAC,4BAA4B,CAAC,YAChE,OAAO,GACkB,CAC7B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ErrorState, Flex, Progress, useI18n } from '@pega/cosmos-react-core';\n\nimport type { ToolCandidateDetailsProps } from './GenAICoach.types';\nimport { StyledToolCandidatesModal } from './GenAICoach.styles';\n\nconst ToolCandidates = ({\n loading = true,\n error,\n renderCandidatesTable\n}: ToolCandidateDetailsProps) => {\n const t = useI18n();\n\n let content: ReactNode = null;\n\n if (loading) {\n content = <Progress placement='block' variant='ring' />;\n } else if (error) {\n content = <ErrorState message={error} />;\n } else {\n content = (\n <Flex container={{ direction: 'column', gap: 1 }}>\n {t('reasoning_disclaimer')}\n {renderCandidatesTable?.()}\n </Flex>\n );\n }\n\n return (\n <StyledToolCandidatesModal heading={t('semantic_discovery_results')}>\n {content}\n </StyledToolCandidatesModal>\n );\n};\n\nexport default ToolCandidates;\n"]}
@@ -0,0 +1,4 @@
1
+ import type { CoachMessageProps } from './GenAICoach.types';
2
+ declare const ToolConfirmationMessage: ({ tools, toolMessage, onSubmit, onCancel, toolsConfirmed }: CoachMessageProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default ToolConfirmationMessage;
4
+ //# sourceMappingURL=ToolConfirmationMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolConfirmationMessage.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/ToolConfirmationMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,QAAA,MAAM,uBAAuB,GAAI,4DAM9B,iBAAiB,4CAyBnB,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Flex, useI18n, useModalManager } from '@pega/cosmos-react-core';
3
+ import { StyledToolMessageContainer, StyledToolMessage } from './GenAICoach.styles';
4
+ import ToolDetails from './ToolDetails';
5
+ const ToolConfirmationMessage = ({ tools, toolMessage, onSubmit, onCancel, toolsConfirmed = false }) => {
6
+ const { create } = useModalManager();
7
+ const t = useI18n();
8
+ return (_jsxs(Flex, { as: StyledToolMessageContainer, container: { direction: 'column' }, children: [_jsx(StyledToolMessage, { children: toolMessage }), _jsx(Flex, { container: { justify: 'center', pad: 1 }, children: _jsx(Button, { variant: 'link', onClick: () => {
9
+ if (tools && toolMessage)
10
+ create(ToolDetails, {
11
+ tools,
12
+ onSubmit,
13
+ onCancel,
14
+ toolsConfirmed,
15
+ toolMessage
16
+ });
17
+ }, children: t('review_label') }) })] }));
18
+ };
19
+ export default ToolConfirmationMessage;
20
+ //# sourceMappingURL=ToolConfirmationMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolConfirmationMessage.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/ToolConfirmationMessage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGjF,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,uBAAuB,GAAG,CAAC,EAC/B,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,cAAc,GAAG,KAAK,EACJ,EAAE,EAAE;IACtB,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,OAAO,CACL,MAAC,IAAI,IAAC,EAAE,EAAE,0BAA0B,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,aACtE,KAAC,iBAAiB,cAAE,WAAW,GAAqB,EACpD,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,YAC5C,KAAC,MAAM,IACL,OAAO,EAAC,MAAM,EACd,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,KAAK,IAAI,WAAW;4BACtB,MAAM,CAAC,WAAW,EAAE;gCAClB,KAAK;gCACL,QAAQ;gCACR,QAAQ;gCACR,cAAc;gCACd,WAAW;6BACZ,CAAC,CAAC;oBACP,CAAC,YAEA,CAAC,CAAC,cAAc,CAAC,GACX,GACJ,IACF,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,uBAAuB,CAAC","sourcesContent":["import { Button, Flex, useI18n, useModalManager } from '@pega/cosmos-react-core';\n\nimport type { CoachMessageProps } from './GenAICoach.types';\nimport { StyledToolMessageContainer, StyledToolMessage } from './GenAICoach.styles';\nimport ToolDetails from './ToolDetails';\n\nconst ToolConfirmationMessage = ({\n tools,\n toolMessage,\n onSubmit,\n onCancel,\n toolsConfirmed = false\n}: CoachMessageProps) => {\n const { create } = useModalManager();\n const t = useI18n();\n return (\n <Flex as={StyledToolMessageContainer} container={{ direction: 'column' }}>\n <StyledToolMessage>{toolMessage}</StyledToolMessage>\n <Flex container={{ justify: 'center', pad: 1 }}>\n <Button\n variant='link'\n onClick={() => {\n if (tools && toolMessage)\n create(ToolDetails, {\n tools,\n onSubmit,\n onCancel,\n toolsConfirmed,\n toolMessage\n });\n }}\n >\n {t('review_label')}\n </Button>\n </Flex>\n </Flex>\n );\n};\n\nexport default ToolConfirmationMessage;\n"]}
@@ -0,0 +1,5 @@
1
+ import type { OmitStrict } from '@pega/cosmos-react-core';
2
+ import type { ToolDetailsProps } from './GenAICoach.types';
3
+ declare const ToolDetails: ({ tools: toolProps, onSubmit, onCancel, toolsConfirmed }: OmitStrict<ToolDetailsProps, "isToolConfirmation">) => import("react/jsx-runtime").JSX.Element;
4
+ export default ToolDetails;
5
+ //# sourceMappingURL=ToolDetails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolDetails.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/ToolDetails.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAQ,gBAAgB,EAAkB,MAAM,oBAAoB,CAAC;AAuJjF,QAAA,MAAM,WAAW,GAAI,0DAKlB,UAAU,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,4CAgHpD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useState } from 'react';
3
+ import { Button, Flex, FormField, Grid, Input, Modal, MultiStepForm, RadioButton, RadioButtonGroup, Text, useI18n, useModalContext, useUID } from '@pega/cosmos-react-core';
4
+ import { StyledActionContainer, StyledConfirmationMsg } from './GenAICoach.styles';
5
+ const CurrentToolContent = ({ tool, baseToolDetails, onDecisionChange, onParameterChange, setHasError, toolsConfirmed }) => {
6
+ const t = useI18n();
7
+ const { decision = 'approve' } = tool;
8
+ useEffect(() => {
9
+ if (tool.decision === 'modify' && tool.parameters) {
10
+ const hasEmptyParam = tool.parameters.some(param => param.required && !param.value);
11
+ setHasError?.(hasEmptyParam);
12
+ }
13
+ }, [tool.parameters, tool.decision]);
14
+ const id = useUID();
15
+ const accept = 'accept';
16
+ const modify = 'modify';
17
+ const reject = 'reject';
18
+ return (_jsxs(Flex, { container: { direction: 'column', gap: 1 }, children: [_jsx(FormField, { label: t('current_action'), readOnly: true, children: _jsx(StyledConfirmationMsg, { content: tool.message, type: 'markdown' }) }), _jsx(RadioButtonGroup, { name: 'decision', label: t('tool_decision'), required: true, inline: true, onChange: (e) => {
19
+ if (e.target.checked) {
20
+ const value = e.target.value;
21
+ if (value === accept || value === modify || value === reject) {
22
+ onDecisionChange?.(tool.id, value);
23
+ }
24
+ }
25
+ }, readOnly: toolsConfirmed, children: [
26
+ _jsx(RadioButton, { label: t('accept'), checked: decision === 'accept', id: `${id}-${accept}-${tool.id}`, value: accept }, accept),
27
+ ...((tool.parameters && tool.parameters.length > 0) || toolsConfirmed
28
+ ? [
29
+ _jsx(RadioButton, { label: t('modify'), checked: decision === 'modify', id: `${id}-${modify}-${tool.id}`, value: modify }, modify)
30
+ ]
31
+ : []),
32
+ _jsx(RadioButton, { label: t('reject'), checked: decision === 'reject', id: `${id}-${reject}-${tool.id}`, value: reject }, reject)
33
+ ] }), tool.decision === modify && tool.parameters && (_jsxs(Flex, { container: { direction: 'column' }, children: [_jsx(Text, { variant: 'h3', children: t('modify_details') }), _jsx(Grid, { container: { gap: 1, cols: 'repeat(2, minmax(0, 1fr))' }, children: tool.parameters.map(param => {
34
+ const baseParamInfo = baseToolDetails?.parameters?.find(currentParam => currentParam.id === param.id);
35
+ const info = baseParamInfo ? t('current_details', [baseParamInfo.value]) : undefined;
36
+ if (param.type === 'text' || param.type === 'number') {
37
+ return (_jsx(Input, { required: param.required, label: param.label, defaultValue: param.value, readOnly: toolsConfirmed || param.readOnly, type: param.type, status: param.required && !param.value ? 'error' : undefined, info: param.required && !param.value ? t('value_cannot_be_blank') : info, onChange: e => {
38
+ onParameterChange?.(tool.id, param.id, e.target.value);
39
+ } }, param.id));
40
+ }
41
+ if (param.type === 'boolean') {
42
+ return (_jsxs(RadioButtonGroup, { name: param.label, label: param.label, required: param.required, inline: true, onChange: (e) => {
43
+ if (e.target.checked) {
44
+ onParameterChange?.(tool.id, param.id, e.target.value);
45
+ }
46
+ }, readOnly: toolsConfirmed || param.readOnly, info: !toolsConfirmed && !param.readOnly ? info : undefined, children: [_jsx(RadioButton, { label: t('true'), checked: param.value === 'true', id: `${id}-true`, value: 'true' }), _jsx(RadioButton, { label: t('false'), checked: param.value === 'false', id: `${id}-false`, value: 'false' })] }));
47
+ }
48
+ return null;
49
+ }) })] }))] }));
50
+ };
51
+ const ToolDetails = ({ tools: toolProps, onSubmit, onCancel, toolsConfirmed }) => {
52
+ const t = useI18n();
53
+ const { dismiss } = useModalContext();
54
+ const [currentStepIndex, setCurrentStepIndex] = useState(0);
55
+ const finalStep = currentStepIndex === (toolProps ? toolProps.length - 1 : 0);
56
+ const [tools, setTools] = useState(toolProps || []);
57
+ const [hasError, setHasError] = useState(false);
58
+ const handleDecisionChange = (toolId, currentDecision) => {
59
+ setTools(prevTools => prevTools.map(tool => (tool.id === toolId ? { ...tool, decision: currentDecision } : tool)));
60
+ };
61
+ const handleParameterChange = (toolId, parameterId, currentVal) => {
62
+ setTools(prevTools => prevTools.map(tool => {
63
+ if (tool.id === toolId && tool.parameters) {
64
+ const updatedParameters = tool.parameters.map(param => param.id === parameterId ? { ...param, value: currentVal } : param);
65
+ return { ...tool, parameters: updatedParameters };
66
+ }
67
+ return tool;
68
+ }));
69
+ };
70
+ const stepActions = useMemo(() => {
71
+ return (_jsxs(_Fragment, { children: [_jsxs(StyledActionContainer, { container: { gap: 1 }, children: [_jsx(Button, { onClick: () => {
72
+ if (!toolsConfirmed)
73
+ onCancel?.();
74
+ dismiss();
75
+ }, children: toolsConfirmed ? t('close') : t('cancel') }), currentStepIndex > 0 && (_jsx(Button, { onClick: () => {
76
+ if (!hasError)
77
+ setCurrentStepIndex(currentStepIndex - 1);
78
+ }, children: t('previous') }))] }), _jsxs(_Fragment, { children: [!finalStep && (_jsx(Button, { variant: 'primary', onClick: () => {
79
+ if (!hasError)
80
+ setCurrentStepIndex(currentStepIndex + 1);
81
+ }, children: t('pagination_next') })), finalStep && !toolsConfirmed && (_jsx(Button, { type: 'submit', variant: 'primary', onClick: () => {
82
+ if (!hasError) {
83
+ if (tools)
84
+ onSubmit?.(tools);
85
+ dismiss();
86
+ }
87
+ }, children: t('submit') }))] })] }));
88
+ }, [currentStepIndex, hasError, tools]);
89
+ const stepData = useMemo(() => {
90
+ return tools.map(tool => ({
91
+ id: tool.id,
92
+ name: tool.name,
93
+ content: (_jsx(CurrentToolContent, { tool: tool, baseToolDetails: toolProps?.find(toolVal => toolVal.id === tool.id), setHasError: setHasError, toolsConfirmed: toolsConfirmed, onDecisionChange: handleDecisionChange, onParameterChange: handleParameterChange }))
94
+ }));
95
+ }, [tools]);
96
+ return (_jsx(Modal, { heading: t('confirm_details'), actions: stepActions, children: _jsx(MultiStepForm, { steps: stepData, currentStepId: stepData[currentStepIndex].id, stepIndicator: 'horizontal' }) }));
97
+ };
98
+ export default ToolDetails;
99
+ //# sourceMappingURL=ToolDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolDetails.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/ToolDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport type { ChangeEvent, Dispatch, SetStateAction } from 'react';\n\nimport {\n Button,\n Flex,\n FormField,\n Grid,\n Input,\n Modal,\n MultiStepForm,\n RadioButton,\n RadioButtonGroup,\n Text,\n useI18n,\n useModalContext,\n useUID\n} from '@pega/cosmos-react-core';\nimport type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport type { Tool, ToolDetailsProps, ToolParameters } from './GenAICoach.types';\nimport { StyledActionContainer, StyledConfirmationMsg } from './GenAICoach.styles';\n\nconst CurrentToolContent = ({\n tool,\n baseToolDetails,\n onDecisionChange,\n onParameterChange,\n setHasError,\n toolsConfirmed\n}: {\n tool: Tool;\n baseToolDetails?: Tool;\n toolsConfirmed?: boolean;\n setHasError?: Dispatch<SetStateAction<boolean>>;\n onDecisionChange: (toolId: Tool['id'], currentDecision: Tool['decision']) => void;\n onParameterChange?: (\n toolId: Tool['id'],\n parameterId: ToolParameters['id'],\n currentVal: ToolParameters['value']\n ) => void;\n}) => {\n const t = useI18n();\n const { decision = 'approve' } = tool;\n\n useEffect(() => {\n if (tool.decision === 'modify' && tool.parameters) {\n const hasEmptyParam = tool.parameters.some(param => param.required && !param.value);\n setHasError?.(hasEmptyParam);\n }\n }, [tool.parameters, tool.decision]);\n\n const id = useUID();\n const accept = 'accept';\n const modify = 'modify';\n const reject = 'reject';\n return (\n <Flex container={{ direction: 'column', gap: 1 }}>\n <FormField label={t('current_action')} readOnly>\n <StyledConfirmationMsg content={tool.message} type='markdown' />\n </FormField>\n\n <RadioButtonGroup\n name='decision'\n label={t('tool_decision')}\n required\n inline\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n const value = e.target.value;\n if (value === accept || value === modify || value === reject) {\n onDecisionChange?.(tool.id, value);\n }\n }\n }}\n readOnly={toolsConfirmed}\n >\n {[\n <RadioButton\n key={accept}\n label={t('accept')}\n checked={decision === 'accept'}\n id={`${id}-${accept}-${tool.id}`}\n value={accept}\n />,\n ...((tool.parameters && tool.parameters.length > 0) || toolsConfirmed\n ? [\n <RadioButton\n key={modify}\n label={t('modify')}\n checked={decision === 'modify'}\n id={`${id}-${modify}-${tool.id}`}\n value={modify}\n />\n ]\n : []),\n <RadioButton\n key={reject}\n label={t('reject')}\n checked={decision === 'reject'}\n id={`${id}-${reject}-${tool.id}`}\n value={reject}\n />\n ]}\n </RadioButtonGroup>\n\n {tool.decision === modify && tool.parameters && (\n <Flex container={{ direction: 'column' }}>\n <Text variant='h3'>{t('modify_details')}</Text>\n <Grid container={{ gap: 1, cols: 'repeat(2, minmax(0, 1fr))' }}>\n {tool.parameters.map(param => {\n const baseParamInfo = baseToolDetails?.parameters?.find(\n currentParam => currentParam.id === param.id\n );\n const info = baseParamInfo ? t('current_details', [baseParamInfo.value]) : undefined;\n if (param.type === 'text' || param.type === 'number') {\n return (\n <Input\n key={param.id}\n required={param.required}\n label={param.label}\n defaultValue={param.value}\n readOnly={toolsConfirmed || param.readOnly}\n type={param.type}\n status={param.required && !param.value ? 'error' : undefined}\n info={param.required && !param.value ? t('value_cannot_be_blank') : info}\n onChange={e => {\n onParameterChange?.(tool.id, param.id, e.target.value);\n }}\n />\n );\n }\n if (param.type === 'boolean') {\n return (\n <RadioButtonGroup\n name={param.label}\n label={param.label}\n required={param.required}\n inline\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n onParameterChange?.(tool.id, param.id, e.target.value);\n }\n }}\n readOnly={toolsConfirmed || param.readOnly}\n info={!toolsConfirmed && !param.readOnly ? info : undefined}\n >\n <RadioButton\n label={t('true')}\n checked={param.value === 'true'}\n id={`${id}-true`}\n value='true'\n />\n <RadioButton\n label={t('false')}\n checked={param.value === 'false'}\n id={`${id}-false`}\n value='false'\n />\n </RadioButtonGroup>\n );\n }\n return null;\n })}\n </Grid>\n </Flex>\n )}\n </Flex>\n );\n};\n\nconst ToolDetails = ({\n tools: toolProps,\n onSubmit,\n onCancel,\n toolsConfirmed\n}: OmitStrict<ToolDetailsProps, 'isToolConfirmation'>) => {\n const t = useI18n();\n const { dismiss } = useModalContext();\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\n const finalStep = currentStepIndex === (toolProps ? toolProps.length - 1 : 0);\n\n const [tools, setTools] = useState<Tool[]>(toolProps || []);\n const [hasError, setHasError] = useState(false);\n\n const handleDecisionChange = (toolId: Tool['id'], currentDecision: Tool['decision']) => {\n setTools(prevTools =>\n prevTools.map(tool => (tool.id === toolId ? { ...tool, decision: currentDecision } : tool))\n );\n };\n\n const handleParameterChange = (\n toolId: Tool['id'],\n parameterId: ToolParameters['id'],\n currentVal: ToolParameters['value']\n ) => {\n setTools(prevTools =>\n prevTools.map(tool => {\n if (tool.id === toolId && tool.parameters) {\n const updatedParameters = tool.parameters.map(param =>\n param.id === parameterId ? { ...param, value: currentVal } : param\n );\n return { ...tool, parameters: updatedParameters };\n }\n return tool;\n })\n );\n };\n\n const stepActions = useMemo(() => {\n return (\n <>\n <StyledActionContainer container={{ gap: 1 }}>\n <Button\n onClick={() => {\n if (!toolsConfirmed) onCancel?.();\n dismiss();\n }}\n >\n {toolsConfirmed ? t('close') : t('cancel')}\n </Button>\n {currentStepIndex > 0 && (\n <Button\n onClick={() => {\n if (!hasError) setCurrentStepIndex(currentStepIndex - 1);\n }}\n >\n {t('previous')}\n </Button>\n )}\n </StyledActionContainer>\n\n <>\n {!finalStep && (\n <Button\n variant='primary'\n onClick={() => {\n if (!hasError) setCurrentStepIndex(currentStepIndex + 1);\n }}\n >\n {t('pagination_next')}\n </Button>\n )}\n {finalStep && !toolsConfirmed && (\n <Button\n type='submit'\n variant='primary'\n onClick={() => {\n if (!hasError) {\n if (tools) onSubmit?.(tools);\n dismiss();\n }\n }}\n >\n {t('submit')}\n </Button>\n )}\n </>\n </>\n );\n }, [currentStepIndex, hasError, tools]);\n\n const stepData = useMemo(() => {\n return tools.map(tool => ({\n id: tool.id,\n name: tool.name,\n content: (\n <CurrentToolContent\n tool={tool}\n baseToolDetails={toolProps?.find(toolVal => toolVal.id === tool.id)}\n setHasError={setHasError}\n toolsConfirmed={toolsConfirmed}\n onDecisionChange={handleDecisionChange}\n onParameterChange={handleParameterChange}\n />\n )\n }));\n }, [tools]);\n\n return (\n <Modal heading={t('confirm_details')} actions={stepActions}>\n <MultiStepForm\n steps={stepData}\n currentStepId={stepData[currentStepIndex].id}\n stepIndicator='horizontal'\n />\n </Modal>\n );\n};\n\nexport default ToolDetails;\n"]}
@@ -1,6 +1,8 @@
1
- export { default } from './GenAICoach';
2
- export type { GenAICoachProps, GenAIMessageProps, UserMessageProps, CoachMessageProps, MessageProps, UtilitiesGenAICoachProps, SendMessageProps, State } from './GenAICoach.types';
3
- export { default as GenAIMessage } from './GenAIMessage';
1
+ export { default, AgentIcon } from './GenAICoach';
2
+ export { default as PortalAgentSplitView } from './PortalAgentSplitView';
3
+ export type { GenAICoachProps, GenAIMessageProps, UserMessageProps, CoachMessageProps, MessageProps, UtilitiesGenAICoachProps, SendMessageProps, State, ActiveCaseItem, CaseWorkflowProps, CaseWorkflowStageProps, CaseDetails, QuestionnaireConfig } from './GenAICoach.types';
4
+ export { default as GenAIMessage, StreamingContext } from './GenAIMessage';
4
5
  export { default as InitialSuggestedMessage } from './InitialSuggestedMessage';
5
6
  export { isUserMessage, isCoachMessage } from './GenAICoach.utils';
7
+ export { AISuggestedBadge } from './GenAICoach';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,KAAK,EACN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,KAAK,EACL,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
@@ -1,5 +1,7 @@
1
- export { default } from './GenAICoach';
2
- export { default as GenAIMessage } from './GenAIMessage';
1
+ export { default, AgentIcon } from './GenAICoach';
2
+ export { default as PortalAgentSplitView } from './PortalAgentSplitView';
3
+ export { default as GenAIMessage, StreamingContext } from './GenAIMessage';
3
4
  export { default as InitialSuggestedMessage } from './InitialSuggestedMessage';
4
5
  export { isUserMessage, isCoachMessage } from './GenAICoach.utils';
6
+ export { AISuggestedBadge } from './GenAICoach';
5
7
  //# sourceMappingURL=index.js.map