@pega/cosmos-react-work 10.0.0-build.9.11 → 10.0.0-build.9.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/lib/components/CasePreview/CasePreview.d.ts +2 -0
  2. package/lib/components/CasePreview/CasePreview.d.ts.map +1 -1
  3. package/lib/components/CasePreview/CasePreview.js +18 -3
  4. package/lib/components/CasePreview/CasePreview.js.map +1 -1
  5. package/lib/components/CaseView/CaseHeader/CaseHeader.d.ts.map +1 -1
  6. package/lib/components/CaseView/CaseHeader/CaseHeader.js +4 -2
  7. package/lib/components/CaseView/CaseHeader/CaseHeader.js.map +1 -1
  8. package/lib/components/CaseView/CaseSummary.d.ts +3 -2
  9. package/lib/components/CaseView/CaseSummary.d.ts.map +1 -1
  10. package/lib/components/CaseView/CaseSummary.js +2 -2
  11. package/lib/components/CaseView/CaseSummary.js.map +1 -1
  12. package/lib/components/CaseView/CaseView.js +1 -1
  13. package/lib/components/CaseView/CaseView.js.map +1 -1
  14. package/lib/components/CaseView/CaseView.styles.d.ts.map +1 -1
  15. package/lib/components/CaseView/CaseView.styles.js +13 -4
  16. package/lib/components/CaseView/CaseView.styles.js.map +1 -1
  17. package/lib/components/CaseView/CaseView.types.d.ts +5 -2
  18. package/lib/components/CaseView/CaseView.types.d.ts.map +1 -1
  19. package/lib/components/CaseView/CaseView.types.js.map +1 -1
  20. package/lib/components/GenAICoach/GenAICoach.d.ts.map +1 -1
  21. package/lib/components/GenAICoach/GenAICoach.js +22 -7
  22. package/lib/components/GenAICoach/GenAICoach.js.map +1 -1
  23. package/lib/components/GenAICoach/GenAICoach.types.d.ts +2 -0
  24. package/lib/components/GenAICoach/GenAICoach.types.d.ts.map +1 -1
  25. package/lib/components/GenAICoach/GenAICoach.types.js.map +1 -1
  26. package/lib/components/MasterDetail/DetailPanelHeader.d.ts +29 -0
  27. package/lib/components/MasterDetail/DetailPanelHeader.d.ts.map +1 -0
  28. package/lib/components/MasterDetail/DetailPanelHeader.js +14 -0
  29. package/lib/components/MasterDetail/DetailPanelHeader.js.map +1 -0
  30. package/lib/components/MasterDetail/MasterDetail.d.ts +6 -0
  31. package/lib/components/MasterDetail/MasterDetail.d.ts.map +1 -0
  32. package/lib/components/MasterDetail/MasterDetail.js +116 -0
  33. package/lib/components/MasterDetail/MasterDetail.js.map +1 -0
  34. package/lib/components/MasterDetail/MasterDetail.styles.d.ts +595 -0
  35. package/lib/components/MasterDetail/MasterDetail.styles.d.ts.map +1 -0
  36. package/lib/components/MasterDetail/MasterDetail.styles.js +246 -0
  37. package/lib/components/MasterDetail/MasterDetail.styles.js.map +1 -0
  38. package/lib/components/MasterDetail/MasterDetail.test-ids.d.ts +2 -0
  39. package/lib/components/MasterDetail/MasterDetail.test-ids.d.ts.map +1 -0
  40. package/lib/components/MasterDetail/MasterDetail.test-ids.js +19 -0
  41. package/lib/components/MasterDetail/MasterDetail.test-ids.js.map +1 -0
  42. package/lib/components/MasterDetail/MasterDetail.types.d.ts +71 -0
  43. package/lib/components/MasterDetail/MasterDetail.types.d.ts.map +1 -0
  44. package/lib/components/MasterDetail/MasterDetail.types.js +2 -0
  45. package/lib/components/MasterDetail/MasterDetail.types.js.map +1 -0
  46. package/lib/components/MasterDetail/MasterDetailActions.d.ts +10 -0
  47. package/lib/components/MasterDetail/MasterDetailActions.d.ts.map +1 -0
  48. package/lib/components/MasterDetail/MasterDetailActions.js +45 -0
  49. package/lib/components/MasterDetail/MasterDetailActions.js.map +1 -0
  50. package/lib/components/MasterDetail/index.d.ts +5 -0
  51. package/lib/components/MasterDetail/index.d.ts.map +1 -0
  52. package/lib/components/MasterDetail/index.js +4 -0
  53. package/lib/components/MasterDetail/index.js.map +1 -0
  54. package/lib/components/SearchResults/SearchResults.js +7 -5
  55. package/lib/components/SearchResults/SearchResults.js.map +1 -1
  56. package/lib/index.d.ts +2 -0
  57. package/lib/index.d.ts.map +1 -1
  58. package/lib/index.js +2 -0
  59. package/lib/index.js.map +1 -1
  60. package/package.json +3 -3
