@pega/cosmos-react-work 10.0.0-build.4.8 → 10.0.0-build.5.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.
- package/lib/components/AppAnnouncement/AppAnnouncement.d.ts.map +1 -1
- package/lib/components/AppAnnouncement/AppAnnouncement.js +25 -3
- package/lib/components/AppAnnouncement/AppAnnouncement.js.map +1 -1
- package/lib/components/Article/ArticleRating.d.ts.map +1 -1
- package/lib/components/Article/ArticleRating.js +2 -2
- package/lib/components/Article/ArticleRating.js.map +1 -1
- package/lib/components/ArticleList/ArticleFeedback.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleFeedback.js +2 -2
- package/lib/components/ArticleList/ArticleFeedback.js.map +1 -1
- package/lib/components/CaseView/CaseHeader/CaseHeader.d.ts.map +1 -1
- package/lib/components/CaseView/CaseHeader/CaseHeader.js +1 -1
- package/lib/components/CaseView/CaseHeader/CaseHeader.js.map +1 -1
- package/lib/components/CaseView/CaseView.styles.d.ts.map +1 -1
- package/lib/components/CaseView/CaseView.styles.js +153 -137
- package/lib/components/CaseView/CaseView.styles.js.map +1 -1
- package/lib/components/CaseView/CaseView.types.d.ts +1 -0
- package/lib/components/CaseView/CaseView.types.d.ts.map +1 -1
- package/lib/components/CaseView/CaseView.types.js.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.d.ts +1 -1
- package/lib/components/GenAICoach/GenAICoach.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.js +39 -6
- package/lib/components/GenAICoach/GenAICoach.js.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.styles.d.ts +11 -0
- package/lib/components/GenAICoach/GenAICoach.styles.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.styles.js +146 -129
- package/lib/components/GenAICoach/GenAICoach.styles.js.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.test-ids.d.ts +1 -1
- package/lib/components/GenAICoach/GenAICoach.test-ids.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.test-ids.js +3 -1
- package/lib/components/GenAICoach/GenAICoach.test-ids.js.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.types.d.ts +13 -1
- package/lib/components/GenAICoach/GenAICoach.types.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.types.js.map +1 -1
- package/lib/components/GenAICoach/GenAIMessage.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAIMessage.js +7 -4
- package/lib/components/GenAICoach/GenAIMessage.js.map +1 -1
- package/lib/components/GenAICoach/GenAIMessageFeedback.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAIMessageFeedback.js +2 -2
- package/lib/components/GenAICoach/GenAIMessageFeedback.js.map +1 -1
- package/lib/components/GenAICoach/Questionnaire.d.ts.map +1 -1
- package/lib/components/GenAICoach/Questionnaire.js +10 -3
- package/lib/components/GenAICoach/Questionnaire.js.map +1 -1
- package/lib/components/GenAICoach/index.d.ts +1 -1
- package/lib/components/GenAICoach/index.d.ts.map +1 -1
- package/lib/components/GenAICoach/index.js.map +1 -1
- package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.d.ts.map +1 -1
- package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js +20 -9
- package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js.map +1 -1
- package/lib/components/InteractionNotification/InteractionNotification.d.ts +1 -1
- package/lib/components/InteractionNotification/InteractionNotification.d.ts.map +1 -1
- package/lib/components/InteractionNotification/InteractionNotification.js +2 -2
- package/lib/components/InteractionNotification/InteractionNotification.js.map +1 -1
- package/lib/components/Shortcuts/Shortcuts.d.ts +1 -1
- package/lib/components/Shortcuts/Shortcuts.d.ts.map +1 -1
- package/lib/components/Shortcuts/Shortcuts.js +17 -9
- package/lib/components/Shortcuts/Shortcuts.js.map +1 -1
- package/lib/components/Shortcuts/Shortcuts.styles.d.ts +3 -1
- package/lib/components/Shortcuts/Shortcuts.styles.d.ts.map +1 -1
- package/lib/components/Shortcuts/Shortcuts.styles.js +20 -18
- package/lib/components/Shortcuts/Shortcuts.styles.js.map +1 -1
- package/lib/components/Shortcuts/Shortcuts.test-ids.d.ts +1 -1
- package/lib/components/Shortcuts/Shortcuts.test-ids.d.ts.map +1 -1
- package/lib/components/Shortcuts/Shortcuts.test-ids.js +4 -3
- package/lib/components/Shortcuts/Shortcuts.test-ids.js.map +1 -1
- package/lib/components/Shortcuts/Shortcuts.types.d.ts +14 -2
- package/lib/components/Shortcuts/Shortcuts.types.d.ts.map +1 -1
- package/lib/components/Shortcuts/Shortcuts.types.js.map +1 -1
- package/lib/components/Stages/Stages.d.ts.map +1 -1
- package/lib/components/Stages/Stages.js +6 -4
- package/lib/components/Stages/Stages.js.map +1 -1
- package/lib/components/Stages/Stages.styles.d.ts +3 -3
- package/lib/components/Stages/Stages.styles.d.ts.map +1 -1
- package/lib/components/Stages/Stages.styles.js +116 -22
- package/lib/components/Stages/Stages.styles.js.map +1 -1
- package/lib/components/Tags/Tags.d.ts.map +1 -1
- package/lib/components/Tags/Tags.js +1 -12
- package/lib/components/Tags/Tags.js.map +1 -1
- package/lib/components/Tasks/TaskCard.d.ts.map +1 -1
- package/lib/components/Tasks/TaskCard.js +5 -2
- package/lib/components/Tasks/TaskCard.js.map +1 -1
- package/lib/components/Tasks/TaskList.d.ts.map +1 -1
- package/lib/components/Tasks/TaskList.js +24 -16
- package/lib/components/Tasks/TaskList.js.map +1 -1
- package/lib/components/Tasks/Tasks.d.ts +7 -2
- package/lib/components/Tasks/Tasks.d.ts.map +1 -1
- package/lib/components/Tasks/Tasks.js +7 -5
- package/lib/components/Tasks/Tasks.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAIMessage.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAIMessage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { createContext, forwardRef, useEffect, useMemo, useRef } from 'react';\nimport type { PropsWithoutRef } from 'react';\nimport { readableColor, transparentize } from 'polished';\n\nimport {\n Avatar,\n Button,\n Flex,\n Progress,\n registerIcon,\n useI18n,\n useTestIds,\n ErrorState,\n markdownToPlainText,\n type ForwardRefForwardPropsComponent,\n Actions,\n Icon,\n useModalManager,\n ThemeOverride,\n useTheme,\n calculateForegroundColor\n} from '@pega/cosmos-react-core';\nimport * as polarisSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/polaris-solid.icon';\nimport * as brainIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/brain.icon';\nimport { RichTextViewer } from '@pega/cosmos-react-rte';\nimport { useAnimatedText } from '@pega/cosmos-react-core';\n\nimport type { CoachLoadingContentProps, GenAIMessageProps } from './GenAICoach.types';\nimport {\n StyledActionsContainer,\n StyledAttachmentsList,\n StyledGenAIAvatar,\n StyledMessageSender,\n StyledMessage,\n StyledSuggestion,\n StyledSuggestionsContainer,\n StyledSystemMessage,\n StyledUserMessage\n} from './GenAICoach.styles';\nimport { getGenAICoachTestIds } from './GenAICoach.test-ids';\nimport { isCoachMessage, isUserMessage } from './GenAICoach.utils';\nimport GenAIMessageProgress from './GenAIMessageProgress';\nimport ToolConfirmationMessage from './ToolConfirmationMessage';\nimport GenAIMessageFeedbackButtons from './GenAIMessageFeedback';\nimport ToolCandidates from './ToolCandidates';\n\nregisterIcon(polarisSolidIcon, brainIcon);\n\ntype StreamingContextProps = {\n isStreamingMessage?: boolean;\n isStreamingInProgress?: boolean;\n};\n\n/** Metadata Context */\nexport const StreamingContext = createContext<StreamingContextProps | undefined>({\n isStreamingMessage: false\n});\n\nconst LoadingContent = ({\n message,\n markdownMap,\n progressSteps,\n progressStepsCompleted\n}: CoachLoadingContentProps) => {\n if (!progressSteps?.length) {\n return <GenAIMessageProgress messages={message ? [message] : undefined} />;\n }\n\n if (message) {\n return (\n <>\n <RichTextViewer content={message} type='markdown' markdownMap={markdownMap} />\n <Progress variant='ellipsis' placement='inline' />\n </>\n );\n }\n\n return <GenAIMessageProgress messages={progressSteps} completedSteps={progressStepsCompleted} />;\n};\n\nconst GenAIMessage: ForwardRefForwardPropsComponent<GenAIMessageProps> = forwardRef(\n function GenAIMessage(props: PropsWithoutRef<GenAIMessageProps>, ref: GenAIMessageProps['ref']) {\n const testIds = useTestIds(props.testId, getGenAICoachTestIds);\n const t = useI18n();\n const { create } = useModalManager();\n const theme = useTheme();\n\n const modalMethodsRef = useRef<ReturnType<typeof create> | null>(null);\n\n const { message, announceInteraction, simplifiedAgent, ...restProps } = props;\n const isStringMessage = typeof message === 'string';\n const rawPlainTextMessage = isStringMessage ? markdownToPlainText(message ?? '') : '';\n\n let fallbackAriaLabel = '';\n if (isCoachMessage(props)) {\n fallbackAriaLabel = t('agent_message');\n } else if (isUserMessage(props)) {\n fallbackAriaLabel = t('user_message');\n }\n const plainTextMessage = rawPlainTextMessage || fallbackAriaLabel;\n let ariaLabel = plainTextMessage;\n\n const toolCandidates = isCoachMessage(props) ? props.toolCandidates : undefined;\n\n const isStreamingMessage = isCoachMessage(props) && props.enableStreaming;\n const allChunksReceived = isCoachMessage(props) && props.allChunksReceived;\n const enableStreaming = !!isStreamingMessage && !allChunksReceived;\n\n const {\n text: streamingMessage,\n isAnimationDone: isStreamingDone,\n animatedTillCursor\n } = useAnimatedText({\n text: isStringMessage ? message : '',\n allContentReceived: allChunksReceived === undefined ? true : allChunksReceived,\n enabled: isStringMessage && enableStreaming,\n tokenizeMarkdown: true,\n cursorStartIndex:\n isCoachMessage(props) && props.animationInitialCursorPos\n ? props.animationInitialCursorPos\n : undefined\n });\n\n useEffect(() => {\n if (isCoachMessage(props) && props.onAnimationCursorUpdate) {\n props.onAnimationCursorUpdate(animatedTillCursor);\n }\n }, [animatedTillCursor]);\n\n useEffect(() => {\n if (isStreamingMessage && props.onStreamingUpdate) {\n props.onStreamingUpdate(!!allChunksReceived && isStreamingDone);\n }\n }, [enableStreaming, isStreamingDone, allChunksReceived]);\n\n useEffect(() => {\n if (isCoachMessage(props) && toolCandidates && modalMethodsRef.current) {\n modalMethodsRef.current.update({\n loading: toolCandidates.toolState?.loading,\n error: toolCandidates.toolState?.error,\n renderCandidatesTable: toolCandidates.toolState?.renderCandidatesTable\n });\n }\n }, [toolCandidates]);\n\n useEffect(() => {\n return () => {\n const modalMethods = modalMethodsRef.current;\n\n if (!modalMethods) {\n return;\n }\n\n modalMethods.dismiss();\n modalMethods.unmount();\n };\n }, []);\n\n const streamingContext: StreamingContextProps = useMemo(() => {\n return { isStreamingMessage, isStreamingInProgress: isCoachMessage(props) && props.loading };\n }, [isStreamingMessage, props]);\n\n if (isCoachMessage(props)) {\n const {\n id: messageId,\n coachName,\n isCustom,\n suggestions,\n onSend,\n loading,\n error,\n feedback,\n markdownMap,\n messageActions,\n showSenderInfo\n } = props;\n const agentBackground = theme.components.agent.background;\n const agentForeground = calculateForegroundColor(\n agentBackground,\n theme.components.agent['foreground-color']\n );\n\n const { reaction } = feedback ?? {};\n const { toolState, onViewToolsConsidered } = toolCandidates ?? {};\n\n let selectedFeedbackResponse;\n\n let feedbackAriaLabel = t('sender_replied_message', [coachName, plainTextMessage ?? '']);\n\n if (!isCustom && feedback && reaction) {\n selectedFeedbackResponse = t('selected_noun', [\n reaction === 'liked' ? t('good_response') : t('bad_response')\n ]);\n\n feedbackAriaLabel = `${feedbackAriaLabel} ${selectedFeedbackResponse}`;\n }\n\n ariaLabel =\n suggestions && suggestions.length > 0\n ? `${feedbackAriaLabel} ${t('suggestions_in_message', [suggestions.length])}`\n : feedbackAriaLabel;\n\n const hasInteractiveContent = !!(\n suggestions?.length ||\n feedback ||\n messageActions ||\n toolState?.renderCandidatesTable\n );\n\n if (announceInteraction && hasInteractiveContent) {\n ariaLabel = `${ariaLabel} ${t('interaction_message')}`;\n }\n\n const onClickToolsConsidered = () => {\n modalMethodsRef.current = create(ToolCandidates, {\n loading: toolState?.loading,\n error: toolState?.error,\n renderCandidatesTable: toolState?.renderCandidatesTable\n });\n\n onViewToolsConsidered?.(messageId);\n };\n\n const streamingContent = isStreamingMessage && (\n <>\n {message ? (\n <>\n <StreamingContext.Provider value={streamingContext}>\n {isStringMessage ? (\n <RichTextViewer\n content={isStreamingMessage ? streamingMessage : message}\n type='markdown'\n markdownMap={markdownMap}\n />\n ) : (\n message\n )}\n </StreamingContext.Provider>\n\n {loading && <Progress variant='ellipsis' placement='inline' />}\n </>\n ) : (\n (loading || props.progressSteps?.length) && (\n <GenAIMessageProgress\n messages={props.progressSteps?.length ? props.progressSteps : undefined}\n completedSteps={\n props.progressSteps?.length ? props.progressStepsCompleted : undefined\n }\n />\n )\n )}\n </>\n );\n\n const messageContent = (\n <StyledMessage simplified={simplifiedAgent && !showSenderInfo}>\n {/* Streaming loader and content */}\n {streamingContent}\n\n {loading || error ? (\n <>\n {loading && !isStreamingMessage && (\n <LoadingContent\n message={isStringMessage ? message : undefined}\n markdownMap={markdownMap}\n progressSteps={props.progressSteps}\n progressStepsCompleted={props.progressStepsCompleted}\n />\n )}\n {error && <ErrorState message={error} />}\n </>\n ) : (\n <>\n {/* Non streaming content */}\n {!isStreamingMessage &&\n message &&\n (isStringMessage ? (\n <RichTextViewer content={message} type='markdown' markdownMap={markdownMap} />\n ) : (\n message\n ))}\n\n {props.isToolConfirmation && <ToolConfirmationMessage {...props} />}\n\n {((!isCustom && (feedback || onViewToolsConsidered)) || messageActions) && (\n <Flex\n container={{\n direction: 'row',\n gap: 1,\n pad: [1, undefined],\n alignItems: 'center'\n }}\n as={StyledActionsContainer}\n >\n {!isCustom && feedback && (\n <GenAIMessageFeedbackButtons messageId={messageId} feedback={feedback} />\n )}\n\n {!isCustom && onViewToolsConsidered && (\n <Button\n label={t('semantic_discovery_results')}\n variant='simple'\n icon\n compact\n onClick={onClickToolsConsidered}\n >\n <Icon name='brain' />\n </Button>\n )}\n\n {messageActions && <Actions {...messageActions} />}\n </Flex>\n )}\n\n {suggestions && suggestions.length > 0 && (\n <Flex\n as={StyledSuggestionsContainer}\n container={{ gap: 1, justify: 'end', wrap: 'wrap' }}\n >\n {suggestions.map(({ id, message: prompt, selected }) => {\n return (\n <Button\n as={StyledSuggestion}\n onClick={onSend ? () => onSend({ id, message: prompt }) : undefined}\n key={id}\n variant={selected ? 'primary' : undefined}\n >\n {prompt}\n </Button>\n );\n })}\n </Flex>\n )}\n </>\n )}\n </StyledMessage>\n );\n\n return (\n <ThemeOverride\n theme={{\n base: {\n palette: {\n 'foreground-color': agentForeground,\n ...(simplifiedAgent && {\n 'secondary-background': transparentize(0.7, readableColor(agentForeground))\n })\n }\n }\n }}\n >\n <Flex\n as='li'\n data-testid={testIds.coachMessage}\n {...restProps}\n container={{ direction: 'row', pad: [1, 0], gap: 1 }}\n type='message'\n aria-label={ariaLabel}\n ref={ref}\n >\n {simplifiedAgent ? (\n <>\n {showSenderInfo && (\n <StyledGenAIAvatar size='l' name={coachName ?? t('agent')} icon='polaris-solid' />\n )}\n <Flex item={{ grow: 1 }} container={{ direction: 'column', gap: 0.75 }}>\n {coachName && showSenderInfo && (\n <StyledMessageSender variant='primary'>{coachName}</StyledMessageSender>\n )}\n {messageContent}\n </Flex>\n </>\n ) : (\n messageContent\n )}\n </Flex>\n </ThemeOverride>\n );\n }\n\n if (isUserMessage(props)) {\n if (plainTextMessage) {\n ariaLabel = t('you_asked', [plainTextMessage]);\n }\n\n if (announceInteraction) {\n ariaLabel = `${ariaLabel} ${t('interaction_message')}`;\n }\n\n const attachmentsAndMessage = (\n <>\n {props.attachments && props.attachments.length > 0 && (\n <StyledAttachmentsList type='display' items={props.attachments} />\n )}\n {props.message && <RichTextViewer content={props.message} type='markdown' />}\n </>\n );\n\n if (!simplifiedAgent) {\n return (\n <StyledUserMessage\n data-testid={testIds.userMessage}\n {...restProps}\n // @ts-expect-error FIXME: Need to validate if we can remove message, and double 'as'\n type='message'\n aria-label={ariaLabel}\n ref={ref}\n >\n {attachmentsAndMessage}\n </StyledUserMessage>\n );\n }\n\n return (\n <Flex\n as='li'\n data-testid={testIds.userMessage}\n {...restProps}\n container={{ direction: 'row', gap: 1, justify: 'end', alignItems: 'start' }}\n type='message'\n aria-label={ariaLabel}\n ref={ref}\n >\n <Flex container={{ direction: 'column', alignItems: 'end', gap: 0.75 }}>\n {props.userName !== undefined && (\n <StyledMessageSender variant='primary'>\n {props.userName.split(' ')[0] || t('you')}\n </StyledMessageSender>\n )}\n <StyledUserMessage as='div'>{attachmentsAndMessage}</StyledUserMessage>\n </Flex>\n {props.userName && <Avatar name={props.userName} size='l' shape='circle' />}\n </Flex>\n );\n }\n\n if (props.from === 'system') {\n const displayMessage = props.stopped && !message ? t('generation_stopped') : message;\n const systemAriaLabel = typeof displayMessage === 'string' ? displayMessage : ariaLabel;\n return (\n <StyledSystemMessage\n stopped={props.stopped}\n data-testid={testIds.userMessage}\n aria-label={systemAriaLabel}\n ref={ref}\n >\n {displayMessage}\n </StyledSystemMessage>\n );\n }\n\n return null;\n }\n);\n\nexport default GenAIMessage;\n"]}
|
|
1
|
+
{"version":3,"file":"GenAIMessage.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAIMessage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { createContext, forwardRef, useEffect, useMemo, useRef } from 'react';\nimport type { PropsWithoutRef } from 'react';\nimport { transparentize } from 'polished';\n\nimport {\n Avatar,\n Button,\n Flex,\n Progress,\n registerIcon,\n useI18n,\n useTestIds,\n ErrorState,\n markdownToPlainText,\n type ForwardRefForwardPropsComponent,\n Actions,\n Icon,\n useModalManager,\n ThemeOverride,\n useTheme,\n calculateForegroundColor,\n resolveContrastColor\n} from '@pega/cosmos-react-core';\nimport * as polarisSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/polaris-solid.icon';\nimport * as brainIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/brain.icon';\nimport { RichTextViewer } from '@pega/cosmos-react-rte';\nimport { useAnimatedText } from '@pega/cosmos-react-core';\n\nimport type { CoachLoadingContentProps, GenAIMessageProps } from './GenAICoach.types';\nimport {\n StyledActionsContainer,\n StyledAttachmentsList,\n StyledGenAIAvatar,\n StyledMessageSender,\n StyledMessage,\n StyledSuggestion,\n StyledSuggestionsContainer,\n StyledSystemMessage,\n StyledUserMessage\n} from './GenAICoach.styles';\nimport { getGenAICoachTestIds } from './GenAICoach.test-ids';\nimport { isCoachMessage, isUserMessage } from './GenAICoach.utils';\nimport GenAIMessageProgress from './GenAIMessageProgress';\nimport ToolConfirmationMessage from './ToolConfirmationMessage';\nimport GenAIMessageFeedbackButtons from './GenAIMessageFeedback';\nimport ToolCandidates from './ToolCandidates';\n\nregisterIcon(polarisSolidIcon, brainIcon);\n\ntype StreamingContextProps = {\n isStreamingMessage?: boolean;\n isStreamingInProgress?: boolean;\n};\n\n/** Metadata Context */\nexport const StreamingContext = createContext<StreamingContextProps | undefined>({\n isStreamingMessage: false\n});\n\nconst LoadingContent = ({\n message,\n markdownMap,\n progressSteps,\n progressStepsCompleted\n}: CoachLoadingContentProps) => {\n if (!progressSteps?.length) {\n return <GenAIMessageProgress messages={message ? [message] : undefined} />;\n }\n\n if (message) {\n return (\n <>\n <RichTextViewer content={message} type='markdown' markdownMap={markdownMap} />\n <Progress variant='ellipsis' placement='inline' />\n </>\n );\n }\n\n return <GenAIMessageProgress messages={progressSteps} completedSteps={progressStepsCompleted} />;\n};\n\nconst GenAIMessage: ForwardRefForwardPropsComponent<GenAIMessageProps> = forwardRef(\n function GenAIMessage(props: PropsWithoutRef<GenAIMessageProps>, ref: GenAIMessageProps['ref']) {\n const testIds = useTestIds(props.testId, getGenAICoachTestIds);\n const t = useI18n();\n const { create } = useModalManager();\n const theme = useTheme();\n\n const modalMethodsRef = useRef<ReturnType<typeof create> | null>(null);\n\n const { message, announceInteraction, simplifiedAgent, ...restProps } = props;\n const isStringMessage = typeof message === 'string';\n const rawPlainTextMessage = isStringMessage ? markdownToPlainText(message ?? '') : '';\n\n let fallbackAriaLabel = '';\n if (isCoachMessage(props)) {\n fallbackAriaLabel = t('agent_message');\n } else if (isUserMessage(props)) {\n fallbackAriaLabel = t('user_message');\n }\n const plainTextMessage = rawPlainTextMessage || fallbackAriaLabel;\n let ariaLabel = plainTextMessage;\n\n const toolCandidates = isCoachMessage(props) ? props.toolCandidates : undefined;\n\n const isStreamingMessage = isCoachMessage(props) && props.enableStreaming;\n const allChunksReceived = isCoachMessage(props) && props.allChunksReceived;\n const enableStreaming = !!isStreamingMessage && !allChunksReceived;\n\n const {\n text: streamingMessage,\n isAnimationDone: isStreamingDone,\n animatedTillCursor\n } = useAnimatedText({\n text: isStringMessage ? message : '',\n allContentReceived: allChunksReceived === undefined ? true : allChunksReceived,\n enabled: isStringMessage && enableStreaming,\n tokenizeMarkdown: true,\n cursorStartIndex:\n isCoachMessage(props) && props.animationInitialCursorPos\n ? props.animationInitialCursorPos\n : undefined\n });\n\n useEffect(() => {\n if (isCoachMessage(props) && props.onAnimationCursorUpdate) {\n props.onAnimationCursorUpdate(animatedTillCursor);\n }\n }, [animatedTillCursor]);\n\n useEffect(() => {\n if (isStreamingMessage && props.onStreamingUpdate) {\n props.onStreamingUpdate(!!allChunksReceived && isStreamingDone);\n }\n }, [enableStreaming, isStreamingDone, allChunksReceived]);\n\n useEffect(() => {\n if (isCoachMessage(props) && toolCandidates && modalMethodsRef.current) {\n modalMethodsRef.current.update({\n loading: toolCandidates.toolState?.loading,\n error: toolCandidates.toolState?.error,\n renderCandidatesTable: toolCandidates.toolState?.renderCandidatesTable\n });\n }\n }, [toolCandidates]);\n\n useEffect(() => {\n return () => {\n const modalMethods = modalMethodsRef.current;\n\n if (!modalMethods) {\n return;\n }\n\n modalMethods.dismiss();\n modalMethods.unmount();\n };\n }, []);\n\n const streamingContext: StreamingContextProps = useMemo(() => {\n return { isStreamingMessage, isStreamingInProgress: isCoachMessage(props) && props.loading };\n }, [isStreamingMessage, props]);\n\n if (isCoachMessage(props)) {\n const {\n id: messageId,\n coachName,\n isCustom,\n suggestions,\n onSend,\n loading,\n error,\n feedback,\n markdownMap,\n messageActions,\n showSenderInfo\n } = props;\n const agentBackground = theme.components.agent.background;\n const agentForeground = calculateForegroundColor(\n agentBackground,\n theme.components.agent['foreground-color'],\n theme\n );\n\n const { reaction } = feedback ?? {};\n const { toolState, onViewToolsConsidered } = toolCandidates ?? {};\n\n let selectedFeedbackResponse;\n\n let feedbackAriaLabel = t('sender_replied_message', [coachName, plainTextMessage ?? '']);\n\n if (!isCustom && feedback && reaction) {\n selectedFeedbackResponse = t('selected_noun', [\n reaction === 'liked' ? t('good_response') : t('bad_response')\n ]);\n\n feedbackAriaLabel = `${feedbackAriaLabel} ${selectedFeedbackResponse}`;\n }\n\n ariaLabel =\n suggestions && suggestions.length > 0\n ? `${feedbackAriaLabel} ${t('suggestions_in_message', [suggestions.length])}`\n : feedbackAriaLabel;\n\n const hasInteractiveContent = !!(\n suggestions?.length ||\n feedback ||\n messageActions ||\n toolState?.renderCandidatesTable\n );\n\n if (announceInteraction && hasInteractiveContent) {\n ariaLabel = `${ariaLabel} ${t('interaction_message')}`;\n }\n\n const onClickToolsConsidered = () => {\n modalMethodsRef.current = create(ToolCandidates, {\n loading: toolState?.loading,\n error: toolState?.error,\n renderCandidatesTable: toolState?.renderCandidatesTable\n });\n\n onViewToolsConsidered?.(messageId);\n };\n\n const streamingContent = isStreamingMessage && (\n <>\n {message ? (\n <>\n <StreamingContext.Provider value={streamingContext}>\n {isStringMessage ? (\n <RichTextViewer\n content={isStreamingMessage ? streamingMessage : message}\n type='markdown'\n markdownMap={markdownMap}\n />\n ) : (\n message\n )}\n </StreamingContext.Provider>\n\n {loading && <Progress variant='ellipsis' placement='inline' />}\n </>\n ) : (\n (loading || props.progressSteps?.length) && (\n <GenAIMessageProgress\n messages={props.progressSteps?.length ? props.progressSteps : undefined}\n completedSteps={\n props.progressSteps?.length ? props.progressStepsCompleted : undefined\n }\n />\n )\n )}\n </>\n );\n\n const messageContent = (\n <StyledMessage simplified={simplifiedAgent && !showSenderInfo}>\n {/* Streaming loader and content */}\n {streamingContent}\n\n {loading || error ? (\n <>\n {loading && !isStreamingMessage && (\n <LoadingContent\n message={isStringMessage ? message : undefined}\n markdownMap={markdownMap}\n progressSteps={props.progressSteps}\n progressStepsCompleted={props.progressStepsCompleted}\n />\n )}\n {error && <ErrorState message={error} />}\n </>\n ) : (\n <>\n {/* Non streaming content */}\n {!isStreamingMessage &&\n message &&\n (isStringMessage ? (\n <RichTextViewer content={message} type='markdown' markdownMap={markdownMap} />\n ) : (\n message\n ))}\n\n {props.isToolConfirmation && <ToolConfirmationMessage {...props} />}\n\n {((!isCustom && (feedback || onViewToolsConsidered)) || messageActions) && (\n <Flex\n container={{\n direction: 'row',\n gap: 1,\n pad: [1, undefined],\n alignItems: 'center'\n }}\n as={StyledActionsContainer}\n >\n {!isCustom && feedback && (\n <GenAIMessageFeedbackButtons messageId={messageId} feedback={feedback} />\n )}\n\n {!isCustom && onViewToolsConsidered && (\n <Button\n label={t('semantic_discovery_results')}\n variant='simple'\n icon\n compact\n onClick={onClickToolsConsidered}\n >\n <Icon name='brain' />\n </Button>\n )}\n\n {messageActions && <Actions {...messageActions} />}\n </Flex>\n )}\n\n {suggestions && suggestions.length > 0 && (\n <Flex\n as={StyledSuggestionsContainer}\n container={{ gap: 1, justify: 'end', wrap: 'wrap' }}\n >\n {suggestions.map(({ id, message: prompt, selected }) => {\n return (\n <Button\n as={StyledSuggestion}\n onClick={onSend ? () => onSend({ id, message: prompt }) : undefined}\n key={id}\n variant={selected ? 'primary' : undefined}\n >\n {prompt}\n </Button>\n );\n })}\n </Flex>\n )}\n </>\n )}\n </StyledMessage>\n );\n\n return (\n <ThemeOverride\n theme={{\n base: {\n palette: {\n 'foreground-color': agentForeground,\n ...(simplifiedAgent && {\n 'secondary-background': transparentize(\n 0.7,\n resolveContrastColor({\n background: agentForeground,\n theme\n })\n )\n })\n }\n }\n }}\n >\n <Flex\n as='li'\n data-testid={testIds.coachMessage}\n {...restProps}\n container={{ direction: 'row', pad: [1, 0], gap: 1 }}\n type='message'\n aria-label={ariaLabel}\n ref={ref}\n >\n {simplifiedAgent ? (\n <>\n {showSenderInfo && (\n <StyledGenAIAvatar size='l' name={coachName ?? t('agent')} icon='polaris-solid' />\n )}\n <Flex item={{ grow: 1 }} container={{ direction: 'column', gap: 0.75 }}>\n {coachName && showSenderInfo && (\n <StyledMessageSender variant='primary'>{coachName}</StyledMessageSender>\n )}\n {messageContent}\n </Flex>\n </>\n ) : (\n messageContent\n )}\n </Flex>\n </ThemeOverride>\n );\n }\n\n if (isUserMessage(props)) {\n if (plainTextMessage) {\n ariaLabel = t('you_asked', [plainTextMessage]);\n }\n\n if (announceInteraction) {\n ariaLabel = `${ariaLabel} ${t('interaction_message')}`;\n }\n\n const attachmentsAndMessage = (\n <>\n {props.attachments && props.attachments.length > 0 && (\n <StyledAttachmentsList type='display' items={props.attachments} />\n )}\n {props.message && <RichTextViewer content={props.message} type='markdown' />}\n </>\n );\n\n if (!simplifiedAgent) {\n return (\n <StyledUserMessage\n data-testid={testIds.userMessage}\n {...restProps}\n // @ts-expect-error FIXME: Need to validate if we can remove message, and double 'as'\n type='message'\n aria-label={ariaLabel}\n ref={ref}\n >\n {attachmentsAndMessage}\n </StyledUserMessage>\n );\n }\n\n return (\n <Flex\n as='li'\n data-testid={testIds.userMessage}\n {...restProps}\n container={{ direction: 'row', gap: 1, justify: 'end', alignItems: 'start' }}\n type='message'\n aria-label={ariaLabel}\n ref={ref}\n >\n <Flex container={{ direction: 'column', alignItems: 'end', gap: 0.75 }}>\n {props.userName !== undefined && (\n <StyledMessageSender variant='primary'>\n {props.userName.split(' ')[0] || t('you')}\n </StyledMessageSender>\n )}\n <StyledUserMessage as='div'>{attachmentsAndMessage}</StyledUserMessage>\n </Flex>\n {props.userName && <Avatar name={props.userName} size='l' shape='circle' />}\n </Flex>\n );\n }\n\n if (props.from === 'system') {\n const displayMessage = props.stopped && !message ? t('generation_stopped') : message;\n const systemAriaLabel = typeof displayMessage === 'string' ? displayMessage : ariaLabel;\n return (\n <StyledSystemMessage\n stopped={props.stopped}\n data-testid={testIds.userMessage}\n aria-label={systemAriaLabel}\n ref={ref}\n >\n {displayMessage}\n </StyledSystemMessage>\n );\n }\n\n return null;\n }\n);\n\nexport default GenAIMessage;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAIMessageFeedback.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAIMessageFeedback.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,oBAAoB,EAAY,MAAM,oBAAoB,CAAC;AAIzE,QAAA,MAAM,2BAA2B,GAAI,yBAAyB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"GenAIMessageFeedback.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAIMessageFeedback.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,oBAAoB,EAAY,MAAM,oBAAoB,CAAC;AAIzE,QAAA,MAAM,2BAA2B,GAAI,yBAAyB,oBAAoB,4CAsLjF,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
|
|
@@ -87,9 +87,9 @@ const GenAIMessageFeedbackButtons = ({ messageId, feedback }) => {
|
|
|
87
87
|
}, autoResize: false }) }));
|
|
88
88
|
const shouldShowIcon = !allowFeedbackResubmission && reaction;
|
|
89
89
|
if (shouldShowIcon) {
|
|
90
|
-
return (_jsxs(Flex, { container: { pad: [0.5, undefined] }, ref: seticonEl, tabIndex: -1, "aria-label": t('selected_noun', [isLikeActive ? t('good_response') : t('bad_response')]), role: 'status', children: [_jsx(Icon, { name: isLikeActive ? 'thumbs-up-solid' : 'thumbs-down-solid' }), _jsx(Tooltip, { target: iconEl, describeTarget: false, children: isLikeActive ? t('good_response') : t('bad_response') }), feedbackDialog] }));
|
|
90
|
+
return (_jsxs(Flex, { container: { pad: [0.5, undefined] }, ref: seticonEl, tabIndex: -1, "aria-label": t('selected_noun', [isLikeActive ? t('good_response') : t('bad_response')]), role: 'status', children: [_jsx(Icon, { name: isLikeActive ? 'thumbs-up-solid' : 'thumbs-down-solid', emphasized: true }), _jsx(Tooltip, { target: iconEl, describeTarget: false, children: isLikeActive ? t('good_response') : t('bad_response') }), feedbackDialog] }));
|
|
91
91
|
}
|
|
92
|
-
return (_jsxs(_Fragment, { children: [_jsxs(Flex, { container: { gap: 1 }, children: [_jsx(Button, { label: t('good_response'), variant: 'simple', icon: true, compact: true, ref: likeButtonRef, onClick: () => handleReactionClick('liked'), "aria-pressed": isLikeActive, children: _jsx(Icon, { name: isLikeActive ? 'thumbs-up-solid' : 'thumbs-up' }) }), _jsx(Button, { label: t('bad_response'), variant: 'simple', icon: true, compact: true, ref: dislikeButtonRef, onClick: () => handleReactionClick('disliked'), "aria-pressed": isDislikeActive, children: _jsx(Icon, { name: isDislikeActive ? 'thumbs-down-solid' : 'thumbs-down' }) })] }), feedbackDialog] }));
|
|
92
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Flex, { container: { gap: 1 }, children: [_jsx(Button, { label: t('good_response'), variant: 'simple', icon: true, compact: true, ref: likeButtonRef, onClick: () => handleReactionClick('liked'), "aria-pressed": isLikeActive, children: _jsx(Icon, { name: isLikeActive ? 'thumbs-up-solid' : 'thumbs-up', emphasized: isLikeActive }) }), _jsx(Button, { label: t('bad_response'), variant: 'simple', icon: true, compact: true, ref: dislikeButtonRef, onClick: () => handleReactionClick('disliked'), "aria-pressed": isDislikeActive, children: _jsx(Icon, { name: isDislikeActive ? 'thumbs-down-solid' : 'thumbs-down', emphasized: isDislikeActive }) })] }), feedbackDialog] }));
|
|
93
93
|
};
|
|
94
94
|
export default GenAIMessageFeedbackButtons;
|
|
95
95
|
//# sourceMappingURL=GenAIMessageFeedback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAIMessageFeedback.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAIMessageFeedback.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport {\n Button,\n Flex,\n FormDialog,\n Icon,\n TextArea,\n Tooltip,\n registerIcon,\n useElement,\n useI18n\n} from '@pega/cosmos-react-core';\nimport * as thumbsUpSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up-solid.icon';\nimport * as thumbsUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up.icon';\nimport * as thumbsDownSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down-solid.icon';\nimport * as thumbsDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down.icon';\n\nimport type { MessageFeedbackProps, Reaction } from './GenAICoach.types';\n\nregisterIcon(thumbsUpSolidIcon, thumbsUpIcon, thumbsDownSolidIcon, thumbsDownIcon);\n\nconst GenAIMessageFeedbackButtons = ({ messageId, feedback }: MessageFeedbackProps) => {\n const {\n reaction,\n feedbackText = '',\n allowFeedbackResubmission = false,\n promptFeedbackOn = 'disliked',\n onReaction,\n onFeedbackComplete\n } = feedback ?? {};\n\n const t = useI18n();\n\n const [feedbackVal, setFeedbackVal] = useState(feedbackText);\n const [showDialog, setShowDialog] = useState(false);\n\n const likeButtonRef = useRef<HTMLButtonElement>(null);\n const dislikeButtonRef = useRef<HTMLButtonElement>(null);\n const shouldOpenDialogRef = useRef(false);\n const [iconEl, seticonEl] = useElement<HTMLDivElement>();\n\n const isLikeActive = reaction === 'liked';\n const isDislikeActive = reaction === 'disliked';\n\n const needsDialog = (reactionType: Reaction) => {\n switch (promptFeedbackOn) {\n case 'disliked':\n return reactionType === 'disliked';\n case 'liked':\n return reactionType === 'liked';\n case 'both':\n return true;\n default:\n return false;\n }\n };\n\n const handleReactionClick = useCallback(\n (reactionType: Reaction) => {\n if (reaction === reactionType) {\n if (allowFeedbackResubmission) {\n onReaction?.(messageId, undefined);\n }\n\n return;\n }\n\n onReaction?.(messageId, reactionType);\n\n if (needsDialog(reactionType)) {\n if (reaction !== reactionType) {\n setFeedbackVal('');\n } else {\n setFeedbackVal(feedbackText);\n }\n\n if (!allowFeedbackResubmission) {\n shouldOpenDialogRef.current = true;\n } else {\n setShowDialog(true);\n }\n }\n },\n [reaction, feedbackText, allowFeedbackResubmission, promptFeedbackOn, messageId, onReaction]\n );\n\n const closeDialog = useCallback(\n (comment?: string) => {\n setShowDialog(false);\n shouldOpenDialogRef.current = false;\n\n onFeedbackComplete?.(messageId, comment);\n\n if (!allowFeedbackResubmission && iconEl) {\n iconEl.focus();\n }\n },\n [allowFeedbackResubmission, onFeedbackComplete, messageId, iconEl]\n );\n\n const getDialogTarget = () => {\n if (!allowFeedbackResubmission && iconEl) {\n return iconEl;\n }\n\n return isLikeActive ? likeButtonRef.current : dislikeButtonRef.current;\n };\n\n useEffect(() => {\n if (iconEl && shouldOpenDialogRef.current && !allowFeedbackResubmission) {\n setShowDialog(true);\n shouldOpenDialogRef.current = false;\n }\n }, [iconEl, allowFeedbackResubmission]);\n\n useEffect(() => {\n if (!showDialog && reaction && allowFeedbackResubmission) {\n const reactionButton =\n reaction === 'liked' ? likeButtonRef.current : dislikeButtonRef.current;\n reactionButton?.focus();\n }\n }, [showDialog, reaction, allowFeedbackResubmission]);\n\n const dialogTarget = getDialogTarget();\n\n const feedbackDialog = showDialog && dialogTarget && (\n <FormDialog\n target={dialogTarget}\n heading={t('share_feedback')}\n onCancel={() => closeDialog()}\n onSubmit={() => closeDialog(feedbackVal)}\n onKeyDown={e => e.stopPropagation()}\n >\n <TextArea\n value={feedbackVal}\n onChange={e => setFeedbackVal(e.target.value)}\n onKeyDown={(e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n closeDialog(feedbackVal);\n }\n }}\n autoResize={false}\n />\n </FormDialog>\n );\n\n const shouldShowIcon = !allowFeedbackResubmission && reaction;\n\n if (shouldShowIcon) {\n return (\n <Flex\n container={{ pad: [0.5, undefined] }}\n ref={seticonEl}\n tabIndex={-1}\n aria-label={t('selected_noun', [isLikeActive ? t('good_response') : t('bad_response')])}\n role='status'\n >\n <Icon name={isLikeActive ? 'thumbs-up-solid' : 'thumbs-down-solid'} />\n\n <Tooltip target={iconEl} describeTarget={false}>\n {isLikeActive ? t('good_response') : t('bad_response')}\n </Tooltip>\n\n {feedbackDialog}\n </Flex>\n );\n }\n\n return (\n <>\n <Flex container={{ gap: 1 }}>\n <Button\n label={t('good_response')}\n variant='simple'\n icon\n compact\n ref={likeButtonRef}\n onClick={() => handleReactionClick('liked')}\n aria-pressed={isLikeActive}\n >\n <Icon name={isLikeActive ? 'thumbs-up-solid' : 'thumbs-up'} />\n </Button>\n\n <Button\n label={t('bad_response')}\n variant='simple'\n icon\n compact\n ref={dislikeButtonRef}\n onClick={() => handleReactionClick('disliked')}\n aria-pressed={isDislikeActive}\n >\n <Icon name={isDislikeActive ? 'thumbs-down-solid' : 'thumbs-down'} />\n </Button>\n </Flex>\n\n {feedbackDialog}\n </>\n );\n};\n\nexport default GenAIMessageFeedbackButtons;\n"]}
|
|
1
|
+
{"version":3,"file":"GenAIMessageFeedback.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAIMessageFeedback.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport {\n Button,\n Flex,\n FormDialog,\n Icon,\n TextArea,\n Tooltip,\n registerIcon,\n useElement,\n useI18n\n} from '@pega/cosmos-react-core';\nimport * as thumbsUpSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up-solid.icon';\nimport * as thumbsUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up.icon';\nimport * as thumbsDownSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down-solid.icon';\nimport * as thumbsDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down.icon';\n\nimport type { MessageFeedbackProps, Reaction } from './GenAICoach.types';\n\nregisterIcon(thumbsUpSolidIcon, thumbsUpIcon, thumbsDownSolidIcon, thumbsDownIcon);\n\nconst GenAIMessageFeedbackButtons = ({ messageId, feedback }: MessageFeedbackProps) => {\n const {\n reaction,\n feedbackText = '',\n allowFeedbackResubmission = false,\n promptFeedbackOn = 'disliked',\n onReaction,\n onFeedbackComplete\n } = feedback ?? {};\n\n const t = useI18n();\n\n const [feedbackVal, setFeedbackVal] = useState(feedbackText);\n const [showDialog, setShowDialog] = useState(false);\n\n const likeButtonRef = useRef<HTMLButtonElement>(null);\n const dislikeButtonRef = useRef<HTMLButtonElement>(null);\n const shouldOpenDialogRef = useRef(false);\n const [iconEl, seticonEl] = useElement<HTMLDivElement>();\n\n const isLikeActive = reaction === 'liked';\n const isDislikeActive = reaction === 'disliked';\n\n const needsDialog = (reactionType: Reaction) => {\n switch (promptFeedbackOn) {\n case 'disliked':\n return reactionType === 'disliked';\n case 'liked':\n return reactionType === 'liked';\n case 'both':\n return true;\n default:\n return false;\n }\n };\n\n const handleReactionClick = useCallback(\n (reactionType: Reaction) => {\n if (reaction === reactionType) {\n if (allowFeedbackResubmission) {\n onReaction?.(messageId, undefined);\n }\n\n return;\n }\n\n onReaction?.(messageId, reactionType);\n\n if (needsDialog(reactionType)) {\n if (reaction !== reactionType) {\n setFeedbackVal('');\n } else {\n setFeedbackVal(feedbackText);\n }\n\n if (!allowFeedbackResubmission) {\n shouldOpenDialogRef.current = true;\n } else {\n setShowDialog(true);\n }\n }\n },\n [reaction, feedbackText, allowFeedbackResubmission, promptFeedbackOn, messageId, onReaction]\n );\n\n const closeDialog = useCallback(\n (comment?: string) => {\n setShowDialog(false);\n shouldOpenDialogRef.current = false;\n\n onFeedbackComplete?.(messageId, comment);\n\n if (!allowFeedbackResubmission && iconEl) {\n iconEl.focus();\n }\n },\n [allowFeedbackResubmission, onFeedbackComplete, messageId, iconEl]\n );\n\n const getDialogTarget = () => {\n if (!allowFeedbackResubmission && iconEl) {\n return iconEl;\n }\n\n return isLikeActive ? likeButtonRef.current : dislikeButtonRef.current;\n };\n\n useEffect(() => {\n if (iconEl && shouldOpenDialogRef.current && !allowFeedbackResubmission) {\n setShowDialog(true);\n shouldOpenDialogRef.current = false;\n }\n }, [iconEl, allowFeedbackResubmission]);\n\n useEffect(() => {\n if (!showDialog && reaction && allowFeedbackResubmission) {\n const reactionButton =\n reaction === 'liked' ? likeButtonRef.current : dislikeButtonRef.current;\n reactionButton?.focus();\n }\n }, [showDialog, reaction, allowFeedbackResubmission]);\n\n const dialogTarget = getDialogTarget();\n\n const feedbackDialog = showDialog && dialogTarget && (\n <FormDialog\n target={dialogTarget}\n heading={t('share_feedback')}\n onCancel={() => closeDialog()}\n onSubmit={() => closeDialog(feedbackVal)}\n onKeyDown={e => e.stopPropagation()}\n >\n <TextArea\n value={feedbackVal}\n onChange={e => setFeedbackVal(e.target.value)}\n onKeyDown={(e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n closeDialog(feedbackVal);\n }\n }}\n autoResize={false}\n />\n </FormDialog>\n );\n\n const shouldShowIcon = !allowFeedbackResubmission && reaction;\n\n if (shouldShowIcon) {\n return (\n <Flex\n container={{ pad: [0.5, undefined] }}\n ref={seticonEl}\n tabIndex={-1}\n aria-label={t('selected_noun', [isLikeActive ? t('good_response') : t('bad_response')])}\n role='status'\n >\n <Icon name={isLikeActive ? 'thumbs-up-solid' : 'thumbs-down-solid'} emphasized />\n\n <Tooltip target={iconEl} describeTarget={false}>\n {isLikeActive ? t('good_response') : t('bad_response')}\n </Tooltip>\n\n {feedbackDialog}\n </Flex>\n );\n }\n\n return (\n <>\n <Flex container={{ gap: 1 }}>\n <Button\n label={t('good_response')}\n variant='simple'\n icon\n compact\n ref={likeButtonRef}\n onClick={() => handleReactionClick('liked')}\n aria-pressed={isLikeActive}\n >\n <Icon name={isLikeActive ? 'thumbs-up-solid' : 'thumbs-up'} emphasized={isLikeActive} />\n </Button>\n\n <Button\n label={t('bad_response')}\n variant='simple'\n icon\n compact\n ref={dislikeButtonRef}\n onClick={() => handleReactionClick('disliked')}\n aria-pressed={isDislikeActive}\n >\n <Icon\n name={isDislikeActive ? 'thumbs-down-solid' : 'thumbs-down'}\n emphasized={isDislikeActive}\n />\n </Button>\n </Flex>\n\n {feedbackDialog}\n </>\n );\n};\n\nexport default GenAIMessageFeedbackButtons;\n"]}
|
|
@@ -1 +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;AAgN5B,QAAA,MAAM,aAAa,GAAI,8BAA8B,kBAAkB,
|
|
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;AAgN5B,QAAA,MAAM,aAAa,GAAI,8BAA8B,kBAAkB,mDAuGtE,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback, useMemo, useState } from 'react';
|
|
2
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
3
3
|
import { Button, Card, CardContent, CardFooter, CardHeader, Checkbox, CheckboxGroup, ComboBox, Flex, Icon, RadioButton, RadioButtonGroup, Text, useI18n, registerIcon } from '@pega/cosmos-react-core';
|
|
4
4
|
import * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';
|
|
5
5
|
import { StyledComboBoxWrapper, StyledQuestionBlock, StyledQuestionnaireCard } from './GenAICoach.styles';
|
|
@@ -100,12 +100,12 @@ const QuestionItem = ({ question, answer, onChange }) => {
|
|
|
100
100
|
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;
|
|
101
101
|
const inlineRadioButtons = inlineOptions.map(option => (_jsx(RadioButton, { label: getLabel(option), name: question.field, checked: isSelected(option.key), onChange: () => handleInlineSelect(option.key) }, option.key)));
|
|
102
102
|
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)));
|
|
103
|
-
return (_jsx(StyledQuestionBlock, { children: isSingleSelect ? (_jsx(RadioButtonGroup, { name: question.field, labelHidden: true, children: overflowComboBox
|
|
103
|
+
return (_jsx(StyledQuestionBlock, { children: isSingleSelect ? (_jsx(RadioButtonGroup, { name: question.field, label: question.questionText, labelHidden: true, children: overflowComboBox
|
|
104
104
|
? [
|
|
105
105
|
...inlineRadioButtons,
|
|
106
106
|
_jsx(RadioButton, { label: overflowComboBox, name: question.field, checked: isOverflowSelected, onChange: activateOverflow }, 'overflow')
|
|
107
107
|
]
|
|
108
|
-
: inlineRadioButtons })) : (_jsx(CheckboxGroup, { labelHidden: true, children: overflowComboBox
|
|
108
|
+
: inlineRadioButtons })) : (_jsx(CheckboxGroup, { label: question.questionText, labelHidden: true, children: overflowComboBox
|
|
109
109
|
? [
|
|
110
110
|
...inlineCheckboxes,
|
|
111
111
|
_jsx(Checkbox, { label: overflowComboBox, checked: answer.value.some(v => overflowKeySet.has(v)), onChange: e => {
|
|
@@ -121,6 +121,13 @@ const Questionnaire = ({ data, onChange, onCancel }) => {
|
|
|
121
121
|
const totalSteps = questions.length;
|
|
122
122
|
const [currentStep, setCurrentStep] = useState(0);
|
|
123
123
|
const [answers, setAnswers] = useState(() => buildInitialAnswers(questions));
|
|
124
|
+
// Resync local answers/step whenever a new questionnaire arrives. Relying only on the parent's
|
|
125
|
+
// `key` remount isn't enough here, since two different conversations can share the same field
|
|
126
|
+
// names, which would otherwise reuse this instance and carry over the previous chat's selections.
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
setCurrentStep(0);
|
|
129
|
+
setAnswers(buildInitialAnswers(questions));
|
|
130
|
+
}, [data]);
|
|
124
131
|
const handleChange = useCallback((field, key, selected) => {
|
|
125
132
|
setAnswers(prev => {
|
|
126
133
|
const question = questions.find(q => q.field === field);
|
|
@@ -1 +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';\nimport { getSelectedKeys } from './GenAICoach.utils';\n\nregisterIcon(timesIcon);\n\nconst getLabel = (option: OptionItem): string => option.displayLabel ?? option.label;\n\nconst createAnswer = (question: Question): FormAnswer => ({\n value: getSelectedKeys(question),\n questionText: question.questionText\n});\n\nconst buildInitialAnswers = (questions: Question[]): Record<string, FormAnswer> =>\n Object.fromEntries(questions.map(q => [q.field, createAnswer(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 [searchTerm, setSearchTerm] = useState('');\n\n const overflowKeySet = useMemo(() => new Set(overflowOptions.map(o => o.key)), [overflowOptions]);\n const overflowOptionsByKey = useMemo(\n () => new Map(overflowOptions.map(o => [o.key, o])),\n [overflowOptions]\n );\n const activeOverflowKey = answer.value.find(v => overflowKeySet.has(v)) ?? '';\n const isOverflowSelected = activeOverflowKey.length > 0;\n\n const isSelected = (key: string) => answer.value.includes(key);\n\n const clearOverflowState = () => {\n setSearchTerm('');\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 (!activeOverflowKey) return undefined;\n\n const option = overflowOptionsByKey.get(activeOverflowKey);\n const displayText = option ? getLabel(option) : activeOverflowKey;\n\n return { items: { id: activeOverflowKey, 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 activeOverflowKey,\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 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 setSearchTerm('');\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={isOverflowSelected}\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]: {\n questionText: question?.questionText ?? prev[field]?.questionText ?? '',\n value: updatedValues\n }\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] ?? createAnswer(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"]}
|
|
1
|
+
{"version":3,"file":"Questionnaire.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/Questionnaire.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EACL,MAAM,EACN,IAAI,EACJ,WAAW,EACX,UAAU,EACV,UAAU,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,IAAI,EACJ,OAAO,EACP,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,SAAS,MAAM,8DAA8D,CAAC;AAS1F,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,YAAY,CAAC,SAAS,CAAC,CAAC;AAExB,MAAM,QAAQ,GAAG,CAAC,MAAkB,EAAU,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC;AAErF,MAAM,YAAY,GAAG,CAAC,QAAkB,EAAc,EAAE,CAAC,CAAC;IACxD,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC;IAChC,YAAY,EAAE,QAAQ,CAAC,YAAY;CACpC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,SAAqB,EAA8B,EAAE,CAChF,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE,MAAM,YAAY,GAAG,CACnB,WAAyB,EACzB,gBAAwB,EACwC,EAAE;IAClE,IAAI,WAAW,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;QAC3C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC;QACzD,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;KACzD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACzE,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC;IAClD,MAAM,gBAAgB,GAAG,CAAC,CAAC;IAE3B,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAChG,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEjD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAClG,MAAM,oBAAoB,GAAG,OAAO,CAClC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EACnD,CAAC,eAAe,CAAC,CAClB,CAAC;IACF,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE/D,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,aAAa,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE;QACzC,kBAAkB,EAAE,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAoB,OAAO,CAAC,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAExC,OAAO,eAAe;aACnB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACX,EAAE,EAAE,GAAG,CAAC,GAAG;YACX,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC;YACtB,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;SAC9B,CAAC,CAAC;aACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAEzB,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,iBAAiB;gBAAE,OAAO,SAAS,CAAC;YAEzC,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAElE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;QACjE,CAAC;QAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/E,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAE1D,OAAO;YACL,KAAK,EAAE,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACtC,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAC5D,CAAC,CAAC;YACF,QAAQ,EAAE,CAAC,EAAuB,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC;SAC3E,CAAC;IACJ,CAAC,EAAE;QACD,cAAc;QACd,iBAAiB;QACjB,MAAM;QACN,cAAc;QACd,oBAAoB;QACpB,QAAQ,CAAC,KAAK;QACd,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,EAAuB,EAAE,EAAE;QAC1B,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAE5C,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,EAAE,CAAC,CAAC;gBAClB,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,EACD,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CACzE,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,aAAa,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,MAAM,CAAC,KAAK;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,CACrC,KAAC,qBAAqB,cACpB,KAAC,QAAQ,IACP,WAAW,QACX,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,CAAC,CAAgC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7E,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,EAC/B,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EACjD,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,GACrE,GACoB,CACzB,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACrD,KAAC,WAAW,IAEV,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,IAAI,EAAE,QAAQ,CAAC,KAAK,EACpB,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,IAJzC,MAAM,CAAC,GAAG,CAKf,CACH,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACnD,KAAC,QAAQ,IAEP,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAHhE,MAAM,CAAC,GAAG,CAIf,CACH,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,mBAAmB,cACjB,cAAc,CAAC,CAAC,CAAC,CAChB,KAAC,gBAAgB,IAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,WAAW,kBAC9E,gBAAgB;gBACf,CAAC,CAAC;oBACE,GAAG,kBAAkB;oBACrB,KAAC,WAAW,IAEV,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,QAAQ,CAAC,KAAK,EACpB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,gBAAgB,IAJtB,UAAU,CAKd;iBACH;gBACH,CAAC,CAAC,kBAAkB,GACL,CACpB,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,WAAW,kBACrD,gBAAgB;gBACf,CAAC,CAAC;oBACE,GAAG,gBAAgB;oBACnB,KAAC,QAAQ,IAEP,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACtD,QAAQ,EAAE,CAAC,CAAC,EAAE;4BACZ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;gCAAE,mBAAmB,EAAE,CAAC;wBAC/C,CAAC,IALG,UAAU,CAMd;iBACH;gBACH,CAAC,CAAC,gBAAgB,GACN,CACjB,GACmB,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAsB,EAAE,EAAE;IACzE,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;IAEpC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA6B,GAAG,EAAE,CACtE,mBAAmB,CAAC,SAAS,CAAC,CAC/B,CAAC;IAEF,+FAA+F;IAC/F,8FAA8F;IAC9F,kGAAkG;IAClG,SAAS,CAAC,GAAG,EAAE;QACb,cAAc,CAAC,CAAC,CAAC,CAAC;QAClB,UAAU,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,KAAa,EAAE,GAAW,EAAE,QAAiB,EAAE,EAAE;QAChD,UAAU,CAAC,IAAI,CAAC,EAAE;YAChB,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YAC/C,IAAI,aAAuB,CAAC;YAE5B,IAAI,QAAQ,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC5F,CAAC;YAED,MAAM,WAAW,GAAG;gBAClB,GAAG,IAAI;gBACP,CAAC,KAAK,CAAC,EAAE;oBACP,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,IAAI,EAAE;oBACvE,KAAK,EAAE,aAAa;iBACrB;aACF,CAAC;YAEF,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEtB,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,EAAE,SAAS,CAAC,CACtB,CAAC;IAEF,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;IACnF,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC;IAEnC,OAAO,CACL,MAAC,IAAI,IAAC,EAAE,EAAE,uBAAuB,aAC/B,KAAC,UAAU,IACT,OAAO,EACL,KAAC,MAAM,IAAC,OAAO,EAAC,QAAQ,EAAC,IAAI,QAAC,OAAO,EAAE,QAAQ,gBAAc,CAAC,CAAC,SAAS,CAAC,YACvE,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,GAAG,GACd,YAGX,KAAC,IAAI,IAAC,OAAO,EAAC,IAAI,YAAE,cAAc,CAAC,YAAY,GAAQ,GAC5C,EAEb,KAAC,WAAW,cACV,KAAC,YAAY,IAEX,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,YAAY,IAHjB,cAAc,CAAC,KAAK,CAIzB,GACU,EAEb,WAAW,IAAI,CACd,KAAC,UAAU,IAAC,OAAO,EAAC,QAAQ,YAC1B,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,aACnE,KAAC,MAAM,IACL,OAAO,EAAC,QAAQ,EAChB,IAAI,QACJ,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EACzC,QAAQ,EAAE,WAAW,KAAK,CAAC,gBACf,CAAC,CAAC,iBAAiB,CAAC,YAEhC,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,GAAG,GACnB,EAET,KAAC,IAAI,IAAC,OAAO,EAAC,WAAW,YAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,GAAQ,EAE7E,KAAC,MAAM,IACL,OAAO,EAAC,QAAQ,EAChB,IAAI,QACJ,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EACzC,QAAQ,EAAE,WAAW,KAAK,UAAU,GAAG,CAAC,gBAC5B,CAAC,CAAC,iBAAiB,CAAC,YAEhC,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,GAAG,GACpB,IACJ,GACI,CACd,IACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import type { ChangeEvent } from 'react';\nimport { useCallback, useEffect, 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';\nimport { getSelectedKeys } from './GenAICoach.utils';\n\nregisterIcon(timesIcon);\n\nconst getLabel = (option: OptionItem): string => option.displayLabel ?? option.label;\n\nconst createAnswer = (question: Question): FormAnswer => ({\n value: getSelectedKeys(question),\n questionText: question.questionText\n});\n\nconst buildInitialAnswers = (questions: Question[]): Record<string, FormAnswer> =>\n Object.fromEntries(questions.map(q => [q.field, createAnswer(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 [searchTerm, setSearchTerm] = useState('');\n\n const overflowKeySet = useMemo(() => new Set(overflowOptions.map(o => o.key)), [overflowOptions]);\n const overflowOptionsByKey = useMemo(\n () => new Map(overflowOptions.map(o => [o.key, o])),\n [overflowOptions]\n );\n const activeOverflowKey = answer.value.find(v => overflowKeySet.has(v)) ?? '';\n const isOverflowSelected = activeOverflowKey.length > 0;\n\n const isSelected = (key: string) => answer.value.includes(key);\n\n const clearOverflowState = () => {\n setSearchTerm('');\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 (!activeOverflowKey) return undefined;\n\n const option = overflowOptionsByKey.get(activeOverflowKey);\n const displayText = option ? getLabel(option) : activeOverflowKey;\n\n return { items: { id: activeOverflowKey, 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 activeOverflowKey,\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 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 setSearchTerm('');\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} label={question.questionText} labelHidden>\n {overflowComboBox\n ? [\n ...inlineRadioButtons,\n <RadioButton\n key='overflow'\n label={overflowComboBox}\n name={question.field}\n checked={isOverflowSelected}\n onChange={activateOverflow}\n />\n ]\n : inlineRadioButtons}\n </RadioButtonGroup>\n ) : (\n <CheckboxGroup label={question.questionText} 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 // Resync local answers/step whenever a new questionnaire arrives. Relying only on the parent's\n // `key` remount isn't enough here, since two different conversations can share the same field\n // names, which would otherwise reuse this instance and carry over the previous chat's selections.\n useEffect(() => {\n setCurrentStep(0);\n setAnswers(buildInitialAnswers(questions));\n }, [data]);\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]: {\n questionText: question?.questionText ?? prev[field]?.questionText ?? '',\n value: updatedValues\n }\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] ?? createAnswer(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"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { default, AgentIcon } from './GenAICoach';
|
|
2
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';
|
|
3
|
+
export type { GenAICoachProps, GenAIMessageProps, UserMessageProps, CoachMessageProps, MessageProps, UtilitiesGenAICoachProps, SendMessageProps, State, ActiveCaseItem, CaseWorkflowProps, CaseWorkflowStageProps, CaseDetails, QuestionnaireConfig, AgentModeProps, ModelSelectorProps } from './GenAICoach.types';
|
|
4
4
|
export { default as GenAIMessage, StreamingContext } from './GenAIMessage';
|
|
5
5
|
export { default as InitialSuggestedMessage } from './InitialSuggestedMessage';
|
|
6
6
|
export { isUserMessage, isCoachMessage } from './GenAICoach.utils';
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,EACnB,cAAc,EACd,kBAAkB,EACnB,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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;
|
|
1
|
+
{"version":3,"file":"index.js","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;AAkBzE,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","sourcesContent":["export { default, AgentIcon } from './GenAICoach';\nexport { default as PortalAgentSplitView } from './PortalAgentSplitView';\nexport type {\n GenAICoachProps,\n GenAIMessageProps,\n UserMessageProps,\n CoachMessageProps,\n MessageProps,\n UtilitiesGenAICoachProps,\n SendMessageProps,\n State,\n ActiveCaseItem,\n CaseWorkflowProps,\n CaseWorkflowStageProps,\n CaseDetails,\n QuestionnaireConfig,\n AgentModeProps,\n ModelSelectorProps\n} from './GenAICoach.types';\nexport { default as GenAIMessage, StreamingContext } from './GenAIMessage';\nexport { default as InitialSuggestedMessage } from './InitialSuggestedMessage';\nexport { isUserMessage, isCoachMessage } from './GenAICoach.utils';\nexport { AISuggestedBadge } from './GenAICoach';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntelligentGuidance.styles.d.ts","sourceRoot":"","sources":["../../../src/components/IntelligentGuidance/IntelligentGuidance.styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IntelligentGuidance.styles.d.ts","sourceRoot":"","sources":["../../../src/components/IntelligentGuidance/IntelligentGuidance.styles.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,SAAS;;yLAuBpB,CAAC;AAIH,eAAO,MAAM,gBAAgB,+NAgB3B,CAAC;AAIH,eAAO,MAAM,6BAA6B;;gMAgDxC,CAAC;AAIH,eAAO,MAAM,iBAAiB,6NAkB5B,CAAC;AAIH,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,yBAAyB,6YAsHpC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import styled, { css } from 'styled-components';
|
|
2
2
|
import { lighten, rgba, transparentize } from 'polished';
|
|
3
|
-
import { defaultThemeProp, StyledButton, StyledCard, StyledFlex, StyledIcon, StyledEmptyState, SummaryList, StyledText, tryCatch, StyledSummaryItem, StyledVisual,
|
|
3
|
+
import { defaultThemeProp, StyledButton, StyledCard, StyledFlex, StyledIcon, StyledEmptyState, SummaryList, StyledText, tryCatch, StyledSummaryItem, StyledVisual, resolveContrastColor, Text, calculateFontSize, StyledSecondary, calculateBackgroundAndContrastColor, calculateForegroundColor } from '@pega/cosmos-react-core';
|
|
4
4
|
import { StyledCardHeader } from '@pega/cosmos-react-core/lib/components/Card/CardHeader';
|
|
5
5
|
import { StyledTab } from '@pega/cosmos-react-core/lib/components/Tabs/Tab';
|
|
6
6
|
import { StyledCount } from '@pega/cosmos-react-core/lib/components/Badges/Count';
|
|
@@ -8,8 +8,15 @@ import { StyledTabs } from '@pega/cosmos-react-core/lib/components/Tabs/Tabs.sty
|
|
|
8
8
|
import { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';
|
|
9
9
|
const itemIconSize = '2rem';
|
|
10
10
|
export const StyledNew = styled(Text)(({ theme }) => {
|
|
11
|
-
const readableBackground =
|
|
12
|
-
|
|
11
|
+
const readableBackground = resolveContrastColor({
|
|
12
|
+
background: theme.base.palette['primary-background'],
|
|
13
|
+
foreground: theme.base.palette['brand-primary'],
|
|
14
|
+
theme
|
|
15
|
+
});
|
|
16
|
+
const readableTextColor = resolveContrastColor({
|
|
17
|
+
background: readableBackground,
|
|
18
|
+
theme
|
|
19
|
+
});
|
|
13
20
|
const fontSize = calculateFontSize(theme.base['font-size'], theme.base['font-scale']);
|
|
14
21
|
return css `
|
|
15
22
|
position: absolute;
|
|
@@ -25,7 +32,11 @@ export const StyledNew = styled(Text)(({ theme }) => {
|
|
|
25
32
|
});
|
|
26
33
|
StyledNew.defaultProps = defaultThemeProp;
|
|
27
34
|
export const StyledBorderLine = styled.span(({ theme }) => {
|
|
28
|
-
const readableBackground =
|
|
35
|
+
const readableBackground = resolveContrastColor({
|
|
36
|
+
background: theme.base.palette['primary-background'],
|
|
37
|
+
foreground: theme.base.palette['brand-primary'],
|
|
38
|
+
theme
|
|
39
|
+
});
|
|
29
40
|
return css `
|
|
30
41
|
position: absolute;
|
|
31
42
|
inset-block-start: 0;
|
|
@@ -40,8 +51,8 @@ StyledBorderLine.defaultProps = defaultThemeProp;
|
|
|
40
51
|
export const StyledIntelligentGuidanceList = styled(SummaryList)(({ theme }) => {
|
|
41
52
|
const navBg = theme.components['app-shell'].nav.background;
|
|
42
53
|
const navFgColor = theme.components['app-shell'].nav['foreground-color'];
|
|
43
|
-
const computedFgColor = calculateForegroundColor(navBg, navFgColor);
|
|
44
|
-
const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor);
|
|
54
|
+
const computedFgColor = calculateForegroundColor(navBg, navFgColor, theme);
|
|
55
|
+
const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor, theme);
|
|
45
56
|
const borderColor = tryCatch(() => lighten(0.1, contrastColor));
|
|
46
57
|
const secondaryColor = tryCatch(() => rgba(computedFgColor, theme.base.transparency['transparent-2']));
|
|
47
58
|
return css `
|
|
@@ -87,7 +98,7 @@ StyledIntelligentGuidanceList.defaultProps = defaultThemeProp;
|
|
|
87
98
|
export const StyledPrimaryItem = styled.div(({ theme }) => {
|
|
88
99
|
const navBg = theme.components['app-shell'].nav.background;
|
|
89
100
|
const navFgColor = theme.components['app-shell'].nav['foreground-color'];
|
|
90
|
-
const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor);
|
|
101
|
+
const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor, theme);
|
|
91
102
|
return css `
|
|
92
103
|
padding: ${theme.base.spacing} calc(0.5 * ${theme.base.spacing});
|
|
93
104
|
|
|
@@ -106,8 +117,8 @@ StyledPrimaryItem.defaultProps = defaultThemeProp;
|
|
|
106
117
|
export const StyledIntelligentGuidance = styled(StyledCard)(({ theme, isCollapsed }) => {
|
|
107
118
|
const navBg = theme.components['app-shell'].nav.background;
|
|
108
119
|
const navFgColor = theme.components['app-shell'].nav['foreground-color'];
|
|
109
|
-
const computedFgColor = calculateForegroundColor(navBg, navFgColor);
|
|
110
|
-
const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor);
|
|
120
|
+
const computedFgColor = calculateForegroundColor(navBg, navFgColor, theme);
|
|
121
|
+
const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor, theme);
|
|
111
122
|
const borderColor = tryCatch(() => lighten(0.1, contrastColor));
|
|
112
123
|
const tabPrimaryColor = theme.base.colors.blue.light;
|
|
113
124
|
const lightenedTabColor = tryCatch(() => transparentize(0.3, tabPrimaryColor)) ?? '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntelligentGuidance.styles.js","sourceRoot":"","sources":["../../../src/components/IntelligentGuidance/IntelligentGuidance.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import styled, { css } from 'styled-components';\nimport { lighten, rgba, transparentize } from 'polished';\n\nimport {\n defaultThemeProp,\n StyledButton,\n StyledCard,\n StyledFlex,\n StyledIcon,\n StyledEmptyState,\n SummaryList,\n StyledText,\n tryCatch,\n StyledSummaryItem,\n StyledVisual,\n readableColor,\n readableHue,\n Text,\n calculateFontSize,\n StyledSecondary,\n calculateBackgroundAndContrastColor,\n calculateForegroundColor\n} from '@pega/cosmos-react-core';\nimport { StyledCardHeader } from '@pega/cosmos-react-core/lib/components/Card/CardHeader';\nimport { StyledTab } from '@pega/cosmos-react-core/lib/components/Tabs/Tab';\nimport { StyledCount } from '@pega/cosmos-react-core/lib/components/Badges/Count';\nimport { StyledTabs } from '@pega/cosmos-react-core/lib/components/Tabs/Tabs.styles';\nimport { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';\n\nconst itemIconSize = '2rem';\n\nexport const StyledNew = styled(Text)(({ theme }) => {\n const readableBackground = readableHue(\n theme.base.palette['brand-primary'],\n theme.base.palette['primary-background']\n );\n const readableTextColor = readableColor(readableBackground);\n const fontSize = calculateFontSize(theme.base['font-size'], theme.base['font-scale']);\n\n return css`\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n text-transform: uppercase;\n background-color: ${readableBackground};\n color: ${readableTextColor};\n padding-inline: calc(0.75 * ${theme.base.spacing});\n font-size: ${fontSize.xxs};\n font-weight: ${theme.base['font-weight']['semi-bold']};\n `;\n});\n\nStyledNew.defaultProps = defaultThemeProp;\n\nexport const StyledBorderLine = styled.span(({ theme }) => {\n const readableBackground = readableHue(\n theme.base.palette['brand-primary'],\n theme.base.palette['primary-background']\n );\n\n return css`\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n content: '';\n background-color: ${readableBackground};\n height: 100%;\n width: 0.125rem;\n `;\n});\n\nStyledBorderLine.defaultProps = defaultThemeProp;\n\nexport const StyledIntelligentGuidanceList = styled(SummaryList)(({ theme }) => {\n const navBg = theme.components['app-shell'].nav.background;\n const navFgColor = theme.components['app-shell'].nav['foreground-color'];\n const computedFgColor = calculateForegroundColor(navBg, navFgColor);\n const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor);\n const borderColor = tryCatch(() => lighten(0.1, contrastColor));\n const secondaryColor = tryCatch(() =>\n rgba(computedFgColor, theme.base.transparency['transparent-2'])\n );\n\n return css`\n max-height: min(calc(100vh - var(--headerHeight) - 4ch), 21ch);\n overflow: auto;\n background-color: ${navBg};\n\n ${theme.base.animation.timing.ease};\n\n ${StyledSummaryItem} {\n position: relative;\n padding: 0 ${theme.base.spacing};\n outline: none;\n\n &:not(:first-of-type) {\n border-top: ${theme.components.button['border-width']} solid ${borderColor};\n }\n\n ${StyledVisual} ${StyledIcon} {\n width: ${itemIconSize};\n height: ${itemIconSize};\n padding: calc(0.75 * ${theme.base.spacing});\n }\n\n ${StyledSecondary} ${StyledText} {\n color: ${secondaryColor};\n }\n\n &:not(:last-child) {\n border-bottom: none;\n }\n }\n\n ${StyledEmptyState} {\n padding-block: ${theme.base.spacing};\n ${StyledIcon}, ${StyledText} {\n color: ${computedFgColor};\n }\n }\n `;\n});\n\nStyledIntelligentGuidanceList.defaultProps = defaultThemeProp;\n\nexport const StyledPrimaryItem = styled.div(({ theme }) => {\n const navBg = theme.components['app-shell'].nav.background;\n const navFgColor = theme.components['app-shell'].nav['foreground-color'];\n const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor);\n\n return css`\n padding: ${theme.base.spacing} calc(0.5 * ${theme.base.spacing});\n\n &:hover {\n background-color: ${contrastColor};\n cursor: pointer;\n }\n\n &:enabled:focus-visible,\n &:not([disabled]):focus-visible {\n box-shadow: ${theme.base.shadow['focus-inset']};\n }\n `;\n});\n\nStyledPrimaryItem.defaultProps = defaultThemeProp;\n\nexport interface StyledIntelligentGuidanceProps {\n isCollapsed: boolean;\n hasItems: boolean;\n}\n\nexport const StyledIntelligentGuidance = styled(StyledCard)<StyledIntelligentGuidanceProps>(({\n theme,\n isCollapsed\n}) => {\n const navBg = theme.components['app-shell'].nav.background;\n const navFgColor = theme.components['app-shell'].nav['foreground-color'];\n const computedFgColor = calculateForegroundColor(navBg, navFgColor);\n const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor);\n const borderColor = tryCatch(() => lighten(0.1, contrastColor));\n const tabPrimaryColor = theme.base.colors.blue.light;\n const lightenedTabColor = tryCatch(() => transparentize(0.3, tabPrimaryColor)) ?? '';\n\n return css`\n position: fixed;\n inset-inline-start: calc(2 * ${theme.base.spacing} + var(--appshell-horizontal-offset, 0rem));\n transition:\n inset-inline-start ${theme.base.animation.speed} ${theme.base.animation.timing.ease},\n transform calc(4 * ${theme.base.animation.speed}) ${theme.base.animation.timing.ease};\n bottom: var(--appshell-bottom-offset, 0);\n z-index: ${theme.base['z-index'].popover};\n min-width: 20rem;\n max-width: 20rem;\n color: ${computedFgColor};\n overflow: hidden;\n box-shadow: ${theme.base.shadow.low};\n\n @media (height <= ${theme.base.breakpoints.sm}) {\n position: absolute;\n transition: none;\n inset-inline-start: calc(2 * ${theme.base.spacing});\n min-inline-size: calc(100% - (4 * ${theme.base.spacing}));\n min-block-size: 3rem;\n\n ${isCollapsed &&\n css`\n ${StyledCardHeader} ~ * {\n display: none;\n }\n `}\n }\n\n @media (min-width: ${theme.base.breakpoints.lg}) {\n min-width: 23rem;\n max-width: 23rem;\n }\n\n ${isCollapsed &&\n css`\n transform: translateY(calc(100% - var(--headerHeight)));\n `}\n\n &:not(& &) {\n background: ${navBg};\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n ${StyledCardHeader} {\n & ${StyledButton} {\n transition: transform calc(2 * ${theme.base.animation.speed})\n ${theme.base.animation.timing.ease};\n transform: ${isCollapsed ? 'rotate(-180deg)' : 'rotate(0)'};\n }\n\n &:not(${StyledCard} ${StyledCard} > &) {\n padding: ${theme.base.spacing};\n }\n\n ${StyledFlex} > ${StyledIcon} {\n width: ${itemIconSize};\n height: ${itemIconSize};\n padding: calc(0.75 * ${theme.base.spacing});\n border-radius: calc(3 * ${theme.base['border-radius']});\n background-color: ${theme.base.palette.success};\n }\n }\n\n ${StyledTabs} {\n padding-inline: ${theme.base.spacing};\n border-block: 0.0625rem solid ${borderColor};\n border-radius: 0;\n\n ${StyledTab} {\n flex: 1;\n justify-content: center;\n\n ${StyledCount} {\n background-color: ${theme.base.palette.urgent};\n }\n span {\n color: ${computedFgColor};\n }\n &::after {\n background-color: ${lightenedTabColor};\n }\n &[aria-selected='true'] {\n span:not(${StyledCount}) {\n color: ${tabPrimaryColor};\n }\n &::after {\n background-color: ${tabPrimaryColor};\n }\n }\n\n &:hover {\n background-color: ${contrastColor};\n border-radius: 0;\n cursor: pointer;\n }\n }\n }\n ${StyledTabPanel} {\n padding: 0;\n }\n\n ${StyledButton}:enabled:focus-visible {\n box-shadow: ${theme.base.shadow.focus};\n }\n `;\n});\n\nStyledIntelligentGuidance.defaultProps = defaultThemeProp;\n"]}
|
|
1
|
+
{"version":3,"file":"IntelligentGuidance.styles.js","sourceRoot":"","sources":["../../../src/components/IntelligentGuidance/IntelligentGuidance.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import styled, { css } from 'styled-components';\nimport { lighten, rgba, transparentize } from 'polished';\n\nimport {\n defaultThemeProp,\n StyledButton,\n StyledCard,\n StyledFlex,\n StyledIcon,\n StyledEmptyState,\n SummaryList,\n StyledText,\n tryCatch,\n StyledSummaryItem,\n StyledVisual,\n resolveContrastColor,\n Text,\n calculateFontSize,\n StyledSecondary,\n calculateBackgroundAndContrastColor,\n calculateForegroundColor\n} from '@pega/cosmos-react-core';\nimport { StyledCardHeader } from '@pega/cosmos-react-core/lib/components/Card/CardHeader';\nimport { StyledTab } from '@pega/cosmos-react-core/lib/components/Tabs/Tab';\nimport { StyledCount } from '@pega/cosmos-react-core/lib/components/Badges/Count';\nimport { StyledTabs } from '@pega/cosmos-react-core/lib/components/Tabs/Tabs.styles';\nimport { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';\n\nconst itemIconSize = '2rem';\n\nexport const StyledNew = styled(Text)(({ theme }) => {\n const readableBackground = resolveContrastColor({\n background: theme.base.palette['primary-background'],\n foreground: theme.base.palette['brand-primary'],\n theme\n });\n const readableTextColor = resolveContrastColor({\n background: readableBackground,\n theme\n });\n const fontSize = calculateFontSize(theme.base['font-size'], theme.base['font-scale']);\n\n return css`\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n text-transform: uppercase;\n background-color: ${readableBackground};\n color: ${readableTextColor};\n padding-inline: calc(0.75 * ${theme.base.spacing});\n font-size: ${fontSize.xxs};\n font-weight: ${theme.base['font-weight']['semi-bold']};\n `;\n});\n\nStyledNew.defaultProps = defaultThemeProp;\n\nexport const StyledBorderLine = styled.span(({ theme }) => {\n const readableBackground = resolveContrastColor({\n background: theme.base.palette['primary-background'],\n foreground: theme.base.palette['brand-primary'],\n theme\n });\n\n return css`\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n content: '';\n background-color: ${readableBackground};\n height: 100%;\n width: 0.125rem;\n `;\n});\n\nStyledBorderLine.defaultProps = defaultThemeProp;\n\nexport const StyledIntelligentGuidanceList = styled(SummaryList)(({ theme }) => {\n const navBg = theme.components['app-shell'].nav.background;\n const navFgColor = theme.components['app-shell'].nav['foreground-color'];\n const computedFgColor = calculateForegroundColor(navBg, navFgColor, theme);\n const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor, theme);\n const borderColor = tryCatch(() => lighten(0.1, contrastColor));\n const secondaryColor = tryCatch(() =>\n rgba(computedFgColor, theme.base.transparency['transparent-2'])\n );\n\n return css`\n max-height: min(calc(100vh - var(--headerHeight) - 4ch), 21ch);\n overflow: auto;\n background-color: ${navBg};\n\n ${theme.base.animation.timing.ease};\n\n ${StyledSummaryItem} {\n position: relative;\n padding: 0 ${theme.base.spacing};\n outline: none;\n\n &:not(:first-of-type) {\n border-top: ${theme.components.button['border-width']} solid ${borderColor};\n }\n\n ${StyledVisual} ${StyledIcon} {\n width: ${itemIconSize};\n height: ${itemIconSize};\n padding: calc(0.75 * ${theme.base.spacing});\n }\n\n ${StyledSecondary} ${StyledText} {\n color: ${secondaryColor};\n }\n\n &:not(:last-child) {\n border-bottom: none;\n }\n }\n\n ${StyledEmptyState} {\n padding-block: ${theme.base.spacing};\n ${StyledIcon}, ${StyledText} {\n color: ${computedFgColor};\n }\n }\n `;\n});\n\nStyledIntelligentGuidanceList.defaultProps = defaultThemeProp;\n\nexport const StyledPrimaryItem = styled.div(({ theme }) => {\n const navBg = theme.components['app-shell'].nav.background;\n const navFgColor = theme.components['app-shell'].nav['foreground-color'];\n const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor, theme);\n\n return css`\n padding: ${theme.base.spacing} calc(0.5 * ${theme.base.spacing});\n\n &:hover {\n background-color: ${contrastColor};\n cursor: pointer;\n }\n\n &:enabled:focus-visible,\n &:not([disabled]):focus-visible {\n box-shadow: ${theme.base.shadow['focus-inset']};\n }\n `;\n});\n\nStyledPrimaryItem.defaultProps = defaultThemeProp;\n\nexport interface StyledIntelligentGuidanceProps {\n isCollapsed: boolean;\n hasItems: boolean;\n}\n\nexport const StyledIntelligentGuidance = styled(StyledCard)<StyledIntelligentGuidanceProps>(({\n theme,\n isCollapsed\n}) => {\n const navBg = theme.components['app-shell'].nav.background;\n const navFgColor = theme.components['app-shell'].nav['foreground-color'];\n const computedFgColor = calculateForegroundColor(navBg, navFgColor, theme);\n const { contrastColor } = calculateBackgroundAndContrastColor(navBg, navFgColor, theme);\n const borderColor = tryCatch(() => lighten(0.1, contrastColor));\n const tabPrimaryColor = theme.base.colors.blue.light;\n const lightenedTabColor = tryCatch(() => transparentize(0.3, tabPrimaryColor)) ?? '';\n\n return css`\n position: fixed;\n inset-inline-start: calc(2 * ${theme.base.spacing} + var(--appshell-horizontal-offset, 0rem));\n transition:\n inset-inline-start ${theme.base.animation.speed} ${theme.base.animation.timing.ease},\n transform calc(4 * ${theme.base.animation.speed}) ${theme.base.animation.timing.ease};\n bottom: var(--appshell-bottom-offset, 0);\n z-index: ${theme.base['z-index'].popover};\n min-width: 20rem;\n max-width: 20rem;\n color: ${computedFgColor};\n overflow: hidden;\n box-shadow: ${theme.base.shadow.low};\n\n @media (height <= ${theme.base.breakpoints.sm}) {\n position: absolute;\n transition: none;\n inset-inline-start: calc(2 * ${theme.base.spacing});\n min-inline-size: calc(100% - (4 * ${theme.base.spacing}));\n min-block-size: 3rem;\n\n ${isCollapsed &&\n css`\n ${StyledCardHeader} ~ * {\n display: none;\n }\n `}\n }\n\n @media (min-width: ${theme.base.breakpoints.lg}) {\n min-width: 23rem;\n max-width: 23rem;\n }\n\n ${isCollapsed &&\n css`\n transform: translateY(calc(100% - var(--headerHeight)));\n `}\n\n &:not(& &) {\n background: ${navBg};\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n ${StyledCardHeader} {\n & ${StyledButton} {\n transition: transform calc(2 * ${theme.base.animation.speed})\n ${theme.base.animation.timing.ease};\n transform: ${isCollapsed ? 'rotate(-180deg)' : 'rotate(0)'};\n }\n\n &:not(${StyledCard} ${StyledCard} > &) {\n padding: ${theme.base.spacing};\n }\n\n ${StyledFlex} > ${StyledIcon} {\n width: ${itemIconSize};\n height: ${itemIconSize};\n padding: calc(0.75 * ${theme.base.spacing});\n border-radius: calc(3 * ${theme.base['border-radius']});\n background-color: ${theme.base.palette.success};\n }\n }\n\n ${StyledTabs} {\n padding-inline: ${theme.base.spacing};\n border-block: 0.0625rem solid ${borderColor};\n border-radius: 0;\n\n ${StyledTab} {\n flex: 1;\n justify-content: center;\n\n ${StyledCount} {\n background-color: ${theme.base.palette.urgent};\n }\n span {\n color: ${computedFgColor};\n }\n &::after {\n background-color: ${lightenedTabColor};\n }\n &[aria-selected='true'] {\n span:not(${StyledCount}) {\n color: ${tabPrimaryColor};\n }\n &::after {\n background-color: ${tabPrimaryColor};\n }\n }\n\n &:hover {\n background-color: ${contrastColor};\n border-radius: 0;\n cursor: pointer;\n }\n }\n }\n ${StyledTabPanel} {\n padding: 0;\n }\n\n ${StyledButton}:enabled:focus-visible {\n box-shadow: ${theme.base.shadow.focus};\n }\n `;\n});\n\nStyledIntelligentGuidance.defaultProps = defaultThemeProp;\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Ref } from 'react';
|
|
2
2
|
import type { StatusProps, ForwardRefForwardPropsComponent, FieldValueListProps, NoChildrenProp, RequireAtLeastOne, LinkProps } from '@pega/cosmos-react-core';
|
|
3
3
|
import type { CountdownButtonProps } from './CountdownButton';
|
|
4
|
-
interface InfoText extends Partial<Pick<LinkProps, 'href' | 'onPreview'>> {
|
|
4
|
+
interface InfoText extends Partial<Pick<LinkProps, 'href' | 'onPreview' | 'onClick'>> {
|
|
5
5
|
/** Visually hidden description for accessibility purposes. */
|
|
6
6
|
description: string;
|
|
7
7
|
/** Information text. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionNotification.d.ts","sourceRoot":"","sources":["../../../src/components/InteractionNotification/InteractionNotification.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,GAAG,EAAE,MAAM,OAAO,CAAC;AA4BlD,OAAO,KAAK,EACV,WAAW,EACX,+BAA+B,EAC/B,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,SAAS,EACV,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,UAAU,QAAS,SAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"InteractionNotification.d.ts","sourceRoot":"","sources":["../../../src/components/InteractionNotification/InteractionNotification.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,GAAG,EAAE,MAAM,OAAO,CAAC;AA4BlD,OAAO,KAAK,EACV,WAAW,EACX,+BAA+B,EAC/B,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,SAAS,EACV,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,UAAU,QAAS,SAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC,CAAC;IACnF,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kFAAkF;AAClF,KAAK,kBAAkB,GACnB,CAAC,MAAM,IAAI,CAAC,GACZ;IACE,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEN,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,CAC1D,cAAc,GAAG;IACf,wBAAwB;IACxB,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,MAAM,EAAE;QAAE,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,iFAAiF;IACjF,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvC,yBAAyB;IACzB,2BAA2B,CAAC,EAAE;QAC5B,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAC7C,aAAa,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC/C,UAAU,CAAC,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;KACjD,CAAC;IACF,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,+CAA+C;IAC/C,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,GAAG,CACE;IACE,wEAAwE;IACxE,WAAW,EAAE,QAAQ,CAAC;IACtB,yFAAyF;IACzF,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,gFAAgF;IAChF,YAAY,CAAC,EAAE,QAAQ,CAAC;CACzB,GACD;IACE,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CACJ,EACH,UAAU,GAAG,WAAW,CACzB,CAAC;AAyHF,QAAA,MAAM,uBAAuB,EAAE,+BAA+B,CAAC,4BAA4B,CAqHvF,CAAC;AAEL,eAAe,uBAAuB,CAAC"}
|
|
@@ -78,9 +78,9 @@ registerAction({
|
|
|
78
78
|
});
|
|
79
79
|
const NotificationText = ({ content, variant = 'h5' }) => {
|
|
80
80
|
const isString = typeof content === 'string';
|
|
81
|
-
const { text, href, onPreview } = isString ? { text: content } : content;
|
|
81
|
+
const { text, href, onPreview, onClick } = isString ? { text: content } : content;
|
|
82
82
|
const textElement = (_jsx(Text, { variant: variant, as: 'span', children: text }));
|
|
83
|
-
const contentElement = href ? (_jsx(Link, { href: href, previewable: !!onPreview, onPreview: onPreview, hideNewTabIcon: true, children: textElement })) : (textElement);
|
|
83
|
+
const contentElement = href ? (_jsx(Link, { href: href, previewable: !!onPreview, onPreview: onPreview, hideNewTabIcon: true, onClick: onClick, children: textElement })) : (textElement);
|
|
84
84
|
return isString ? (textElement) : (_jsxs("div", { children: [_jsx(VisuallyHiddenText, { children: `${content.description} - ` }), contentElement] }));
|
|
85
85
|
};
|
|
86
86
|
const InteractionNotification = forwardRef(function InteractionNotification({ icon, title, primaryText, secondaryText, tertiaryText, status, fields, incomingNotificationTimeout, onAccept, onDismiss }, ref) {
|