From 3924732b9327d15eab85d73fe587afd8f70db774 Mon Sep 17 00:00:00 2001 From: Rebecca Alpert Date: Thu, 24 Jul 2025 11:03:16 -0400 Subject: [PATCH] chore(docs): Add demo for live progress summary card Adding demo for card as custom component. It is not something we ship, but providing proof we can enable complex card behavior as an injected component. --- .../chatbot/examples/Messages/Messages.md | 1 + .../Messages/UserMessageWithExtraContent.tsx | 270 +++++++++++++++++- 2 files changed, 260 insertions(+), 11 deletions(-) diff --git a/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md b/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md index 981464fdf..493aefd92 100644 --- a/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +++ b/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md @@ -30,6 +30,7 @@ propComponents: sortValue: 3 --- +import { ArrowRightIcon, CheckCircleIcon } from '@patternfly/react-icons'; import Message from '@patternfly/chatbot/dist/dynamic/Message'; import MessageDivider from '@patternfly/chatbot/dist/dynamic/MessageDivider'; import { rehypeCodeBlockToggle } from '@patternfly/chatbot/dist/esm/Message/Plugins/rehypeCodeBlockToggle'; diff --git a/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx b/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx index db5acf761..7a50ef03b 100644 --- a/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +++ b/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx @@ -1,8 +1,36 @@ -import { Fragment, FunctionComponent } from 'react'; - +import { Fragment, FunctionComponent, useState } from 'react'; import Message from '@patternfly/chatbot/dist/dynamic/Message'; import userAvatar from './user_avatar.svg'; -import { Alert, Badge, Button, Card, CardBody, CardFooter, CardTitle } from '@patternfly/react-core'; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionToggle, + Alert, + Badge, + Button, + Card, + CardBody, + CardFooter, + CodeBlock, + DescriptionList, + DescriptionListDescription, + DescriptionListGroup, + DescriptionListTerm, + HelperText, + HelperTextItem, + Progress, + ProgressMeasureLocation, + Flex, + FlexItem, + CardTitle, + CardHeader, + CardExpandableContent, + Spinner, + CodeBlockCode +} from '@patternfly/react-core'; +import { ArrowRightIcon, CheckCircleIcon } from '@patternfly/react-icons'; +import React from 'react'; const UserActionEndContent = () => { // eslint-disable-next-line no-console @@ -17,14 +45,6 @@ const UserActionEndContent = () => { ); }; -const CardInformationAfterMainContent = () => ( - - This is content card after main content - Body - Footer - -); - const BeforeMainContent = () => (
@@ -36,6 +56,224 @@ const BeforeMainContent = () => (
); +const CardInformationAfterMainContent = () => ( + + This is content card after main content + Body + Footer + +); + +const LiveProgressSummaryCard = () => { + const [isCardExpanded, setIsCardExpanded] = useState(false); + const [isAccordionExpanded, setIsAccordionExpanded] = useState('deploying-toggle'); + + const onExpandCard = (_event: React.MouseEvent) => { + setIsCardExpanded(!isCardExpanded); + }; + + const onExpandAccordion = (id: string) => { + if (id === isAccordionExpanded) { + setIsAccordionExpanded(''); + } else { + setIsAccordionExpanded(id); + } + }; + + const renderCodeBlock = (initialWord: string) => ( + + + {`${initialWord} openshift-apiserver operator... +${initialWord} openshift-sdn operator... +${initialWord} openshift-ingress operator...`} + + + ); + + return ( + // eslint-disable-next-line no-console + + + + + + OpenShift cluster installation + + + + + + Deploying cluster operators + + + + + About 23 minutes left + + + + } + /> + + + + + + +
+ + + { + onExpandAccordion('installing-toggle'); + }} + id="installing-toggle" + > + + + + + Installing cluster bootstrap + + + + {renderCodeBlock('Installing')} + + + + { + onExpandAccordion('setup-toggle'); + }} + id="setup-toggle" + > + + + + + Control plane setup + + + + {renderCodeBlock('Setting up')} + + + + { + onExpandAccordion('deploying-toggle'); + }} + id="deploying-toggle" + > + + + + + Deploying cluster operators + + + + {renderCodeBlock('Deploying')} + + + + { + onExpandAccordion('finalizing-toggle'); + }} + id="finalizing-toggle" + disabled + > + + {/* Empty space to maintain consistent alignment */} + Finalizing installation + + + + {renderCodeBlock('Finalizing')} + + + +
+
+ + + +
+ ); +}; + export const UserMessageWithExtraContent: FunctionComponent = () => ( <> ( endContent: }} /> + + }} + /> );