@@ -306,6 +306,8 @@ export type GenAICoachProps = WithAttributes<'div', TestIdProp & {
306
306
  onStop?: () => void;
307
307
  /** When true, indicates that a conversation is being created. */
308
308
  isCreatingConversation?: boolean;
309
+ /** Identifies the conversation being shown. */
310
+ conversationId?: string;
309
311
  /** Data for the questionnaireProvided questionnaire shown above the composer */
310
312
  questionnaireData?: QuestionnaireConfig;
311
313
  /** Called when the user dismisses the questionnaire without submitting. */
@@ -1 +1 @@
1
- {"version":3,"file":"GenAICoach.types.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenAICoach.types.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GenAICoach.types.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactNode, Ref, MouseEventHandler } from 'react';\n\nimport type {\n BaseProps,\n MenuItemProps,\n MenuProps,\n NoChildrenProp,\n OmitStrict,\n ProgressProps,\n RequireAtLeastOne,\n TestIdProp,\n WithAttributes,\n ActionsProps,\n FileItemProps,\n FileDisplayProps,\n LightboxProps\n} from '@pega/cosmos-react-core';\nimport type { MDMap } from '@pega/cosmos-react-rte';\n\nexport interface AgentModeProps {\n modes: MenuProps['items'];\n onAgentModeChange: (id: MenuItemProps['id']) => void;\n}\n\nexport interface ModelSelectorProps {\n options: MenuProps['items'];\n onModelChange: (id: MenuItemProps['id']) => void;\n}\n\nexport interface CaseWorkflowStepProps {\n id: string;\n name: string;\n completed?: boolean;\n}\n\nexport interface CaseWorkflowStageProps {\n name: string;\n id: string;\n current?: boolean;\n completed?: boolean;\n currentStepId?: string;\n steps?: CaseWorkflowStepProps[];\n}\n\nexport interface CaseWorkflowProps extends BaseProps, NoChildrenProp {\n heading: string;\n icon?: string | URL;\n stages: CaseWorkflowStageProps[];\n onHeadingClick: MouseEventHandler<HTMLButtonElement>;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport interface ActiveCaseItem {\n id: string;\n heading: string;\n stages: CaseWorkflowStageProps[];\n onHeadingClick?: MouseEventHandler<HTMLButtonElement>;\n}\n\nexport interface ActiveCasesProps extends BaseProps, NoChildrenProp {\n activeCases: ActiveCaseItem[];\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport interface OptionItem {\n key: string;\n label: string;\n displayLabel?: string;\n selected?: boolean;\n}\n\nexport interface FormAnswer {\n value: string[];\n questionText: string;\n}\n\nexport interface Question {\n field: string;\n type: 'single' | 'multi';\n questionText: string;\n defaultInput?: string[] | string;\n optionItems: OptionItem[];\n}\n\nexport interface QuestionnaireConfig {\n questions: Question[];\n inline?: boolean;\n}\n\nexport interface QuestionItemProps {\n question: Question;\n answer: FormAnswer;\n onChange: (field: string, key: string, selected: boolean) => void;\n}\n\nexport interface QuestionnaireProps {\n data: QuestionnaireConfig;\n onChange: (answers: Record<string, FormAnswer>) => void;\n onCancel: () => void;\n}\n\nexport type State = 'minimized' | 'maximized';\nexport type Reaction = 'liked' | 'disliked';\nexport type FeedbackPrompt = 'liked' | 'disliked' | 'both';\n\nexport type Variant =\n | {\n placement: 'utilities';\n state: State;\n onStateChange: (state: State) => void;\n }\n | { placement: 'fullpage' }\n | { placement: 'dialog'; onClose: () => void };\n\nexport interface MessageProps {\n id: string;\n message?: string;\n announceInteraction?: boolean;\n simplifiedAgent?: boolean;\n showSenderInfo?: boolean;\n attachments?: FileDisplayProps[];\n /**\n * Whether the message is a suggestion from the composer\n * @default false\n */\n fromComposer?: boolean;\n /** Ref forwarded to the wrapping element. */\n ref?: Ref<HTMLLIElement>;\n}\n\nexport type InitialSuggestedMessageProps = Pick<GenAICoachProps, 'onSend'> &\n BaseProps &\n TestIdProp &\n MessageProps;\n\nexport interface UserMessageProps extends BaseProps, TestIdProp, MessageProps {\n from: 'user';\n userName?: string;\n}\n\nexport type ToolParameters = {\n id: string;\n label: string;\n type: 'text' | 'number' | 'boolean';\n value: string;\n required: boolean;\n readOnly: boolean;\n};\n\nexport interface Tool {\n id: string;\n name: string;\n message: string;\n decision: 'accept' | 'modify' | 'reject';\n parameters: ToolParameters[];\n}\n\nexport interface ToolDetailsProps {\n toolMessage: string;\n isToolConfirmation: true;\n tools: Tool[];\n onSubmit?: (tools: Tool[]) => void;\n onCancel?: () => void;\n toolsConfirmed: boolean;\n}\n\nexport interface ToolCandidateDetailsProps {\n loading?: boolean;\n error?: string;\n renderCandidatesTable?: () => ReactNode;\n}\n\nexport type CoachMessageProps = RequireAtLeastOne<\n Partial<Pick<GenAICoachProps, 'onSend'>> &\n BaseProps &\n TestIdProp &\n Pick<\n MessageProps,\n 'id' | 'announceInteraction' | 'simplifiedAgent' | 'showSenderInfo' | 'ref'\n > &\n (\n | ToolDetailsProps\n | {\n toolMessage?: never;\n isToolConfirmation?: false;\n tools?: never;\n onSubmit?: never;\n onCancel?: never;\n toolsConfirmed?: never;\n }\n ) & {\n from: 'coach';\n coachName: string;\n /** Indicates a synthetic coach message */\n isCustom?: boolean;\n suggestions?: (Pick<MessageProps, 'id' | 'message'> & { selected?: boolean })[];\n loading?: boolean;\n progressSteps?: string[];\n progressStepsCompleted?: number;\n enableStreaming?: boolean;\n allChunksReceived?: boolean;\n error?: string;\n message?: ReactNode;\n messageActions?: ActionsProps;\n markdownMap?: MDMap;\n onStreamingUpdate?: (isStreamingDone: boolean) => void;\n feedback?: {\n reaction: Reaction | undefined;\n feedbackText?: string;\n onReaction: (id: MessageProps['id'], reaction: Reaction | undefined) => void;\n onFeedbackComplete: (id: MessageProps['id'], comment?: string) => void;\n promptFeedbackOn?: FeedbackPrompt;\n allowFeedbackResubmission?: boolean;\n };\n toolCandidates?: {\n toolState: ToolCandidateDetailsProps;\n onViewToolsConsidered: (id: MessageProps['id']) => void;\n };\n onAnimationCursorUpdate?: (animatedTillCursor: number) => void;\n animationInitialCursorPos?: number;\n },\n 'loading' | 'message' | 'error'\n>;\n\nexport interface CaseDetails {\n /** Unique case identifier */\n id: string;\n /** Case type identifier */\n type: string;\n /** Human-readable label */\n label?: string;\n}\n\nexport interface SystemMessageProps\n extends TestIdProp,\n Pick<MessageProps, 'id' | 'message' | 'ref' | 'announceInteraction' | 'simplifiedAgent'> {\n from: 'system';\n loading?: boolean;\n /** Present when this system message represents a case creation event. */\n caseInfo?: CaseDetails;\n /** When true, renders this system message as a \"Response stopped\" indicator. */\n stopped?: boolean;\n}\n\nexport type GenAIMessageProps = UserMessageProps | CoachMessageProps | SystemMessageProps;\n\nexport interface ConversationHistoryProps extends TestIdProp {\n /** List of History items. */\n data: {\n id: string;\n section: string;\n conversations: {\n id: string;\n title: string;\n }[];\n }[];\n /** Click event for items within the list. */\n onItemClick?: (conversationId: string) => void;\n /** List loading state. */\n loading?: boolean;\n /** Called at scroll trigger to load more items. */\n loadMore?: () => void;\n /** True if History view is rendered in Full page view. */\n inFullPage?: boolean;\n /** Callback triggered when closing the history view. */\n onDismiss: () => void;\n /** Id of the selected item. */\n selectedItemId?: string;\n /** Set if there is an error in retreiving the data. */\n error?: string;\n /** Ref forwarded to the wrapping element. */\n ref?: Ref<HTMLUListElement>;\n}\n\nexport type SendMessageProps = OmitStrict<MessageProps, 'attachments'> & {\n attachmentIds?: string[];\n tools?: Tool[];\n toolMessage?: string;\n formAnswers?: Record<string, FormAnswer>;\n};\n\nexport type GenAICoachProps = WithAttributes<\n 'div',\n TestIdProp & {\n /** Chat loading indicator */\n loading?: boolean | ProgressProps['message'];\n /** Set if there is an error in retreiving the data */\n error?: string;\n /** Coaches available in the chat header */\n coachOptions: MenuProps['items'];\n /** Handle the coach selections */\n onCoachChange: (id: MenuProps['id']) => void;\n /** Suggested messages to start the conversation */\n initialSuggestedMessages?: MessageProps[];\n /** Additional suggestions presented at the bottom of the chat window */\n suggestions?: MenuProps['items'];\n /** Send prompts */\n onSend: (message: SendMessageProps) => void;\n\n stopProcess?: () => void;\n /** Messages to be shown in the chatting window. */\n messages?: GenAIMessageProps[];\n /** Placement of the component */\n variant: Variant;\n /** From landing page utilities */\n isInLandingPageUtilities?: boolean;\n /** Callback when component is mounted. */\n onOpen?: () => void;\n /**\n * User would be guided with selective prompts to enable interaction with coach.\n * @default false\n */\n guidedMode?: boolean;\n /** Pass an array of Action objects to show Action button. */\n actions?: ActionsProps;\n /** Callback to start a new chat. */\n onNewChat?: () => void;\n /** Pass data to show history view. */\n conversationHistory?: ConversationHistoryProps;\n /** Opens conversation history from the composer. */\n onConversationHistoryOpen?: () => void;\n /** Callback triggered when the layout component changes. */\n onLayoutChange?: (inFullPage: boolean) => void;\n /** Callback when attachment icon is clicked */\n onAddAttachment?: (files: File[]) => void;\n /** Attachments list */\n attachments?: FileItemProps[];\n /** Error in attachments */\n attachmentsError?: string;\n /** Inline error shown on the composer textarea (e.g. when conversation creation fails) */\n conversationError?: string;\n /** Configuration for the Lightbox component that handles preview of media attachments and files */\n lightboxPreviewProps?: LightboxProps;\n /** Enable full screen */\n allowFullScreen?: boolean;\n /** Enable voice to text */\n voiceToTextProps?: {\n enableDictation: boolean;\n langCode: string;\n };\n /** Agent mode selector shown in the composer toolbar. Hidden when not provided. */\n agentModeProps?: AgentModeProps;\n /** Model selector shown in the composer toolbar. Hidden when not provided. */\n modelSelectorProps?: ModelSelectorProps;\n /** Show welcome state */\n showSalutation?: boolean;\n /** Salutation message */\n salutation?: string;\n /** Whether the agent is a portal agent */\n isPortalAgent?: boolean;\n /** Props for an optional case workflow banner rendered at the top of the chat area */\n caseWorkflow?: OmitStrict<CaseWorkflowProps, 'ref'>;\n /** Props for showing active cases in conversation */\n activeCases?: ActiveCasesProps['activeCases'];\n /** Page panel configuration */\n pagePanel?: {\n /** The page-content node rendered in the right panel. */\n content: ReactNode;\n /** Whether the right panel is currently visible. */\n visible: boolean;\n };\n /** Renders suggestion card */\n suggestionCardsView?: ReactNode;\n /** When set, pre-populates the textarea with the given text without sending. */\n draftMessage?: string;\n /** Callback triggered when the user clicks the stop button while a response is being generated. */\n onStop?: () => void;\n /** When true, indicates that a conversation is being created. */\n isCreatingConversation?: boolean;\n /** Data for the questionnaireProvided questionnaire shown above the composer */\n questionnaireData?: QuestionnaireConfig;\n /** Called when the user dismisses the questionnaire without submitting. */\n onQuestionnaireDismiss?: () => void;\n /**\n * Renders a simplified agent view.\n * @default false\n */\n simplifiedAgent?: boolean;\n /** Supporting text shown below the heading */\n subHeading?: string;\n /** Display name of the operator/user */\n operatorName?: string;\n }\n>;\n\nexport interface MessageFeedbackProps {\n messageId: MessageProps['id'];\n feedback: CoachMessageProps['feedback'];\n}\n\nexport interface UtilitiesGenAICoachProps extends OmitStrict<GenAICoachProps, 'variant'> {\n onClose?: () => void;\n}\n\nexport interface GenAICoachScrollState {\n userAtBottom: boolean;\n isStreamingActive: boolean;\n smoothScrollOnEnd: boolean;\n initialBufferApplied: boolean;\n ignoreNextScrollEvent: boolean;\n lastScrollTop: number | null;\n bufferMinHeight: number | null;\n}\n\nexport interface PortalAgentSplitViewProps extends TestIdProp {\n /** The rendered agent chat panel (left side). */\n children: ReactNode;\n /** Content and visibility state for the right (page) panel. */\n pagePanel: {\n content: ReactNode;\n visible: boolean;\n };\n /** Whether the agent (left) panel itself is visible. */\n showAgentPanel: boolean;\n /** Whether the agent panel is expanded to full width. */\n agentExpanded?: boolean;\n /** Persisted width for the agent panel as a CSS length or percentage. */\n initialWidth?: string;\n /** Callback fired when the user finishes resizing the agent panel. */\n onResizeEnd?: (width: string) => void;\n}\n\nexport interface CoachLoadingContentProps {\n message?: string;\n markdownMap?: MDMap;\n progressSteps?: string[];\n progressStepsCompleted?: number;\n simplified?: boolean;\n}\n"]}
1
+ {"version":3,"file":"GenAICoach.types.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactNode, Ref, MouseEventHandler } from 'react';\n\nimport type {\n BaseProps,\n MenuItemProps,\n MenuProps,\n NoChildrenProp,\n OmitStrict,\n ProgressProps,\n RequireAtLeastOne,\n TestIdProp,\n WithAttributes,\n ActionsProps,\n FileItemProps,\n FileDisplayProps,\n LightboxProps\n} from '@pega/cosmos-react-core';\nimport type { MDMap } from '@pega/cosmos-react-rte';\n\nexport interface AgentModeProps {\n modes: MenuProps['items'];\n onAgentModeChange: (id: MenuItemProps['id']) => void;\n}\n\nexport interface ModelSelectorProps {\n options: MenuProps['items'];\n onModelChange: (id: MenuItemProps['id']) => void;\n}\n\nexport interface CaseWorkflowStepProps {\n id: string;\n name: string;\n completed?: boolean;\n}\n\nexport interface CaseWorkflowStageProps {\n name: string;\n id: string;\n current?: boolean;\n completed?: boolean;\n currentStepId?: string;\n steps?: CaseWorkflowStepProps[];\n}\n\nexport interface CaseWorkflowProps extends BaseProps, NoChildrenProp {\n heading: string;\n icon?: string | URL;\n stages: CaseWorkflowStageProps[];\n onHeadingClick: MouseEventHandler<HTMLButtonElement>;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport interface ActiveCaseItem {\n id: string;\n heading: string;\n stages: CaseWorkflowStageProps[];\n onHeadingClick?: MouseEventHandler<HTMLButtonElement>;\n}\n\nexport interface ActiveCasesProps extends BaseProps, NoChildrenProp {\n activeCases: ActiveCaseItem[];\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport interface OptionItem {\n key: string;\n label: string;\n displayLabel?: string;\n selected?: boolean;\n}\n\nexport interface FormAnswer {\n value: string[];\n questionText: string;\n}\n\nexport interface Question {\n field: string;\n type: 'single' | 'multi';\n questionText: string;\n defaultInput?: string[] | string;\n optionItems: OptionItem[];\n}\n\nexport interface QuestionnaireConfig {\n questions: Question[];\n inline?: boolean;\n}\n\nexport interface QuestionItemProps {\n question: Question;\n answer: FormAnswer;\n onChange: (field: string, key: string, selected: boolean) => void;\n}\n\nexport interface QuestionnaireProps {\n data: QuestionnaireConfig;\n onChange: (answers: Record<string, FormAnswer>) => void;\n onCancel: () => void;\n}\n\nexport type State = 'minimized' | 'maximized';\nexport type Reaction = 'liked' | 'disliked';\nexport type FeedbackPrompt = 'liked' | 'disliked' | 'both';\n\nexport type Variant =\n | {\n placement: 'utilities';\n state: State;\n onStateChange: (state: State) => void;\n }\n | { placement: 'fullpage' }\n | { placement: 'dialog'; onClose: () => void };\n\nexport interface MessageProps {\n id: string;\n message?: string;\n announceInteraction?: boolean;\n simplifiedAgent?: boolean;\n showSenderInfo?: boolean;\n attachments?: FileDisplayProps[];\n /**\n * Whether the message is a suggestion from the composer\n * @default false\n */\n fromComposer?: boolean;\n /** Ref forwarded to the wrapping element. */\n ref?: Ref<HTMLLIElement>;\n}\n\nexport type InitialSuggestedMessageProps = Pick<GenAICoachProps, 'onSend'> &\n BaseProps &\n TestIdProp &\n MessageProps;\n\nexport interface UserMessageProps extends BaseProps, TestIdProp, MessageProps {\n from: 'user';\n userName?: string;\n}\n\nexport type ToolParameters = {\n id: string;\n label: string;\n type: 'text' | 'number' | 'boolean';\n value: string;\n required: boolean;\n readOnly: boolean;\n};\n\nexport interface Tool {\n id: string;\n name: string;\n message: string;\n decision: 'accept' | 'modify' | 'reject';\n parameters: ToolParameters[];\n}\n\nexport interface ToolDetailsProps {\n toolMessage: string;\n isToolConfirmation: true;\n tools: Tool[];\n onSubmit?: (tools: Tool[]) => void;\n onCancel?: () => void;\n toolsConfirmed: boolean;\n}\n\nexport interface ToolCandidateDetailsProps {\n loading?: boolean;\n error?: string;\n renderCandidatesTable?: () => ReactNode;\n}\n\nexport type CoachMessageProps = RequireAtLeastOne<\n Partial<Pick<GenAICoachProps, 'onSend'>> &\n BaseProps &\n TestIdProp &\n Pick<\n MessageProps,\n 'id' | 'announceInteraction' | 'simplifiedAgent' | 'showSenderInfo' | 'ref'\n > &\n (\n | ToolDetailsProps\n | {\n toolMessage?: never;\n isToolConfirmation?: false;\n tools?: never;\n onSubmit?: never;\n onCancel?: never;\n toolsConfirmed?: never;\n }\n ) & {\n from: 'coach';\n coachName: string;\n /** Indicates a synthetic coach message */\n isCustom?: boolean;\n suggestions?: (Pick<MessageProps, 'id' | 'message'> & { selected?: boolean })[];\n loading?: boolean;\n progressSteps?: string[];\n progressStepsCompleted?: number;\n enableStreaming?: boolean;\n allChunksReceived?: boolean;\n error?: string;\n message?: ReactNode;\n messageActions?: ActionsProps;\n markdownMap?: MDMap;\n onStreamingUpdate?: (isStreamingDone: boolean) => void;\n feedback?: {\n reaction: Reaction | undefined;\n feedbackText?: string;\n onReaction: (id: MessageProps['id'], reaction: Reaction | undefined) => void;\n onFeedbackComplete: (id: MessageProps['id'], comment?: string) => void;\n promptFeedbackOn?: FeedbackPrompt;\n allowFeedbackResubmission?: boolean;\n };\n toolCandidates?: {\n toolState: ToolCandidateDetailsProps;\n onViewToolsConsidered: (id: MessageProps['id']) => void;\n };\n onAnimationCursorUpdate?: (animatedTillCursor: number) => void;\n animationInitialCursorPos?: number;\n },\n 'loading' | 'message' | 'error'\n>;\n\nexport interface CaseDetails {\n /** Unique case identifier */\n id: string;\n /** Case type identifier */\n type: string;\n /** Human-readable label */\n label?: string;\n}\n\nexport interface SystemMessageProps\n extends TestIdProp,\n Pick<MessageProps, 'id' | 'message' | 'ref' | 'announceInteraction' | 'simplifiedAgent'> {\n from: 'system';\n loading?: boolean;\n /** Present when this system message represents a case creation event. */\n caseInfo?: CaseDetails;\n /** When true, renders this system message as a \"Response stopped\" indicator. */\n stopped?: boolean;\n}\n\nexport type GenAIMessageProps = UserMessageProps | CoachMessageProps | SystemMessageProps;\n\nexport interface ConversationHistoryProps extends TestIdProp {\n /** List of History items. */\n data: {\n id: string;\n section: string;\n conversations: {\n id: string;\n title: string;\n }[];\n }[];\n /** Click event for items within the list. */\n onItemClick?: (conversationId: string) => void;\n /** List loading state. */\n loading?: boolean;\n /** Called at scroll trigger to load more items. */\n loadMore?: () => void;\n /** True if History view is rendered in Full page view. */\n inFullPage?: boolean;\n /** Callback triggered when closing the history view. */\n onDismiss: () => void;\n /** Id of the selected item. */\n selectedItemId?: string;\n /** Set if there is an error in retreiving the data. */\n error?: string;\n /** Ref forwarded to the wrapping element. */\n ref?: Ref<HTMLUListElement>;\n}\n\nexport type SendMessageProps = OmitStrict<MessageProps, 'attachments'> & {\n attachmentIds?: string[];\n tools?: Tool[];\n toolMessage?: string;\n formAnswers?: Record<string, FormAnswer>;\n};\n\nexport type GenAICoachProps = WithAttributes<\n 'div',\n TestIdProp & {\n /** Chat loading indicator */\n loading?: boolean | ProgressProps['message'];\n /** Set if there is an error in retreiving the data */\n error?: string;\n /** Coaches available in the chat header */\n coachOptions: MenuProps['items'];\n /** Handle the coach selections */\n onCoachChange: (id: MenuProps['id']) => void;\n /** Suggested messages to start the conversation */\n initialSuggestedMessages?: MessageProps[];\n /** Additional suggestions presented at the bottom of the chat window */\n suggestions?: MenuProps['items'];\n /** Send prompts */\n onSend: (message: SendMessageProps) => void;\n\n stopProcess?: () => void;\n /** Messages to be shown in the chatting window. */\n messages?: GenAIMessageProps[];\n /** Placement of the component */\n variant: Variant;\n /** From landing page utilities */\n isInLandingPageUtilities?: boolean;\n /** Callback when component is mounted. */\n onOpen?: () => void;\n /**\n * User would be guided with selective prompts to enable interaction with coach.\n * @default false\n */\n guidedMode?: boolean;\n /** Pass an array of Action objects to show Action button. */\n actions?: ActionsProps;\n /** Callback to start a new chat. */\n onNewChat?: () => void;\n /** Pass data to show history view. */\n conversationHistory?: ConversationHistoryProps;\n /** Opens conversation history from the composer. */\n onConversationHistoryOpen?: () => void;\n /** Callback triggered when the layout component changes. */\n onLayoutChange?: (inFullPage: boolean) => void;\n /** Callback when attachment icon is clicked */\n onAddAttachment?: (files: File[]) => void;\n /** Attachments list */\n attachments?: FileItemProps[];\n /** Error in attachments */\n attachmentsError?: string;\n /** Inline error shown on the composer textarea (e.g. when conversation creation fails) */\n conversationError?: string;\n /** Configuration for the Lightbox component that handles preview of media attachments and files */\n lightboxPreviewProps?: LightboxProps;\n /** Enable full screen */\n allowFullScreen?: boolean;\n /** Enable voice to text */\n voiceToTextProps?: {\n enableDictation: boolean;\n langCode: string;\n };\n /** Agent mode selector shown in the composer toolbar. Hidden when not provided. */\n agentModeProps?: AgentModeProps;\n /** Model selector shown in the composer toolbar. Hidden when not provided. */\n modelSelectorProps?: ModelSelectorProps;\n /** Show welcome state */\n showSalutation?: boolean;\n /** Salutation message */\n salutation?: string;\n /** Whether the agent is a portal agent */\n isPortalAgent?: boolean;\n /** Props for an optional case workflow banner rendered at the top of the chat area */\n caseWorkflow?: OmitStrict<CaseWorkflowProps, 'ref'>;\n /** Props for showing active cases in conversation */\n activeCases?: ActiveCasesProps['activeCases'];\n /** Page panel configuration */\n pagePanel?: {\n /** The page-content node rendered in the right panel. */\n content: ReactNode;\n /** Whether the right panel is currently visible. */\n visible: boolean;\n };\n /** Renders suggestion card */\n suggestionCardsView?: ReactNode;\n /** When set, pre-populates the textarea with the given text without sending. */\n draftMessage?: string;\n /** Callback triggered when the user clicks the stop button while a response is being generated. */\n onStop?: () => void;\n /** When true, indicates that a conversation is being created. */\n isCreatingConversation?: boolean;\n /** Identifies the conversation being shown. */\n conversationId?: string;\n /** Data for the questionnaireProvided questionnaire shown above the composer */\n questionnaireData?: QuestionnaireConfig;\n /** Called when the user dismisses the questionnaire without submitting. */\n onQuestionnaireDismiss?: () => void;\n /**\n * Renders a simplified agent view.\n * @default false\n */\n simplifiedAgent?: boolean;\n /** Supporting text shown below the heading */\n subHeading?: string;\n /** Display name of the operator/user */\n operatorName?: string;\n }\n>;\n\nexport interface MessageFeedbackProps {\n messageId: MessageProps['id'];\n feedback: CoachMessageProps['feedback'];\n}\n\nexport interface UtilitiesGenAICoachProps extends OmitStrict<GenAICoachProps, 'variant'> {\n onClose?: () => void;\n}\n\nexport interface GenAICoachScrollState {\n userAtBottom: boolean;\n isStreamingActive: boolean;\n smoothScrollOnEnd: boolean;\n initialBufferApplied: boolean;\n ignoreNextScrollEvent: boolean;\n lastScrollTop: number | null;\n bufferMinHeight: number | null;\n}\n\nexport interface PortalAgentSplitViewProps extends TestIdProp {\n /** The rendered agent chat panel (left side). */\n children: ReactNode;\n /** Content and visibility state for the right (page) panel. */\n pagePanel: {\n content: ReactNode;\n visible: boolean;\n };\n /** Whether the agent (left) panel itself is visible. */\n showAgentPanel: boolean;\n /** Whether the agent panel is expanded to full width. */\n agentExpanded?: boolean;\n /** Persisted width for the agent panel as a CSS length or percentage. */\n initialWidth?: string;\n /** Callback fired when the user finishes resizing the agent panel. */\n onResizeEnd?: (width: string) => void;\n}\n\nexport interface CoachLoadingContentProps {\n message?: string;\n markdownMap?: MDMap;\n progressSteps?: string[];\n progressStepsCompleted?: number;\n simplified?: boolean;\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import type { ReactNode, Ref } from 'react';
2
+ import { getMasterDetailTestIds } from './MasterDetail.test-ids';
3
+ import type { MasterDetailProps } from './MasterDetail.types';
4
+ interface DetailPanelHeaderProps {
5
+ /** Test identifiers for the header elements. */
6
+ testIds: Partial<ReturnType<typeof getMasterDetailTestIds>>;
7
+ /** Primary identity content shown in the header. */
8
+ header?: ReactNode;
9
+ /** Icon displayed with the header identity. */
10
+ icon?: string;
11
+ /** Static or on-demand header actions. */
12
+ actions?: NonNullable<NonNullable<MasterDetailProps['selection']>['actions']>;
13
+ /** Accessible context appended to the actions menu label. */
14
+ contextualLabel?: string;
15
+ /** Accessible name for the close control. */
16
+ closeLabel?: string;
17
+ /** Ref forwarded to the close control. */
18
+ closeRef?: Ref<HTMLButtonElement>;
19
+ /** Omit to render the header for the root record. Supply it to step back to the previous one. */
20
+ onBack?: () => void;
21
+ /** Omit on the nested header. Only the root header owns close functionality. */
22
+ onClose?: () => void;
23
+ /** Applies nested-header presentation styles. */
24
+ isNested?: boolean;
25
+ }
26
+ /** Renders the common header chrome for the root and nested detail surfaces. */
27
+ declare const DetailPanelHeader: ({ testIds, header, icon, actions, contextualLabel, closeLabel, closeRef, onBack, onClose, isNested }: DetailPanelHeaderProps) => import("react/jsx-runtime").JSX.Element;
28
+ export default DetailPanelHeader;
29
+ //# sourceMappingURL=DetailPanelHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailPanelHeader.d.ts","sourceRoot":"","sources":["../../../src/components/MasterDetail/DetailPanelHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAY5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,UAAU,sBAAsB;IAC9B,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC;IAC5D,oDAAoD;IACpD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,OAAO,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9E,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAClC,iGAAiG;IACjG,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gFAAgF;AAChF,QAAA,MAAM,iBAAiB,GAAI,sGAWxB,sBAAsB,4CAiDxB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Icon, Text, useDirection, useI18n, useTheme } from '@pega/cosmos-react-core';
3
+ import { StyledDetailPanelHeader, StyledDetailPanelIcon, StyledDetailPanelIdentity, StyledCloseButtonGroup, StyledBackButton } from './MasterDetail.styles';
4
+ import MasterDetailActions from './MasterDetailActions';
5
+ import { getMasterDetailTestIds } from './MasterDetail.test-ids';
6
+ /** Renders the common header chrome for the root and nested detail surfaces. */
7
+ const DetailPanelHeader = ({ testIds, header, icon, actions, contextualLabel, closeLabel, closeRef, onBack, onClose, isNested }) => {
8
+ const t = useI18n();
9
+ const theme = useTheme();
10
+ const { start } = useDirection();
11
+ return (_jsxs(StyledDetailPanelHeader, { "data-testid": testIds.header, "$isNested": isNested, children: [onBack && (_jsx(StyledBackButton, { "data-testid": testIds.back, icon: true, compact: true, onClick: () => onBack(), label: t('back'), variant: 'simple', children: _jsx(Icon, { name: `arrow-${start}` }) })), _jsxs(StyledDetailPanelIdentity, { "data-testid": testIds.identity, children: [icon && (_jsx(StyledDetailPanelIcon, { name: icon, background: theme.base.palette.interactive, size: 's', shape: 'square' })), header ? _jsx(Text, { variant: 'h2', children: header }) : null] }), (actions || onClose) && (_jsxs(StyledCloseButtonGroup, { children: [actions && _jsx(MasterDetailActions, { actions: actions, contextualLabel: contextualLabel }), onClose && (_jsx(Button, { "data-testid": testIds.close, icon: true, onClick: () => onClose(), ref: closeRef, label: closeLabel, variant: 'simple', children: _jsx(Icon, { name: 'times' }) }))] }))] }));
12
+ };
13
+ export default DetailPanelHeader;
14
+ //# sourceMappingURL=DetailPanelHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailPanelHeader.js","sourceRoot":"","sources":["../../../src/components/MasterDetail/DetailPanelHeader.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE9F,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AA0BjE,gFAAgF;AAChF,MAAM,iBAAiB,GAAG,CAAC,EACzB,OAAO,EACP,MAAM,EACN,IAAI,EACJ,OAAO,EACP,eAAe,EACf,UAAU,EACV,QAAQ,EACR,MAAM,EACN,OAAO,EACP,QAAQ,EACe,EAAE,EAAE;IAC3B,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC;IAEjC,OAAO,CACL,MAAC,uBAAuB,mBAAc,OAAO,CAAC,MAAM,eAAa,QAAQ,aACtE,MAAM,IAAI,CACT,KAAC,gBAAgB,mBACF,OAAO,CAAC,IAAI,EACzB,IAAI,QACJ,OAAO,QACP,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EACvB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAChB,OAAO,EAAC,QAAQ,YAEhB,KAAC,IAAI,IAAC,IAAI,EAAE,SAAS,KAAK,EAAE,GAAI,GACf,CACpB,EACD,MAAC,yBAAyB,mBAAc,OAAO,CAAC,QAAQ,aACrD,IAAI,IAAI,CACP,KAAC,qBAAqB,IACpB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAC1C,IAAI,EAAC,GAAG,EACR,KAAK,EAAC,QAAQ,GACd,CACH,EACA,MAAM,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,OAAO,EAAC,IAAI,YAAE,MAAM,GAAQ,CAAC,CAAC,CAAC,IAAI,IACzB,EAC3B,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CACvB,MAAC,sBAAsB,eACpB,OAAO,IAAI,KAAC,mBAAmB,IAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,GAAI,EACtF,OAAO,IAAI,CACV,KAAC,MAAM,mBACQ,OAAO,CAAC,KAAK,EAC1B,IAAI,QACJ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EACxB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,UAAU,EACjB,OAAO,EAAC,QAAQ,YAEhB,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,GAAG,GACd,CACV,IACsB,CAC1B,IACuB,CAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import type { ReactNode, Ref } from 'react';\n\nimport { Button, Icon, Text, useDirection, useI18n, useTheme } from '@pega/cosmos-react-core';\n\nimport {\n StyledDetailPanelHeader,\n StyledDetailPanelIcon,\n StyledDetailPanelIdentity,\n StyledCloseButtonGroup,\n StyledBackButton\n} from './MasterDetail.styles';\nimport MasterDetailActions from './MasterDetailActions';\nimport { getMasterDetailTestIds } from './MasterDetail.test-ids';\nimport type { MasterDetailProps } from './MasterDetail.types';\n\ninterface DetailPanelHeaderProps {\n /** Test identifiers for the header elements. */\n testIds: Partial<ReturnType<typeof getMasterDetailTestIds>>;\n /** Primary identity content shown in the header. */\n header?: ReactNode;\n /** Icon displayed with the header identity. */\n icon?: string;\n /** Static or on-demand header actions. */\n actions?: NonNullable<NonNullable<MasterDetailProps['selection']>['actions']>;\n /** Accessible context appended to the actions menu label. */\n contextualLabel?: string;\n /** Accessible name for the close control. */\n closeLabel?: string;\n /** Ref forwarded to the close control. */\n closeRef?: Ref<HTMLButtonElement>;\n /** Omit to render the header for the root record. Supply it to step back to the previous one. */\n onBack?: () => void;\n /** Omit on the nested header. Only the root header owns close functionality. */\n onClose?: () => void;\n /** Applies nested-header presentation styles. */\n isNested?: boolean;\n}\n\n/** Renders the common header chrome for the root and nested detail surfaces. */\nconst DetailPanelHeader = ({\n testIds,\n header,\n icon,\n actions,\n contextualLabel,\n closeLabel,\n closeRef,\n onBack,\n onClose,\n isNested\n}: DetailPanelHeaderProps) => {\n const t = useI18n();\n const theme = useTheme();\n const { start } = useDirection();\n\n return (\n <StyledDetailPanelHeader data-testid={testIds.header} $isNested={isNested}>\n {onBack && (\n <StyledBackButton\n data-testid={testIds.back}\n icon\n compact\n onClick={() => onBack()}\n label={t('back')}\n variant='simple'\n >\n <Icon name={`arrow-${start}`} />\n </StyledBackButton>\n )}\n <StyledDetailPanelIdentity data-testid={testIds.identity}>\n {icon && (\n <StyledDetailPanelIcon\n name={icon}\n background={theme.base.palette.interactive}\n size='s'\n shape='square'\n />\n )}\n {header ? <Text variant='h2'>{header}</Text> : null}\n </StyledDetailPanelIdentity>\n {(actions || onClose) && (\n <StyledCloseButtonGroup>\n {actions && <MasterDetailActions actions={actions} contextualLabel={contextualLabel} />}\n {onClose && (\n <Button\n data-testid={testIds.close}\n icon\n onClick={() => onClose()}\n ref={closeRef}\n label={closeLabel}\n variant='simple'\n >\n <Icon name='times' />\n </Button>\n )}\n </StyledCloseButtonGroup>\n )}\n </StyledDetailPanelHeader>\n );\n};\n\nexport default DetailPanelHeader;\n"]}
@@ -0,0 +1,6 @@
1
+ import type { MasterDetailProps } from './MasterDetail.types';
2
+ declare const _default: import("react").ForwardRefExoticComponent<MasterDetailProps & import("react").RefAttributes<HTMLDivElement>> & {
3
+ getTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly ["master", "resizeHandle", "detail", "header", "nestedHeader", "nav", "prev", "next", "identity", "nestedIdentity", "position", "back", "close", "body", "progress"]>;
4
+ };
5
+ export default _default;
6
+ //# sourceMappingURL=MasterDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MasterDetail.d.ts","sourceRoot":"","sources":["../../../src/components/MasterDetail/MasterDetail.tsx"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;;;;AA4O9D,wBAAiE"}
@@ -0,0 +1,116 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { forwardRef, useEffect, useRef, useState } from 'react';
3
+ import { Icon, Progress, ResizeHandle, createClassName, getFocusables, registerIcon, useConsolidatedRef, useElement, useEscape, useFocusTrap, useI18n, useLiveLog, usePrevious, useTestIds, withTestIds } from '@pega/cosmos-react-core';
4
+ import * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';
5
+ import * as moreIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/more.icon';
6
+ import * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';
7
+ import * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';
8
+ import { StyledDetailPanel, StyledDetailPanelBody, StyledDetailPanelInner, StyledDetailPanelNav, StyledMasterDetail, StyledMasterRegion, StyledResizeHandleSlot, StyledNavButtonGroup, StyledNavButton } from './MasterDetail.styles';
9
+ import DetailPanelHeader from './DetailPanelHeader';
10
+ import { getMasterDetailTestIds } from './MasterDetail.test-ids';
11
+ registerIcon(timesIcon, moreIcon, caretUpIcon, caretDownIcon);
12
+ const DEFAULT_RATIO = 60;
13
+ const KEYBOARD_STEP = 2;
14
+ /**
15
+ * Layout component that arranges a `master` surface (e.g. a table) and its detail surface so they
16
+ * share the host box. It owns the split/overlay decision (including the responsive `auto` behavior
17
+ * measured against its own container), the drag/keyboard resize, and the detail surface itself —
18
+ * the header chrome (previous/next/close + identity), the body, and the surface accessibility (focus
19
+ * move/restore, Esc-to-close, and polite selection announcements).
20
+ *
21
+ * It is pure presentation: the panel content and data loading remain the host's responsibility —
22
+ * pass rendered `detail`, the `selection` metadata, and the navigation/close callbacks.
23
+ */
24
+ const MasterDetail = forwardRef(function MasterDetail({ testId, master, detail, open, className, selection, loading, presentation, nestedNavigation, resizeable = true, splitRatio, onClose, onResize, restoreFocusRef }, ref) {
25
+ const testIds = useTestIds(testId, getMasterDetailTestIds);
26
+ const t = useI18n();
27
+ const { announcePolite } = useLiveLog();
28
+ const wrapperRef = useConsolidatedRef(ref);
29
+ const panelRef = useRef(null);
30
+ const [bodyEl, setBodyEl] = useElement();
31
+ const [closeButtonEl, setCloseButtonEl] = useElement();
32
+ const isOverlay = open && presentation === 'overlay';
33
+ const controlledRatio = splitRatio?.ratio;
34
+ const [internalRatio, setInternalRatio] = useState(controlledRatio ?? DEFAULT_RATIO);
35
+ const ratio = controlledRatio ?? internalRatio;
36
+ const [minRatio, maxRatio] = splitRatio?.range ?? [20, 80];
37
+ const applyRatio = (next) => {
38
+ const clamped = Math.min(Math.max(next, minRatio), maxRatio);
39
+ setInternalRatio(clamped);
40
+ onResize?.(clamped);
41
+ };
42
+ const startDragRef = useRef(null);
43
+ const onHandleMouseDown = (e) => {
44
+ const container = wrapperRef.current;
45
+ if (!container)
46
+ return;
47
+ const rect = container.getBoundingClientRect();
48
+ startDragRef.current = { startX: e.clientX, startWidth: ratio, rect };
49
+ const handleMouseMove = (moveEvent) => {
50
+ const drag = startDragRef.current;
51
+ if (!drag)
52
+ return;
53
+ const deltaPercent = ((moveEvent.clientX - drag.startX) / drag.rect.width) * 100;
54
+ applyRatio(drag.startWidth + deltaPercent);
55
+ };
56
+ const handleMouseUp = () => {
57
+ startDragRef.current = null;
58
+ document.removeEventListener('mousemove', handleMouseMove);
59
+ document.removeEventListener('mouseup', handleMouseUp);
60
+ };
61
+ document.addEventListener('mousemove', handleMouseMove);
62
+ document.addEventListener('mouseup', handleMouseUp);
63
+ };
64
+ const onHandleKeyDown = (e, grabbed) => {
65
+ if (!grabbed)
66
+ return;
67
+ if (e.key === 'ArrowLeft') {
68
+ e.preventDefault();
69
+ applyRatio(ratio - KEYBOARD_STEP);
70
+ }
71
+ if (e.key === 'ArrowRight') {
72
+ e.preventDefault();
73
+ applyRatio(ratio + KEYBOARD_STEP);
74
+ }
75
+ };
76
+ const label = selection?.accessibleName
77
+ ? t('detail_of_noun', [selection.accessibleName])
78
+ : t('detail');
79
+ // Trap focus only in overlay mode — a docked surface is part of the page flow and must not trap.
80
+ useFocusTrap(panelRef, isOverlay, [], false);
81
+ // Escape closes the detail when focus is within it.
82
+ useEscape(() => open && onClose(), panelRef);
83
+ // Move focus into the detail on open; restore focus to the trigger on close/unmount.
84
+ useEffect(() => {
85
+ if (!open)
86
+ return undefined;
87
+ const focusables = bodyEl ? getFocusables(bodyEl).filter(el => el !== closeButtonEl) : [];
88
+ (focusables[0] ?? closeButtonEl)?.focus();
89
+ return () => {
90
+ restoreFocusRef?.current?.focus();
91
+ };
92
+ }, [open]);
93
+ // Announce selection changes (previous/next navigation) via a polite live region.
94
+ const prevSelectionId = usePrevious(selection?.id);
95
+ useEffect(() => {
96
+ if (open && selection?.id && selection.id !== prevSelectionId && selection.accessibleName) {
97
+ announcePolite({ message: t('showing_detail_of_noun', [selection.accessibleName]) });
98
+ }
99
+ }, [open, selection?.id]);
100
+ const showResize = resizeable && open && !isOverlay;
101
+ const showNav = !!selection?.onPrevious || !!selection?.onNext;
102
+ const isNested = !!nestedNavigation?.onBack;
103
+ const nestedTitle = nestedNavigation?.title;
104
+ const detailContent = loading ? null : _jsx("div", { children: detail });
105
+ let detailBody = detailContent;
106
+ if (loading) {
107
+ detailBody = (_jsxs(_Fragment, { children: [detailContent, _jsx(Progress, { "data-testid": testIds.progress, placement: 'local', visible: true })] }));
108
+ }
109
+ return (_jsxs(StyledMasterDetail, { "data-testid": testIds.root, ref: wrapperRef, className: createClassName('master-detail', className), container: true, "$open": open, "$overlay": isOverlay, "$masterWidth": ratio, children: [_jsx(StyledMasterRegion, { container: true, "data-testid": testIds.master, children: master }), showResize && (_jsx(StyledResizeHandleSlot, { container: true, "data-testid": testIds.resizeHandle, children: _jsx(ResizeHandle, { onMouseDown: onHandleMouseDown, onKeyDown: onHandleKeyDown, contextualLabel: t('detail') }) })), open && (_jsx(StyledDetailPanel, { "data-testid": testIds.detail, ref: panelRef, role: isOverlay ? 'dialog' : 'complementary', "aria-modal": isOverlay || undefined, "aria-label": label, presentation: isOverlay ? 'overlay' : 'docked', children: _jsxs(StyledDetailPanelInner, { children: [_jsx(DetailPanelHeader, { testIds: testIds, header: selection?.header, icon: selection?.icon, actions: selection?.actions, contextualLabel: selection?.accessibleName, closeLabel: t('close_detail'), closeRef: setCloseButtonEl, onClose: onClose }), isNested && (_jsx(DetailPanelHeader, { testIds: {
110
+ header: testIds.nestedHeader,
111
+ identity: testIds.nestedIdentity,
112
+ back: testIds.back
113
+ }, header: nestedTitle, icon: nestedNavigation?.icon, onBack: nestedNavigation?.onBack, isNested: true })), _jsx(StyledDetailPanelBody, { "data-testid": testIds.body, ref: setBodyEl, children: detailBody }), showNav && !isNested && (_jsx(StyledDetailPanelNav, { "data-testid": testIds.nav, children: _jsxs(StyledNavButtonGroup, { children: [_jsx(StyledNavButton, { "data-testid": testIds.prev, icon: true, disabled: !selection?.onPrevious, onClick: () => selection?.onPrevious?.(), label: t('previous_record'), variant: 'simple', children: _jsx(Icon, { name: 'caret-up' }) }), _jsx(StyledNavButton, { "data-testid": testIds.next, icon: true, disabled: !selection?.onNext, onClick: () => selection?.onNext?.(), label: t('next_record'), variant: 'simple', children: _jsx(Icon, { name: 'caret-down' }) })] }) }))] }) }))] }));
114
+ });
115
+ export default withTestIds(MasterDetail, getMasterDetailTestIds);
116
+ //# sourceMappingURL=MasterDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MasterDetail.js","sourceRoot":"","sources":["../../../src/components/MasterDetail/MasterDetail.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useEffect, useRef, useState } from 'react';\nimport type {\n KeyboardEvent as ReactKeyboardEvent,\n MouseEvent as ReactMouseEvent,\n PropsWithoutRef,\n Ref\n} from 'react';\n\nimport {\n Icon,\n Progress,\n ResizeHandle,\n createClassName,\n getFocusables,\n registerIcon,\n useConsolidatedRef,\n useElement,\n useEscape,\n useFocusTrap,\n useI18n,\n useLiveLog,\n usePrevious,\n useTestIds,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\nimport * as moreIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/more.icon';\nimport * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\n\nimport {\n StyledDetailPanel,\n StyledDetailPanelBody,\n StyledDetailPanelInner,\n StyledDetailPanelNav,\n StyledMasterDetail,\n StyledMasterRegion,\n StyledResizeHandleSlot,\n StyledNavButtonGroup,\n StyledNavButton\n} from './MasterDetail.styles';\nimport DetailPanelHeader from './DetailPanelHeader';\nimport { getMasterDetailTestIds } from './MasterDetail.test-ids';\nimport type { MasterDetailProps } from './MasterDetail.types';\n\nregisterIcon(timesIcon, moreIcon, caretUpIcon, caretDownIcon);\n\nconst DEFAULT_RATIO = 60;\nconst KEYBOARD_STEP = 2;\n\n/**\n * Layout component that arranges a `master` surface (e.g. a table) and its detail surface so they\n * share the host box. It owns the split/overlay decision (including the responsive `auto` behavior\n * measured against its own container), the drag/keyboard resize, and the detail surface itself —\n * the header chrome (previous/next/close + identity), the body, and the surface accessibility (focus\n * move/restore, Esc-to-close, and polite selection announcements).\n *\n * It is pure presentation: the panel content and data loading remain the host's responsibility —\n * pass rendered `detail`, the `selection` metadata, and the navigation/close callbacks.\n */\nconst MasterDetail = forwardRef(function MasterDetail(\n {\n testId,\n master,\n detail,\n open,\n className,\n selection,\n loading,\n presentation,\n nestedNavigation,\n resizeable = true,\n splitRatio,\n onClose,\n onResize,\n restoreFocusRef\n }: PropsWithoutRef<MasterDetailProps>,\n ref: Ref<HTMLDivElement>\n) {\n const testIds = useTestIds(testId, getMasterDetailTestIds);\n const t = useI18n();\n const { announcePolite } = useLiveLog();\n\n const wrapperRef = useConsolidatedRef<HTMLDivElement>(ref);\n const panelRef = useRef<HTMLElement>(null);\n const [bodyEl, setBodyEl] = useElement<HTMLDivElement>();\n const [closeButtonEl, setCloseButtonEl] = useElement<HTMLButtonElement>();\n\n const isOverlay = open && presentation === 'overlay';\n\n const controlledRatio = splitRatio?.ratio;\n const [internalRatio, setInternalRatio] = useState(controlledRatio ?? DEFAULT_RATIO);\n const ratio = controlledRatio ?? internalRatio;\n const [minRatio, maxRatio] = splitRatio?.range ?? [20, 80];\n\n const applyRatio = (next: number) => {\n const clamped = Math.min(Math.max(next, minRatio), maxRatio);\n setInternalRatio(clamped);\n onResize?.(clamped);\n };\n\n const startDragRef = useRef<{ startX: number; startWidth: number; rect: DOMRect } | null>(null);\n\n const onHandleMouseDown = (e: ReactMouseEvent) => {\n const container = wrapperRef.current;\n if (!container) return;\n const rect = container.getBoundingClientRect();\n startDragRef.current = { startX: e.clientX, startWidth: ratio, rect };\n\n const handleMouseMove = (moveEvent: globalThis.MouseEvent) => {\n const drag = startDragRef.current;\n if (!drag) return;\n const deltaPercent = ((moveEvent.clientX - drag.startX) / drag.rect.width) * 100;\n applyRatio(drag.startWidth + deltaPercent);\n };\n\n const handleMouseUp = () => {\n startDragRef.current = null;\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n };\n\n const onHandleKeyDown = (e: ReactKeyboardEvent, grabbed: boolean) => {\n if (!grabbed) return;\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n applyRatio(ratio - KEYBOARD_STEP);\n }\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n applyRatio(ratio + KEYBOARD_STEP);\n }\n };\n\n const label = selection?.accessibleName\n ? t('detail_of_noun', [selection.accessibleName])\n : t('detail');\n\n // Trap focus only in overlay mode — a docked surface is part of the page flow and must not trap.\n useFocusTrap(panelRef, isOverlay, [], false);\n\n // Escape closes the detail when focus is within it.\n useEscape(() => open && onClose(), panelRef);\n\n // Move focus into the detail on open; restore focus to the trigger on close/unmount.\n useEffect(() => {\n if (!open) return undefined;\n\n const focusables = bodyEl ? getFocusables(bodyEl).filter(el => el !== closeButtonEl) : [];\n (focusables[0] ?? closeButtonEl)?.focus();\n\n return () => {\n restoreFocusRef?.current?.focus();\n };\n }, [open]);\n\n // Announce selection changes (previous/next navigation) via a polite live region.\n const prevSelectionId = usePrevious(selection?.id);\n useEffect(() => {\n if (open && selection?.id && selection.id !== prevSelectionId && selection.accessibleName) {\n announcePolite({ message: t('showing_detail_of_noun', [selection.accessibleName]) });\n }\n }, [open, selection?.id]);\n\n const showResize = resizeable && open && !isOverlay;\n\n const showNav = !!selection?.onPrevious || !!selection?.onNext;\n const isNested = !!nestedNavigation?.onBack;\n const nestedTitle = nestedNavigation?.title;\n const detailContent = loading ? null : <div>{detail}</div>;\n let detailBody = detailContent;\n\n if (loading) {\n detailBody = (\n <>\n {detailContent}\n <Progress data-testid={testIds.progress} placement='local' visible />\n </>\n );\n }\n\n return (\n <StyledMasterDetail\n data-testid={testIds.root}\n ref={wrapperRef}\n className={createClassName('master-detail', className)}\n container\n $open={open}\n $overlay={isOverlay}\n $masterWidth={ratio}\n >\n <StyledMasterRegion container data-testid={testIds.master}>\n {master}\n </StyledMasterRegion>\n\n {showResize && (\n <StyledResizeHandleSlot container data-testid={testIds.resizeHandle}>\n <ResizeHandle\n onMouseDown={onHandleMouseDown}\n onKeyDown={onHandleKeyDown}\n contextualLabel={t('detail')}\n />\n </StyledResizeHandleSlot>\n )}\n\n {open && (\n <StyledDetailPanel\n data-testid={testIds.detail}\n ref={panelRef}\n role={isOverlay ? 'dialog' : 'complementary'}\n aria-modal={isOverlay || undefined}\n aria-label={label}\n presentation={isOverlay ? 'overlay' : 'docked'}\n >\n <StyledDetailPanelInner>\n <DetailPanelHeader\n testIds={testIds}\n header={selection?.header}\n icon={selection?.icon}\n actions={selection?.actions}\n contextualLabel={selection?.accessibleName}\n closeLabel={t('close_detail')}\n closeRef={setCloseButtonEl}\n onClose={onClose}\n />\n {isNested && (\n <DetailPanelHeader\n testIds={{\n header: testIds.nestedHeader,\n identity: testIds.nestedIdentity,\n back: testIds.back\n }}\n header={nestedTitle}\n icon={nestedNavigation?.icon}\n onBack={nestedNavigation?.onBack}\n isNested\n />\n )}\n\n <StyledDetailPanelBody data-testid={testIds.body} ref={setBodyEl}>\n {detailBody}\n </StyledDetailPanelBody>\n {showNav && !isNested && (\n <StyledDetailPanelNav data-testid={testIds.nav}>\n <StyledNavButtonGroup>\n <StyledNavButton\n data-testid={testIds.prev}\n icon\n disabled={!selection?.onPrevious}\n onClick={() => selection?.onPrevious?.()}\n label={t('previous_record')}\n variant='simple'\n >\n <Icon name='caret-up' />\n </StyledNavButton>\n <StyledNavButton\n data-testid={testIds.next}\n icon\n disabled={!selection?.onNext}\n onClick={() => selection?.onNext?.()}\n label={t('next_record')}\n variant='simple'\n >\n <Icon name='caret-down' />\n </StyledNavButton>\n </StyledNavButtonGroup>\n </StyledDetailPanelNav>\n )}\n </StyledDetailPanelInner>\n </StyledDetailPanel>\n )}\n </StyledMasterDetail>\n );\n});\n\nexport default withTestIds(MasterDetail, getMasterDetailTestIds);\n"]}