@patternfly/quickstarts 6.0.0-alpha.1 → 6.0.0-alpha.3

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 (118) hide show
  1. package/dist/ConsoleInternal/components/markdown-view.d.ts +0 -1
  2. package/dist/ConsoleShared/src/components/markdown-extensions/accordion-extension.d.ts +0 -1
  3. package/dist/ConsoleShared/src/components/markdown-extensions/admonition-extension.d.ts +0 -1
  4. package/dist/ConsoleShared/src/components/markdown-extensions/code-extension.d.ts +0 -1
  5. package/dist/ConsoleShared/src/components/markdown-extensions/inline-clipboard-extension.d.ts +0 -1
  6. package/dist/ConsoleShared/src/components/markdown-extensions/multiline-clipboard-extension.d.ts +0 -1
  7. package/dist/ConsoleShared/src/components/modal/Modal.d.ts +1 -2
  8. package/dist/ConsoleShared/src/components/spotlight/InteractiveSpotlight.d.ts +0 -1
  9. package/dist/ConsoleShared/src/components/spotlight/StaticSpotlight.d.ts +0 -1
  10. package/dist/HelpTopicDrawer.d.ts +0 -1
  11. package/dist/HelpTopicPanelContent.d.ts +0 -1
  12. package/dist/QuickStartDrawer.d.ts +0 -1
  13. package/dist/QuickStartPanelContent.d.ts +2 -2
  14. package/dist/catalog/QuickStartCatalog.d.ts +0 -1
  15. package/dist/catalog/QuickStartTile.d.ts +18 -1
  16. package/dist/catalog/QuickStartTileDescription.d.ts +0 -1
  17. package/dist/catalog/QuickStartTileFooter.d.ts +1 -0
  18. package/dist/catalog/QuickStartTileHeader.d.ts +1 -5
  19. package/dist/catalog/Toolbar/QuickStartCatalogFilter.d.ts +0 -1
  20. package/dist/controller/QuickStartContent.d.ts +1 -1
  21. package/dist/controller/QuickStartFooter.d.ts +1 -1
  22. package/dist/controller/QuickStartIntroduction.d.ts +0 -1
  23. package/dist/controller/QuickStartTaskHeaderList.d.ts +0 -1
  24. package/dist/controller/QuickStartTaskReview.d.ts +0 -1
  25. package/dist/controller/QuickStartTasks.d.ts +0 -1
  26. package/dist/index.es.js +196 -288
  27. package/dist/index.es.js.map +1 -1
  28. package/dist/index.js +197 -288
  29. package/dist/index.js.map +1 -1
  30. package/dist/patternfly-docs/quick-starts/examples/HelpTopic.jsx +4 -4
  31. package/dist/patternfly-docs/quick-starts/examples/example-data/example-help-topics.js +9 -18
  32. package/dist/patternfly-global.css +20 -66
  33. package/dist/patternfly-nested.css +2036 -2119
  34. package/dist/quickstarts-base.css +38 -415
  35. package/dist/quickstarts-full.es.js +1417 -847
  36. package/dist/quickstarts-full.es.js.map +1 -1
  37. package/dist/quickstarts-standalone.css +41 -376
  38. package/dist/quickstarts-standalone.min.css +3 -3
  39. package/dist/quickstarts-vendor.css +6 -11
  40. package/dist/quickstarts.css +44 -426
  41. package/dist/quickstarts.min.css +1 -1
  42. package/dist/utils/quick-start-context.d.ts +2 -0
  43. package/dist/utils/quick-start-types.d.ts +1 -1
  44. package/package.json +13 -15
  45. package/src/ConsoleInternal/components/markdown-view.tsx +29 -9
  46. package/src/ConsoleShared/src/components/markdown-extensions/accordion-extension.tsx +10 -17
  47. package/src/ConsoleShared/src/components/markdown-extensions/admonition-extension.tsx +5 -11
  48. package/src/ConsoleShared/src/components/markdown-extensions/code-extension.tsx +2 -2
  49. package/src/ConsoleShared/src/components/markdown-extensions/inline-clipboard-extension.tsx +0 -1
  50. package/src/ConsoleShared/src/components/markdown-extensions/multiline-clipboard-extension.tsx +2 -6
  51. package/src/ConsoleShared/src/components/markdown-extensions/utils.ts +2 -1
  52. package/src/ConsoleShared/src/components/modal/Modal.tsx +1 -2
  53. package/src/ConsoleShared/src/components/popper/SimplePopper.tsx +5 -2
  54. package/src/ConsoleShared/src/components/spotlight/InteractiveSpotlight.tsx +0 -1
  55. package/src/ConsoleShared/src/components/spotlight/StaticSpotlight.tsx +0 -1
  56. package/src/ConsoleShared/src/components/status/icons.tsx +1 -5
  57. package/src/HelpTopicDrawer.tsx +1 -4
  58. package/src/HelpTopicPanelContent.tsx +4 -16
  59. package/src/QuickStartCatalogPage.tsx +34 -25
  60. package/src/QuickStartCloseModal.tsx +2 -2
  61. package/src/QuickStartController.tsx +2 -2
  62. package/src/QuickStartDrawer.tsx +2 -7
  63. package/src/QuickStartPanelContent.scss +7 -39
  64. package/src/QuickStartPanelContent.tsx +23 -47
  65. package/src/catalog/Catalog/QuickStartCatalogHeader.tsx +5 -4
  66. package/src/catalog/Catalog/QuickStartCatalogSection.tsx +1 -1
  67. package/src/catalog/Catalog/QuickStartCatalogToolbar.tsx +1 -3
  68. package/src/catalog/QuickStartCatalog.tsx +12 -16
  69. package/src/catalog/QuickStartTile.scss +11 -9
  70. package/src/catalog/QuickStartTile.tsx +135 -62
  71. package/src/catalog/QuickStartTileDescription.tsx +28 -42
  72. package/src/catalog/QuickStartTileFooter.tsx +13 -19
  73. package/src/catalog/QuickStartTileHeader.tsx +8 -58
  74. package/src/catalog/Toolbar/QuickStartCatalogFilter.tsx +8 -10
  75. package/src/catalog/Toolbar/QuickStartCatalogFilterItems.tsx +2 -5
  76. package/src/catalog/__tests__/QuickStartCatalog.spec.tsx +3 -3
  77. package/src/catalog/__tests__/QuickStartTile.spec.tsx +5 -5
  78. package/src/catalog/__tests__/QuickStartTileDescription.spec.tsx +1 -1
  79. package/src/controller/QuickStartConclusion.tsx +4 -4
  80. package/src/controller/QuickStartContent.scss +3 -7
  81. package/src/controller/QuickStartContent.tsx +3 -5
  82. package/src/controller/QuickStartFooter.scss +1 -11
  83. package/src/controller/QuickStartFooter.tsx +27 -21
  84. package/src/controller/QuickStartIntroduction.tsx +11 -16
  85. package/src/controller/QuickStartTaskHeader.scss +20 -42
  86. package/src/controller/QuickStartTaskHeader.tsx +25 -62
  87. package/src/controller/QuickStartTaskHeaderList.tsx +4 -6
  88. package/src/controller/QuickStartTaskReview.tsx +6 -12
  89. package/src/controller/QuickStartTasks.tsx +6 -8
  90. package/src/controller/__tests__/QuickStartConclusion.spec.tsx +6 -19
  91. package/src/controller/__tests__/QuickStartFooter.spec.tsx +9 -54
  92. package/src/controller/__tests__/QuickStartTaskHeader.spec.tsx +1 -1
  93. package/src/controller/__tests__/QuickStartTaskReview.spec.tsx +3 -6
  94. package/src/controller/__tests__/QuickStartTasks.spec.tsx +3 -6
  95. package/src/styles/_base.scss +3 -45
  96. package/src/styles/style.scss +1 -6
  97. package/src/utils/help-topic-context.tsx +2 -3
  98. package/src/utils/quick-start-context.tsx +12 -13
  99. package/src/utils/quick-start-types.ts +1 -1
  100. package/src/utils/quick-start-utils.ts +4 -2
  101. package/src/ConsoleInternal/components/_icon-and-text.scss +0 -14
  102. package/src/ConsoleInternal/components/_markdown-view.scss +0 -19
  103. package/src/ConsoleInternal/components/catalog/_catalog.scss +0 -392
  104. package/src/ConsoleInternal/components/utils/_status-box.scss +0 -58
  105. package/src/ConsoleShared/src/components/layout/PageLayout.scss +0 -29
  106. package/src/ConsoleShared/src/components/markdown-extensions/showdown-extension.scss +0 -52
  107. package/src/ConsoleShared/src/components/modal/Modal.scss +0 -3
  108. package/src/ConsoleShared/src/components/spotlight/spotlight.scss +0 -63
  109. package/src/QuickStartDrawer.scss +0 -11
  110. package/src/catalog/QuickStartCatalog.scss +0 -8
  111. package/src/catalog/QuickStartTileDescription.scss +0 -29
  112. package/src/catalog/QuickStartTileHeader.scss +0 -12
  113. package/src/catalog/Toolbar/QuickStartCatalogFilter.scss +0 -25
  114. package/src/controller/QuickStartIntroduction.scss +0 -35
  115. package/src/controller/QuickStartTaskHeaderList.scss +0 -17
  116. package/src/controller/QuickStartTaskReview.scss +0 -30
  117. package/src/controller/QuickStartTasks.scss +0 -90
  118. package/src/styles/_dark-custom-override.scss +0 -47
package/dist/index.es.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { createContext, useCallback, useEffect, useState } from 'react';
3
- import { getUniqueId, Card, CardHeader, CardTitle, CardBody, CardFooter, Modal as Modal$1, useIsomorphicLayoutEffect, Tooltip, Alert, CodeBlock, Accordion, AccordionItem, AccordionToggle, AccordionContent, Popover, PopoverPosition, Button, Icon, Text, TextVariants, TextList, TextListItem, Flex, FlexItem, Title, Label, Gallery, GalleryItem, ToolbarItem, SearchInput, Select, SelectList, SelectOption, MenuToggle, Badge, Toolbar, ToolbarContent, EmptyState, EmptyStateBody, EmptyStateFooter, EmptyStateActions, Divider, ModalVariant, WizardNavItem, List, ExpandableSection, ListItem, Radio, DrawerPanelContent, DrawerHead, DrawerActions, DrawerCloseButton, DrawerPanelBody, Drawer, DrawerContent, DrawerContentBody, Stack, StackItem } from '@patternfly/react-core';
3
+ import { useIsomorphicLayoutEffect, Tooltip, Alert, CodeBlock, Accordion, AccordionItem, AccordionToggle, AccordionContent, Popover, PopoverPosition, Button, Icon, Flex, FlexItem, Title, Card, CardHeader, CardTitle, CardBody, Stack, Label, CardFooter, Gallery, ToolbarItem, SearchInput, Select, SelectList, SelectOption, MenuToggle, Badge, Toolbar, ToolbarContent, EmptyState, EmptyStateBody, EmptyStateFooter, EmptyStateActions, PageSection, Content, Divider, WizardNavItem, ExpandableSection, List, ListItem, Radio, ActionList, ActionListGroup, ActionListItem, DrawerPanelContent, DrawerHead, DrawerActions, DrawerCloseButton, DrawerPanelBody, Drawer, DrawerContent, DrawerContentBody, StackItem } from '@patternfly/react-core';
4
4
  import SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';
5
5
  import { css } from '@patternfly/react-styles';
6
- import { __rest } from 'tslib';
7
- import '@patternfly/react-styles/css/components/Form/form';
8
6
  import RocketIcon from '@patternfly/react-icons/dist/js/icons/rocket-icon';
7
+ import { __rest } from 'tslib';
8
+ import { Modal as Modal$1, ModalVariant } from '@patternfly/react-core/deprecated';
9
9
  import * as ReactDOM from 'react-dom';
10
10
  import { renderToStaticMarkup } from 'react-dom/server';
11
11
  import CopyIcon from '@patternfly/react-icons/dist/js/icons/copy-icon';
@@ -17,6 +17,7 @@ import CheckCircleIcon from '@patternfly/react-icons/dist/js/icons/check-circle-
17
17
  import '@patternfly/react-icons/dist/js/icons/exclamation-circle-icon';
18
18
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
19
19
  import ExternalLinkAltIcon from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
20
+ import OutlinedBookmarkIcon from '@patternfly/react-icons/dist/js/icons/outlined-bookmark-icon';
20
21
  import OutlinedClockIcon from '@patternfly/react-icons/dist/js/icons/outlined-clock-icon';
21
22
  import ArrowRightIcon from '@patternfly/react-icons/dist/js/icons/arrow-right-icon';
22
23
  import BarsIcon from '@patternfly/react-icons/dist/js/icons/bars-icon';
@@ -576,6 +577,7 @@ const QuickStartContextDefaults = {
576
577
  markdown: null,
577
578
  loading: false,
578
579
  alwaysShowTaskReview: true,
580
+ focusOnQuickStart: true,
579
581
  };
580
582
  const QuickStartContext = createContext(QuickStartContextDefaults);
581
583
  const getResource = (resource, options, resourceBundle, lng) => {
@@ -752,9 +754,7 @@ const useValuesForQuickStartContext = (value = {}) => {
752
754
  setAllQuickStartStates((qs) => (Object.assign(Object.assign({}, qs), { [activeQuickStartID]: updatedQuickStart })));
753
755
  }, [allQuickStartStates, activeQuickStartID, setAllQuickStartStates]);
754
756
  const activeQuickStartState = (_b = allQuickStartStates === null || allQuickStartStates === void 0 ? void 0 : allQuickStartStates[activeQuickStartID]) !== null && _b !== void 0 ? _b : {};
755
- const getQuickStartForId = useCallback((id) => allQuickStartStates[id], [
756
- allQuickStartStates,
757
- ]);
757
+ const getQuickStartForId = useCallback((id) => allQuickStartStates[id], [allQuickStartStates]);
758
758
  return {
759
759
  allQuickStarts: quickStarts,
760
760
  setAllQuickStarts: updateAllQuickStarts,
@@ -833,66 +833,6 @@ const CamelCaseWrap = ({ value, dataTest }) => {
833
833
  return rendered;
834
834
  };
835
835
 
836
- class CatalogTile extends React.Component {
837
- constructor(props) {
838
- super(props);
839
- this.handleClick = (e) => {
840
- const { onClick, href } = this.props;
841
- if (!href) {
842
- e.preventDefault();
843
- }
844
- if (onClick) {
845
- onClick(e);
846
- }
847
- };
848
- this.renderBadges = (badges) => {
849
- if (!badges || !badges.length) {
850
- return null;
851
- }
852
- return (React.createElement("div", { className: "catalog-tile-pf-badge-container" }, badges.map((badge, index) => (React.createElement("span", { key: `badge-${index}` }, badge)))));
853
- };
854
- this.generatedId = getUniqueId('pf-catalog-tile');
855
- }
856
- render() {
857
- const _a = this.props, { id, className, featured, onClick, href, icon, iconImg, iconAlt, iconClass, badges, title, vendor, description, footer,
858
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
859
- ref, children } = _a, props = __rest(_a, ["id", "className", "featured", "onClick", "href", "icon", "iconImg", "iconAlt", "iconClass", "badges", "title", "vendor", "description", "footer", "ref", "children"]);
860
- return (React.createElement(Card, Object.assign({ component: href ? 'a' : 'div', id: id || this.generatedId, href: href || '#', className: css('catalog-tile-pf', { featured }, className), variant: featured ? 'secondary' : 'default', isClickable: !!onClick }, props),
861
- (badges.length > 0 || iconImg || iconClass || icon || onClick) && (React.createElement(CardHeader, { actions: { actions: badges.length > 0 && this.renderBadges(badges), hasNoOffset: true }, selectableActions: onClick && {
862
- selectableActionId: id + '-input',
863
- onClickAction: (e) => this.handleClick(e),
864
- selectableActionAriaLabelledby: id
865
- } },
866
- iconImg && React.createElement("img", { className: "catalog-tile-pf-icon", src: iconImg, alt: iconAlt }),
867
- !iconImg && (iconClass || icon) && React.createElement("span", { className: `catalog-tile-pf-icon ${iconClass}` }, icon))),
868
- React.createElement(CardTitle, { className: "catalog-tile-pf-header" },
869
- React.createElement("div", { className: "catalog-tile-pf-title" }, title),
870
- vendor && React.createElement("div", { className: "catalog-tile-pf-subtitle" }, vendor)),
871
- (description || children) && (React.createElement(CardBody, { className: "catalog-tile-pf-body" },
872
- description && (React.createElement("div", { className: "catalog-tile-pf-description" },
873
- React.createElement("span", { className: css({ 'has-footer': footer }) }, description))),
874
- children)),
875
- footer && React.createElement(CardFooter, { className: "catalog-tile-pf-footer" }, footer)));
876
- }
877
- }
878
- CatalogTile.displayName = 'CatalogTile';
879
- CatalogTile.defaultProps = {
880
- id: null,
881
- className: '',
882
- featured: false,
883
- onClick: null,
884
- href: null,
885
- iconImg: null,
886
- iconAlt: '',
887
- iconClass: '',
888
- icon: null,
889
- badges: [],
890
- vendor: null,
891
- description: null,
892
- footer: null,
893
- children: null
894
- };
895
-
896
836
  const Modal = (_a) => {
897
837
  var { isFullScreen = false, className } = _a, props = __rest(_a, ["isFullScreen", "className"]);
898
838
  return (React.createElement(Modal$1, Object.assign({}, props, { className: css('pfext-modal', className), appendTo: () => (isFullScreen ? document.body : document.querySelector('#modal-container')) })));
@@ -1026,44 +966,6 @@ var Shadows;
1026
966
  Shadows["top"] = "top";
1027
967
  Shadows["bottom"] = "bottom";
1028
968
  })(Shadows || (Shadows = {}));
1029
- const useScrollShadows = (node) => {
1030
- const [shadows, setShadows] = React.useState(Shadows.none);
1031
- const computeShadows = React.useCallback(() => {
1032
- if (node) {
1033
- const { scrollTop, clientHeight, scrollHeight } = node;
1034
- const top = scrollTop !== 0;
1035
- const bottom = scrollTop + clientHeight < scrollHeight;
1036
- if (top && bottom) {
1037
- setShadows(Shadows.both);
1038
- }
1039
- else if (top) {
1040
- setShadows(Shadows.top);
1041
- }
1042
- else if (bottom) {
1043
- setShadows(Shadows.bottom);
1044
- }
1045
- else {
1046
- setShadows(Shadows.none);
1047
- }
1048
- }
1049
- }, [node]);
1050
- // recompute when the scroll container changes in size
1051
- useResizeObserver(computeShadows, node);
1052
- React.useEffect(() => {
1053
- if (node) {
1054
- // compute initial shadows
1055
- computeShadows();
1056
- // listen for scroll events
1057
- node.addEventListener('scroll', computeShadows);
1058
- }
1059
- return () => {
1060
- if (node) {
1061
- node.removeEventListener('scroll', computeShadows);
1062
- }
1063
- };
1064
- }, [node, computeShadows]);
1065
- return shadows;
1066
- };
1067
969
 
1068
970
  const useBoundingClientRect = (targetElement) => {
1069
971
  const [clientRect, setClientRect] = React.useState(() => targetElement ? targetElement.getBoundingClientRect() : null);
@@ -1236,6 +1138,7 @@ const useInlineCopyClipboardShowdownExtension = () => {
1236
1138
  }), [getResource]);
1237
1139
  };
1238
1140
 
1141
+ /* eslint-disable max-len */
1239
1142
  const useMultilineCopyClipboardShowdownExtension = () => {
1240
1143
  const { getResource } = React.useContext(QuickStartContext);
1241
1144
  return React.useMemo(() => ({
@@ -1256,10 +1159,7 @@ const useMultilineCopyClipboardShowdownExtension = () => {
1256
1159
  </div>
1257
1160
  </div>
1258
1161
  <div class="pf-v6-c-code-block__content">
1259
- <pre class="pf-v6-c-code-block__pre pfext-code-block__pre">
1260
- <code class="pf-v6-c-code-block__code"
1261
- ${MARKDOWN_SNIPPET_ID}="${groupId}">${group.trim()}</code>
1262
- </pre>
1162
+ <pre class="pf-v6-c-code-block__pre pfext-code-block__pre"><code class="pf-v6-c-code-block__code"${MARKDOWN_SNIPPET_ID}="${groupId}">${group.trim()}</code></pre>
1263
1163
  </div>
1264
1164
  </div>`;
1265
1165
  },
@@ -1280,16 +1180,40 @@ const markdownConvert = (markdown, extensions) => {
1280
1180
  }
1281
1181
  DOMPurify.addHook('beforeSanitizeElements', function (node) {
1282
1182
  // nodeType 1 = element type
1183
+ var _a;
1283
1184
  // transform anchor tags
1284
1185
  if (node.nodeType === 1 && node.nodeName.toLowerCase() === 'a') {
1285
1186
  node.setAttribute('rel', 'noopener noreferrer');
1286
1187
  return node;
1287
1188
  }
1288
- // add PF class to ul and ol lists
1289
- if (node.nodeType === 1 &&
1290
- (node.nodeName.toLowerCase() === 'ul' || node.nodeName.toLowerCase() === 'ol')) {
1291
- node.setAttribute('class', 'pf-v6-c-list');
1292
- return node;
1189
+ // add PF content classes
1190
+ if (node.nodeType === 1) {
1191
+ const contentElements = [
1192
+ 'ul',
1193
+ 'ol',
1194
+ 'p',
1195
+ 'li',
1196
+ 'hr',
1197
+ 'h1',
1198
+ 'h2',
1199
+ 'h3',
1200
+ 'h4',
1201
+ 'h5',
1202
+ 'h6',
1203
+ 'blockquote',
1204
+ 'pre',
1205
+ 'dl',
1206
+ 'dt',
1207
+ 'dd',
1208
+ 'table',
1209
+ ];
1210
+ if (contentElements.includes(node.nodeName.toLowerCase())) {
1211
+ // don't overwrite elements already being styled by PatternFly
1212
+ if (!((_a = node.getAttribute('class')) === null || _a === void 0 ? void 0 : _a.includes('pf-v6-c-'))) {
1213
+ node.setAttribute('class', `pf-v6-c-content--${node.nodeName.toLowerCase()}`);
1214
+ return node;
1215
+ }
1216
+ }
1293
1217
  }
1294
1218
  });
1295
1219
  // Add a hook to make all links open a new window
@@ -1357,7 +1281,7 @@ const RenderExtension = ({ renderExtension, selector, markup, docContext, }) =>
1357
1281
  };
1358
1282
  const InlineMarkdownView = ({ markup, isEmpty, renderExtension, className, }) => {
1359
1283
  const id = React.useMemo(() => uniqueId('markdown'), []);
1360
- return (React.createElement("div", { className: css('pfext-markdown-view', { 'is-empty': isEmpty }, className), id: id },
1284
+ return (React.createElement("div", { className: css({ 'is-empty': isEmpty }, className), id: id },
1361
1285
  React.createElement("div", { dangerouslySetInnerHTML: { __html: markup } }),
1362
1286
  renderExtension && (React.createElement(RenderExtension, { renderExtension: renderExtension, selector: `#${id}`, markup: markup }))));
1363
1287
  };
@@ -1429,7 +1353,6 @@ const SELECTOR_ID = `[\\w-]+`;
1429
1353
  // [linkLabel]{{action id}}
1430
1354
  const HIGHLIGHT_REGEXP = new RegExp(`\\[(${LINK_LABEL})]{{(${HIGHLIGHT_ACTIONS.join('|')}) (${SELECTOR_ID})}}`, 'g');
1431
1355
 
1432
- const removeParagraphWrap = (markdown) => markdown.replace(/^<p>|<\/p>$/g, '');
1433
1356
  const QuickStartMarkdownView = ({ content, exactHeight, className, }) => {
1434
1357
  const { markdown } = React.useContext(QuickStartContext);
1435
1358
  const inlineCopyClipboardShowdownExtension = useInlineCopyClipboardShowdownExtension();
@@ -1481,7 +1404,7 @@ var AdmonitionType;
1481
1404
  })(AdmonitionType || (AdmonitionType = {}));
1482
1405
  const admonitionToAlertVariantMap = {
1483
1406
  [AdmonitionType.NOTE]: { variant: 'info' },
1484
- [AdmonitionType.TIP]: { variant: 'default', customIcon: React.createElement(LightbulbIcon, null) },
1407
+ [AdmonitionType.TIP]: { variant: 'custom', customIcon: React.createElement(LightbulbIcon, null) },
1485
1408
  [AdmonitionType.IMPORTANT]: { variant: 'danger' },
1486
1409
  [AdmonitionType.CAUTION]: { variant: 'warning', customIcon: React.createElement(FireIcon, null) },
1487
1410
  [AdmonitionType.WARNING]: { variant: 'warning' },
@@ -1497,9 +1420,8 @@ React.useMemo(() => ({
1497
1420
  }
1498
1421
  admonitionType = admonitionType.toUpperCase();
1499
1422
  const { variant, customIcon } = admonitionToAlertVariantMap[admonitionType];
1500
- const style = admonitionType === AdmonitionType.CAUTION ? { backgroundColor: '#ec7a0915' } : {};
1501
1423
  const mdContent = React.createElement(QuickStartMarkdownView, { content: content });
1502
- const pfAlert = (React.createElement(Alert, { variant: variant, customIcon: customIcon && customIcon, isInline: true, title: admonitionType, className: "pfext-markdown-admonition", style: style }, mdContent));
1424
+ const pfAlert = (React.createElement(Alert, Object.assign({ variant: variant }, (customIcon && { customIcon }), { isInline: true, title: admonitionType, className: "pfext-markdown-admonition" }), mdContent));
1503
1425
  return removeTemplateWhitespace(renderToStaticMarkup(pfAlert));
1504
1426
  },
1505
1427
  }), []);
@@ -1608,42 +1530,39 @@ const StatusIcon = ({ status }) => (React.createElement(Status, { status: status
1608
1530
  const QuickStartTileDescription = ({ description, prerequisites, }) => {
1609
1531
  const { getResource } = React.useContext(QuickStartContext);
1610
1532
  const prereqs = prerequisites === null || prerequisites === void 0 ? void 0 : prerequisites.filter((p) => p);
1533
+ const buttonRef = React.useRef(null);
1611
1534
  return (React.createElement(React.Fragment, null,
1612
- React.createElement(QuickStartMarkdownView, { content: description, className: "pfext-quick-start-tile-description" }),
1613
- (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (React.createElement("div", { className: "pfext-quick-start-tile-prerequisites" },
1614
- React.createElement(Text, { component: TextVariants.h5, className: "pfext-quick-start-tile-prerequisites__text" },
1535
+ React.createElement(QuickStartMarkdownView, { content: description }),
1536
+ (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (React.createElement(Flex, { spaceItems: { default: 'spaceItemsSm' } },
1537
+ React.createElement("h5", null,
1615
1538
  getResource('Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length),
1616
1539
  ' '),
1617
- React.createElement(Popover, { "aria-label": getResource('Prerequisites'), headerContent: getResource('Prerequisites'), className: "pfext-quick-start__base", bodyContent: React.createElement("div", { className: "pfext-popover__base" },
1618
- React.createElement(TextList, { "aria-label": getResource('Prerequisites'), className: "pfext-quick-start-tile-prerequisites-list" }, prereqs.map((prerequisite, index) => (
1540
+ React.createElement(Button, { variant: "link", isInline: true, "data-testid": "qs-card-prereqs", ref: buttonRef, onClick: (e) => {
1541
+ e.preventDefault();
1542
+ e.stopPropagation();
1543
+ }, "aria-label": getResource('Show prerequisites') },
1544
+ React.createElement(InfoCircleIcon, null)),
1545
+ React.createElement(Popover, { "aria-label": getResource('Prerequisites'), headerContent: getResource('Prerequisites'), triggerRef: buttonRef, bodyContent: React.createElement("div", null,
1546
+ React.createElement("ul", { "aria-label": getResource('Prerequisites') }, prereqs.map((prerequisite, index) => (
1619
1547
  // eslint-disable-next-line react/no-array-index-key
1620
- React.createElement(TextListItem, { key: index },
1621
- React.createElement(QuickStartMarkdownView, { content: prerequisite })))))) },
1622
- React.createElement(Button, { variant: "link", isInline: true, className: "pfext-quick-start-tile-prerequisites__icon", "data-testid": "qs-card-prereqs", onClick: (e) => {
1623
- e.preventDefault();
1624
- e.stopPropagation();
1625
- }, "aria-label": getResource('Show prerequisites') },
1626
- React.createElement(InfoCircleIcon, null)))))));
1548
+ React.createElement("li", { key: index },
1549
+ React.createElement(QuickStartMarkdownView, { content: prerequisite })))))) })))));
1627
1550
  };
1628
1551
 
1629
- const QuickStartTileFooter = ({ quickStartId, status, totalTasks, }) => {
1552
+ const QuickStartTileFooter = ({ quickStartId, status, totalTasks, onClickContinue, }) => {
1630
1553
  const { getResource } = React.useContext(QuickStartContext);
1631
1554
  const { activeQuickStartID, startQuickStart, restartQuickStart } = React.useContext(QuickStartContext);
1632
- const start = React.useCallback((e) => {
1633
- e.preventDefault();
1634
- e.stopPropagation();
1555
+ const start = React.useCallback(() => {
1635
1556
  startQuickStart(quickStartId, totalTasks);
1636
1557
  }, [quickStartId, startQuickStart, totalTasks]);
1637
- const restart = React.useCallback((e) => {
1638
- e.preventDefault();
1639
- e.stopPropagation();
1558
+ const restart = React.useCallback(() => {
1640
1559
  restartQuickStart(quickStartId, totalTasks);
1641
1560
  }, [quickStartId, restartQuickStart, totalTasks]);
1642
1561
  return (React.createElement(Flex, { justifyContent: { default: 'justifyContentSpaceBetween' } },
1643
1562
  status === QuickStartStatus.NOT_STARTED && (React.createElement(FlexItem, null,
1644
1563
  React.createElement(Button, { onClick: start, variant: "link", isInline: true, "data-testid": "qs-card-notStarted-start", id: `${quickStartId}-start`, "aria-labelledby": `${quickStartId}-start ${quickStartId}` }, getResource('Start')))),
1645
1564
  status === QuickStartStatus.IN_PROGRESS && activeQuickStartID !== quickStartId && (React.createElement(FlexItem, null,
1646
- React.createElement(Button, { variant: "link", isInline: true, "data-testid": "qs-card-inProgress-resume", id: `${quickStartId}-continue`, "aria-labelledby": `${quickStartId}-continue ${quickStartId}` }, getResource('Continue')))),
1565
+ React.createElement(Button, { variant: "link", onClick: onClickContinue, isInline: true, "data-testid": "qs-card-inProgress-resume", id: `${quickStartId}-continue`, "aria-labelledby": `${quickStartId}-continue ${quickStartId}` }, getResource('Continue')))),
1647
1566
  status === QuickStartStatus.COMPLETE && (React.createElement(FlexItem, null,
1648
1567
  React.createElement(Button, { onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-complete-restart", id: `${quickStartId}-restart`, "aria-labelledby": `${quickStartId}-restart ${quickStartId}` }, getResource('Restart')))),
1649
1568
  status === QuickStartStatus.IN_PROGRESS && (React.createElement(FlexItem, null,
@@ -1657,39 +1576,43 @@ const QuickStartTileFooterExternal = ({ link, quickStartId, }) => {
1657
1576
  React.createElement(Button, { component: "a", href: href, target: "_blank", rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: React.createElement(ExternalLinkAltIcon, null), iconPosition: "right", id: quickStartId, "aria-labelledby": `${quickStartId}-external ${quickStartId}` }, text || href))));
1658
1577
  };
1659
1578
 
1660
- const statusColorMap = {
1661
- [QuickStartStatus.COMPLETE]: 'green',
1662
- [QuickStartStatus.IN_PROGRESS]: 'purple',
1663
- [QuickStartStatus.NOT_STARTED]: 'grey',
1579
+ const QuickStartTileHeader = ({ name, quickStartId, onSelect, }) => {
1580
+ return (React.createElement(Flex, { flexWrap: { default: 'nowrap' } },
1581
+ React.createElement(Title, { headingLevel: "h3", "data-test": "title", id: quickStartId },
1582
+ React.createElement(Button, { variant: "link", isInline: true, onClick: onSelect },
1583
+ React.createElement(QuickStartMarkdownView, { content: name })))));
1664
1584
  };
1665
- const QuickStartTileHeader = ({ status, duration, name, type, quickStartId, }) => {
1666
- const { getResource } = React.useContext(QuickStartContext);
1585
+
1586
+ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, action, }) => {
1587
+ const { metadata: { name: id }, spec: { icon, tasks, displayName, description, durationMinutes, prerequisites, link, type }, } = quickStart;
1588
+ const { setActiveQuickStart, footer, getResource } = React.useContext(QuickStartContext);
1589
+ const statusColorMap = {
1590
+ [QuickStartStatus.COMPLETE]: 'green',
1591
+ [QuickStartStatus.IN_PROGRESS]: 'purple',
1592
+ [QuickStartStatus.NOT_STARTED]: 'grey',
1593
+ };
1667
1594
  const statusLocaleMap = {
1668
1595
  [QuickStartStatus.COMPLETE]: getResource('Complete'),
1669
1596
  [QuickStartStatus.IN_PROGRESS]: getResource('In progress'),
1670
1597
  [QuickStartStatus.NOT_STARTED]: getResource('Not started'),
1671
1598
  };
1672
- return (React.createElement("div", { className: "pfext-quick-start-tile-header" },
1673
- React.createElement(Title, { headingLevel: "h3", "data-test": "title", id: quickStartId },
1674
- React.createElement(QuickStartMarkdownView, { content: name })),
1675
- React.createElement("div", { className: "pfext-quick-start-tile-header__status" },
1676
- type && (React.createElement(Label, { className: "pfext-quick-start-tile-header--margin", color: type.color }, type.text)),
1677
- duration && (React.createElement(Label, { variant: "outline", "data-test": "duration", icon: React.createElement(OutlinedClockIcon, null), className: "pfext-quick-start-tile-header--margin" }, getResource('{{duration, number}} minutes', duration).replace('{{duration, number}}', duration))),
1678
- status !== QuickStartStatus.NOT_STARTED && (React.createElement(Label, { variant: "outline", color: statusColorMap[status], icon: React.createElement(StatusIcon, { status: status }), "data-test": "status" }, statusLocaleMap[status])))));
1679
- };
1680
-
1681
- const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, }) => {
1682
- const { metadata: { name: id }, spec: { icon, tasks, displayName, description, durationMinutes, prerequisites, link, type }, } = quickStart;
1683
- const { setActiveQuickStart, footer } = React.useContext(QuickStartContext);
1684
- const ref = React.useRef(null);
1685
1599
  let quickStartIcon;
1686
1600
  if (typeof icon === 'object') {
1687
- quickStartIcon = React.createElement(Icon, { size: "xl" }, icon);
1601
+ quickStartIcon = React.createElement(Icon, { size: "2xl" }, icon);
1688
1602
  }
1689
1603
  else {
1690
- quickStartIcon = (React.createElement(Icon, { size: "xl" },
1691
- React.createElement(FallbackImg, { className: "pfext-catalog-item-icon__img--large", src: icon, alt: "", fallback: React.createElement(RocketIcon, null) })));
1604
+ quickStartIcon = (React.createElement(Icon, { size: "2xl" },
1605
+ React.createElement(FallbackImg, { src: icon, alt: "", className: "pfext-catalog-item-icon__img", fallback: React.createElement(RocketIcon, null) })));
1692
1606
  }
1607
+ const onSelect = () => {
1608
+ if (!link) {
1609
+ setActiveQuickStart(id, tasks === null || tasks === void 0 ? void 0 : tasks.length);
1610
+ }
1611
+ else {
1612
+ window.open(link.href, '_blank', 'noopener,noreferrer');
1613
+ }
1614
+ onClick();
1615
+ };
1693
1616
  const footerComponent = React.useMemo(() => {
1694
1617
  if (footer && footer.show === false) {
1695
1618
  return null;
@@ -1697,47 +1620,44 @@ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, })
1697
1620
  if (link) {
1698
1621
  return React.createElement(QuickStartTileFooterExternal, { link: link, quickStartId: id });
1699
1622
  }
1700
- return React.createElement(QuickStartTileFooter, { quickStartId: id, status: status, totalTasks: tasks === null || tasks === void 0 ? void 0 : tasks.length });
1623
+ return (React.createElement(QuickStartTileFooter, { quickStartId: id, status: status, totalTasks: tasks === null || tasks === void 0 ? void 0 : tasks.length, onClickContinue: onSelect }));
1701
1624
  }, [footer, id, link, status, tasks === null || tasks === void 0 ? void 0 : tasks.length]);
1702
- const handleClick = (e) => {
1703
- var _a;
1704
- if ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) {
1705
- if (link) {
1706
- window.open(link.href);
1707
- }
1708
- else {
1709
- setActiveQuickStart(id, tasks === null || tasks === void 0 ? void 0 : tasks.length);
1710
- }
1711
- onClick();
1712
- }
1713
- };
1714
- return (React.createElement("div", { ref: ref },
1715
- React.createElement(CatalogTile, { id: id + '-catalog-tile', style: {
1716
- cursor: 'pointer',
1717
- }, icon: quickStartIcon, className: "pfext-quick-start-tile", "data-testid": `qs-card-${camelize(displayName)}`, featured: isActive, title: React.createElement(QuickStartTileHeader, { name: displayName, status: status, duration: durationMinutes, type: type, quickStartId: id }), onClick: handleClick, onKeyDown: (event) => {
1718
- if (event.key === 'Enter' || event.key === ' ') {
1719
- setActiveQuickStart(id, tasks === null || tasks === void 0 ? void 0 : tasks.length);
1720
- onClick();
1721
- }
1722
- },
1723
- // https://github.com/patternfly/patternfly-react/issues/7039
1724
- href: link === null || link === void 0 ? void 0 : link.href, "data-test": `tile ${id}`, description: React.createElement(QuickStartTileDescription, { description: description, prerequisites: prerequisites }), footer: footerComponent, tabIndex: 0 })));
1625
+ const ActionIcon = (action === null || action === void 0 ? void 0 : action.icon) || OutlinedBookmarkIcon;
1626
+ const additionalAction = action ? (React.createElement(Button, Object.assign({ "aria-label": action['aria-label'], icon: React.createElement(ActionIcon, null), variant: "plain", onClick: action.onClick }, action.buttonProps))) : undefined;
1627
+ return (React.createElement(Card, Object.assign({ id: `${id}-catalog-tile`, style: { height: '100%' }, "data-testid": `qs-card-${camelize(displayName)}` }, (isActive && {
1628
+ isClickable: true,
1629
+ isSelectable: true,
1630
+ isSelected: true,
1631
+ isClicked: true,
1632
+ })),
1633
+ React.createElement(CardHeader, Object.assign({}, (action && {
1634
+ actions: { actions: additionalAction },
1635
+ })), quickStartIcon),
1636
+ React.createElement(CardTitle, null,
1637
+ React.createElement(QuickStartTileHeader, { name: displayName, onSelect: onSelect, quickStartId: id })),
1638
+ React.createElement(CardBody, null,
1639
+ React.createElement(Stack, { hasGutter: true },
1640
+ React.createElement(Flex, { spaceItems: { default: 'spaceItemsSm' } },
1641
+ type && React.createElement(Label, { color: type.color }, type.text),
1642
+ durationMinutes && (React.createElement(Label, { variant: "outline", "data-test": "duration", icon: React.createElement(OutlinedClockIcon, null) }, getResource('{{duration, number}} minutes', durationMinutes).replace('{{duration, number}}', durationMinutes))),
1643
+ status !== QuickStartStatus.NOT_STARTED && (React.createElement(Label, { variant: "outline", color: statusColorMap[status], icon: React.createElement(StatusIcon, { status: status }), "data-test": "status" }, statusLocaleMap[status]))),
1644
+ React.createElement(QuickStartTileDescription, { description: description, prerequisites: prerequisites }))),
1645
+ React.createElement(CardFooter, null, footerComponent)));
1725
1646
  };
1726
1647
 
1727
1648
  const QuickStartCatalog = ({ quickStarts }) => {
1728
1649
  const { activeQuickStartID, allQuickStartStates } = React.useContext(QuickStartContext);
1729
- return (React.createElement("div", { className: "pfext-page-layout__content" },
1730
- React.createElement(Gallery, { className: "pfext-quick-start-catalog__gallery", hasGutter: true }, quickStarts.map((quickStart) => {
1650
+ return (React.createElement("div", null,
1651
+ React.createElement(Gallery, { hasGutter: true }, quickStarts.map((quickStart, index) => {
1731
1652
  const { metadata: { name: id }, } = quickStart;
1732
- return (React.createElement(GalleryItem, { key: id, className: "pfext-quick-start-catalog__gallery-item" },
1733
- React.createElement(QuickStartTile, { quickStart: quickStart, isActive: id === activeQuickStartID, status: getQuickStartStatus(allQuickStartStates, id) })));
1653
+ return (React.createElement(QuickStartTile, { key: index, quickStart: quickStart, isActive: id === activeQuickStartID, status: getQuickStartStatus(allQuickStartStates, id) }));
1734
1654
  }))));
1735
1655
  };
1736
1656
 
1737
1657
  const QuickStartCatalogFilterSearch = (_a) => {
1738
1658
  var { searchInputText, handleTextChange } = _a, props = __rest(_a, ["searchInputText", "handleTextChange"]);
1739
1659
  const { getResource } = React.useContext(QuickStartContext);
1740
- return (React.createElement(ToolbarItem, { className: "pfext-quick-start-catalog-filter__input" },
1660
+ return (React.createElement(ToolbarItem, null,
1741
1661
  React.createElement(SearchInput, Object.assign({ placeholder: getResource('Filter by keyword...'), value: searchInputText, onChange: (_ev, value) => handleTextChange(value), onClear: () => handleTextChange('') }, props))));
1742
1662
  };
1743
1663
  const QuickStartCatalogFilterSelect = (_a) => {
@@ -1752,7 +1672,7 @@ const QuickStartCatalogFilterSelect = (_a) => {
1752
1672
  };
1753
1673
  const QuickStartCatalogFilterCount = ({ quickStartsCount }) => {
1754
1674
  const { getResource } = React.useContext(QuickStartContext);
1755
- return (React.createElement(ToolbarItem, { className: "pfext-quick-start-catalog-filter__count", align: { default: 'alignEnd' } }, getResource('{{count, number}} item', quickStartsCount).replace('{{count, number}}', quickStartsCount)));
1675
+ return (React.createElement(ToolbarItem, { align: { default: 'alignEnd' } }, getResource('{{count, number}} item', quickStartsCount).replace('{{count, number}}', quickStartsCount)));
1756
1676
  };
1757
1677
  const QuickStartCatalogFilterSearchWrapper = ({ onSearchInputChange = () => { } }) => {
1758
1678
  const { useQueryParams, filter, setFilter } = React.useContext(QuickStartContext);
@@ -1842,7 +1762,7 @@ const QuickStartCatalogFilterCountWrapper = ({ quickStartsCount }) => React.crea
1842
1762
 
1843
1763
  const QuickStartCatalogFilter = (_a) => {
1844
1764
  var { quickStartsCount, onSearchInputChange = () => { }, onStatusChange = () => { } } = _a, props = __rest(_a, ["quickStartsCount", "onSearchInputChange", "onStatusChange"]);
1845
- return (React.createElement(Toolbar, Object.assign({ usePageInsets: true, className: "pfext-quick-start-catalog-filter__flex" }, props),
1765
+ return (React.createElement(Toolbar, Object.assign({}, props),
1846
1766
  React.createElement(ToolbarContent, null,
1847
1767
  React.createElement(QuickStartCatalogFilterSearchWrapper, { onSearchInputChange: onSearchInputChange }),
1848
1768
  React.createElement(QuickStartCatalogFilterStatusWrapper, { onStatusChange: onStatusChange }),
@@ -1918,28 +1838,29 @@ const QuickStartCatalogPage = ({ quickStarts, showFilter, sortFnc = (q1, q2) =>
1918
1838
  if (!allQuickStarts || allQuickStarts.length === 0) {
1919
1839
  return React.createElement(EmptyBox, { label: getResource('Quick Starts') });
1920
1840
  }
1921
- return (React.createElement("div", { className: "pfext-quick-start__base" },
1922
- showTitle && (React.createElement("div", { className: "pfext-page-layout__header" },
1923
- React.createElement(Text, { component: "h1", className: "pfext-page-layout__title", "data-test": "page-title" }, title || getResource('Quick Starts')),
1924
- hint && React.createElement("div", { className: "pfext-page-layout__hint" }, hint))),
1925
- showTitle && React.createElement(Divider, { component: "div" }),
1926
- showFilter && (React.createElement(React.Fragment, null,
1927
- React.createElement(QuickStartCatalogFilter, { quickStartsCount: filteredQuickStarts.length, onSearchInputChange: onSearchInputChange, onStatusChange: onStatusChange }),
1928
- React.createElement(Divider, { component: "div" }))),
1929
- React.createElement(React.Fragment, null, filteredQuickStarts.length === 0 ? (React.createElement(QuickStartCatalogEmptyState, { clearFilters: clearFilters })) : (React.createElement(QuickStartCatalog, { quickStarts: filteredQuickStarts })))));
1841
+ return (React.createElement(React.Fragment, null,
1842
+ (showTitle || showFilter) && (React.createElement(PageSection, { hasBodyWrapper: false },
1843
+ showTitle && (React.createElement(React.Fragment, null,
1844
+ React.createElement(Content, { component: "h1", "data-test": "page-title" }, title || getResource('Quick Starts')),
1845
+ hint && React.createElement("div", null, hint))),
1846
+ showTitle && React.createElement(Divider, { component: "div" }),
1847
+ showFilter && (React.createElement(React.Fragment, null,
1848
+ React.createElement(QuickStartCatalogFilter, { quickStartsCount: filteredQuickStarts.length, onSearchInputChange: onSearchInputChange, onStatusChange: onStatusChange }),
1849
+ React.createElement(Divider, { component: "div" }))))),
1850
+ React.createElement(PageSection, { hasBodyWrapper: false }, filteredQuickStarts.length === 0 ? (React.createElement(QuickStartCatalogEmptyState, { clearFilters: clearFilters })) : (React.createElement(QuickStartCatalog, { quickStarts: filteredQuickStarts })))));
1930
1851
  };
1931
1852
 
1932
- const QuickStartCatalogHeader = ({ title, hint, }) => (React.createElement("div", { className: "pfext-page-layout__header" },
1933
- React.createElement("h1", { "data-pf-content": "true", className: "pfext-page-layout__title" }, title),
1934
- hint && React.createElement("div", { className: "pfext-page-layout__hint" }, hint)));
1853
+ const QuickStartCatalogHeader = ({ title, hint, }) => (React.createElement("div", null,
1854
+ React.createElement(Title, { headingLevel: "h1", "data-pf-content": "true" }, title),
1855
+ hint && React.createElement("div", null, hint)));
1935
1856
 
1936
- const QuickStartCatalogSection = ({ children }) => (React.createElement("div", { className: "pfext-page-layout__content" }, children));
1857
+ const QuickStartCatalogSection = ({ children }) => (React.createElement("div", null, children));
1937
1858
 
1938
- const QuickStartCatalogToolbar = ({ children }) => (React.createElement(Toolbar, { usePageInsets: true, className: "pfext-quick-start-catalog-filter__flex" }, children));
1859
+ const QuickStartCatalogToolbar = ({ children }) => (React.createElement(Toolbar, null, children));
1939
1860
 
1940
1861
  const QuickStartCloseModal = ({ isOpen, onConfirm, onCancel, }) => {
1941
1862
  const { getResource } = React.useContext(QuickStartContext);
1942
- return (React.createElement(Modal, { className: "pfext-quick-start-drawer__modal pfext-quick-start__base", isOpen: isOpen, variant: ModalVariant.small, showClose: false, "data-test": "leave-quickstart", title: getResource('Leave quick start?'), footer: React.createElement(Flex, null,
1863
+ return (React.createElement(Modal, { isOpen: isOpen, variant: ModalVariant.small, showClose: false, "data-test": "leave-quickstart", title: getResource('Leave quick start?'), footer: React.createElement(Flex, null,
1943
1864
  React.createElement(FlexItem, { align: { default: 'alignRight' } },
1944
1865
  React.createElement(Button, { variant: "secondary", "data-test": "cancel button", onClick: onCancel }, getResource('Cancel'))),
1945
1866
  React.createElement(FlexItem, null,
@@ -1948,35 +1869,35 @@ const QuickStartCloseModal = ({ isOpen, onConfirm, onCancel, }) => {
1948
1869
 
1949
1870
  const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, isActiveTask, onTaskSelect, children, }) => {
1950
1871
  const titleRef = React.useRef(null);
1872
+ const { focusOnQuickStart } = React.useContext(QuickStartContext);
1951
1873
  React.useEffect(() => {
1952
- if (isActiveTask) {
1874
+ if (focusOnQuickStart && isActiveTask) {
1953
1875
  // Focus the WizardNavItem button element that contains the title
1954
1876
  titleRef.current.parentNode.focus();
1955
1877
  }
1956
- }, [isActiveTask]);
1957
- css('pfext-quick-start-task-header__title', {
1958
- 'pfext-quick-start-task-header__title-success': taskStatus === QuickStartTaskStatus.SUCCESS,
1959
- 'pfext-quick-start-task-header__title-failed': taskStatus === (QuickStartTaskStatus.FAILED || QuickStartTaskStatus.VISITED),
1960
- });
1961
- // const notCompleted = taskStatus === QuickStartTaskStatus.VISITED;
1962
- // const skippedReview = taskStatus === QuickStartTaskStatus.REVIEW;
1878
+ }, [focusOnQuickStart, isActiveTask]);
1963
1879
  const failedReview = taskStatus === QuickStartTaskStatus.FAILED;
1964
- // TODO: toned down when this is shown, investigate further when we should display it
1965
- // related: https://github.com/patternfly/patternfly-quickstarts/issues/104
1966
1880
  const tryAgain = failedReview && (React.createElement(React.Fragment, null,
1967
1881
  React.createElement("div", null),
1968
1882
  React.createElement("div", { className: "pfext-quick-start-task-header__tryagain" }, "Try the steps again.")));
1969
1883
  const content = (React.createElement("div", { ref: titleRef },
1970
- React.createElement(Title, { headingLevel: "h3" },
1971
- React.createElement("span", { dangerouslySetInnerHTML: { __html: removeParagraphWrap(markdownConvert(title)) } }),
1972
- isActiveTask && subtitle && (React.createElement("span", { "data-test-id": "quick-start-task-subtitle" },
1884
+ React.createElement(Title, { headingLevel: "h3", size: size },
1885
+ React.createElement("span", { className: "pfext-quick-start-task-header__title" }, title),
1886
+ isActiveTask && subtitle && (React.createElement("span", null,
1973
1887
  ' ',
1974
- React.createElement(Text, { component: TextVariants.small }, subtitle))),
1888
+ React.createElement("span", { "data-test-id": "quick-start-task-subtitle", className: "pfext-quick-start-task-header__subtitle" }, subtitle))),
1975
1889
  tryAgain)));
1976
- return (React.createElement(WizardNavItem, { content: content, stepIndex: taskIndex, onClick: () => onTaskSelect(taskIndex - 1), component: "button", isCurrent: isActiveTask }, children));
1890
+ let status = 'default';
1891
+ if (taskStatus === QuickStartTaskStatus.FAILED) {
1892
+ status = 'error';
1893
+ }
1894
+ else if (taskStatus === QuickStartTaskStatus.SUCCESS) {
1895
+ status = 'success';
1896
+ }
1897
+ return (React.createElement(WizardNavItem, { content: content, stepIndex: taskIndex, onClick: () => onTaskSelect(taskIndex - 1), component: "button", isCurrent: isActiveTask, status: status }, children));
1977
1898
  };
1978
1899
 
1979
- const QuickStartTaskHeaderList = ({ tasks, allTaskStatuses, onTaskSelect, }) => tasks.length > 0 ? (React.createElement(List, { className: "pf-v6-c-wizard__nav-list" }, tasks.map((task, index) => (React.createElement(QuickStartTaskHeader, { key: task.title, title: task.title, taskIndex: index + 1, size: "md", taskStatus: allTaskStatuses[index], onTaskSelect: onTaskSelect }))))) : null;
1900
+ const QuickStartTaskHeaderList = ({ tasks, allTaskStatuses, onTaskSelect, }) => (tasks === null || tasks === void 0 ? void 0 : tasks.length) > 0 ? (React.createElement("div", { className: "pf-v6-c-wizard__nav-list" }, tasks.map((task, index) => (React.createElement(QuickStartTaskHeader, { key: task.title, title: task.title, taskIndex: index + 1, size: "md", taskStatus: allTaskStatuses[index], onTaskSelect: onTaskSelect }))))) : null;
1980
1901
 
1981
1902
  const QuickStartConclusion = ({ tasks, conclusion, allTaskStatuses, nextQuickStarts, onQuickStartChange, onTaskSelect, }) => {
1982
1903
  const hasFailedTask = allTaskStatuses.includes(QuickStartTaskStatus.FAILED);
@@ -1991,10 +1912,7 @@ const QuickStartConclusion = ({ tasks, conclusion, allTaskStatuses, nextQuickSta
1991
1912
  nextQuickStarts.length > 0 &&
1992
1913
  nextQuickStarts.map((nextQuickStart, index) => {
1993
1914
  var _a;
1994
- return (React.createElement(Button, { variant: "link", onClick: () => onQuickStartChange(nextQuickStart.metadata.name), isInline: true, isBlock: true, key: index },
1995
- getResource('Start {{nextQSDisplayName}} quick start').replace('{{nextQSDisplayName}}', (_a = nextQuickStart === null || nextQuickStart === void 0 ? void 0 : nextQuickStart.spec) === null || _a === void 0 ? void 0 : _a.displayName),
1996
- ' ',
1997
- React.createElement(ArrowRightIcon, { style: { marginLeft: 'var(--pf-t--global--spacer--xs)', verticalAlign: 'middle' } })));
1915
+ return (React.createElement(Button, { variant: "link", onClick: () => onQuickStartChange(nextQuickStart.metadata.name), isInline: true, icon: React.createElement(ArrowRightIcon, null), iconPosition: "end", isBlock: true, key: index, style: { marginTop: 'var(--pf-t--global--spacer--md' } }, getResource('Start {{nextQSDisplayName}} quick start').replace('{{nextQSDisplayName}}', (_a = nextQuickStart === null || nextQuickStart === void 0 ? void 0 : nextQuickStart.spec) === null || _a === void 0 ? void 0 : _a.displayName)));
1998
1916
  })));
1999
1917
  };
2000
1918
 
@@ -2002,15 +1920,14 @@ const QuickStartIntroduction = ({ tasks, introduction, allTaskStatuses, prerequi
2002
1920
  const { getResource } = React.useContext(QuickStartContext);
2003
1921
  const prereqs = prerequisites === null || prerequisites === void 0 ? void 0 : prerequisites.filter((p) => p);
2004
1922
  const [isPrereqsExpanded, setIsPrereqsExpanded] = React.useState(false);
2005
- const prereqList = (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (React.createElement(ExpandableSection, { toggleText: getResource('View Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length), onToggle: () => setIsPrereqsExpanded(!isPrereqsExpanded), className: "pfext-quick-start-intro__prereq" },
2006
- React.createElement(List, { className: "pfext-quick-start-intro__prereq-list" }, prereqs.map((pr) => (React.createElement(ListItem, { key: pr, className: "pfext-quick-start-intro__prereq-list__item" },
2007
- React.createElement("span", { className: "pfext-quick-start-intro__prereq-list__item-content" },
2008
- React.createElement(QuickStartMarkdownView, { content: pr }))))))));
2009
- return (React.createElement(React.Fragment, null,
1923
+ const prereqList = (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (React.createElement(ExpandableSection, { toggleText: getResource('View Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length), onToggle: () => setIsPrereqsExpanded(!isPrereqsExpanded) },
1924
+ React.createElement(List, null, prereqs.map((pr) => (React.createElement(ListItem, { key: pr },
1925
+ React.createElement(QuickStartMarkdownView, { content: pr })))))));
1926
+ return (React.createElement(Stack, { hasGutter: true },
2010
1927
  React.createElement(QuickStartMarkdownView, { content: introduction }),
2011
1928
  prereqList,
2012
- React.createElement("p", { style: { marginBottom: 'var(--pf-t--global--spacer--md)' } },
2013
- getResource('In this quick start, you will complete {{count, number}} task', tasks.length).replace('{{count, number}}', tasks.length),
1929
+ React.createElement("p", null,
1930
+ getResource('In this quick start, you will complete {{count, number}} task', tasks === null || tasks === void 0 ? void 0 : tasks.length).replace('{{count, number}}', (tasks === null || tasks === void 0 ? void 0 : tasks.length) || 0),
2014
1931
  ":"),
2015
1932
  React.createElement(QuickStartTaskHeaderList, { tasks: tasks, allTaskStatuses: allTaskStatuses, onTaskSelect: onTaskSelect })));
2016
1933
  };
@@ -2028,12 +1945,9 @@ const getAlertVariant = (status) => {
2028
1945
  const QuickStartTaskReview = ({ review, taskStatus, onTaskReview, }) => {
2029
1946
  const { instructions, failedTaskHelp: taskHelp } = review;
2030
1947
  const { getResource } = React.useContext(QuickStartContext);
2031
- const alertClassNames = css('pfext-quick-start-task-review', {
2032
- 'pfext-quick-start-task-review--success': taskStatus === QuickStartTaskStatus.SUCCESS,
2033
- 'pfext-quick-start-task-review--failed': taskStatus === QuickStartTaskStatus.FAILED,
2034
- });
2035
- const title = React.createElement("span", { className: alertClassNames }, getResource('Check your work'));
2036
- return (React.createElement(Alert, { className: "pfext-quick-start-task-review-alert", variant: getAlertVariant(taskStatus), title: title, isInline: true, role: "alert" },
1948
+ return (React.createElement(Alert, { variant: getAlertVariant(taskStatus), title: getResource('Check your work'), isInline: true, role: "alert", style: {
1949
+ marginBottom: 'var(--pf-t--global--spacer--md)',
1950
+ } },
2037
1951
  React.createElement(QuickStartMarkdownView, { content: instructions }),
2038
1952
  React.createElement("span", { className: "pfext-quick-start-task-review__actions" },
2039
1953
  React.createElement(Radio, { id: "review-success", name: "review-success", "data-testid": "qs-drawer-check-yes", label: getResource('Yes'), className: "pfext-quick-start-task-review__radio", isChecked: taskStatus === QuickStartTaskStatus.SUCCESS, onChange: () => onTaskReview(QuickStartTaskStatus.SUCCESS) }),
@@ -2043,7 +1957,7 @@ const QuickStartTaskReview = ({ review, taskStatus, onTaskReview, }) => {
2043
1957
 
2044
1958
  const QuickStartTasks = ({ tasks, taskNumber, allTaskStatuses, onTaskReview, onTaskSelect, }) => {
2045
1959
  const { getResource, alwaysShowTaskReview } = React.useContext(QuickStartContext);
2046
- return (React.createElement("div", { className: "pfext-quick-start-tasks__list" },
1960
+ return (React.createElement("div", { className: "pf-v6-c-wizard__nav-list", style: { padding: '0 0 0 0' } },
2047
1961
  React.createElement("ul", null, tasks
2048
1962
  .filter((_, index) => allTaskStatuses[index] !== QuickStartTaskStatus.INIT)
2049
1963
  .map((task, index) => {
@@ -2055,7 +1969,7 @@ const QuickStartTasks = ({ tasks, taskNumber, allTaskStatuses, onTaskReview, onT
2055
1969
  return (React.createElement(React.Fragment, { key: title },
2056
1970
  React.createElement(QuickStartTaskHeader, { taskIndex: index + 1, title: title, size: "md", subtitle: getResource('{{index, number}} of {{tasks, number}}')
2057
1971
  .replace('{{index, number}}', index + 1)
2058
- .replace('{{tasks, number}}', tasks.length), taskStatus: taskStatus, isActiveTask: isActiveTask, onTaskSelect: onTaskSelect }, isActiveTask && (React.createElement("div", { className: "pfext-quick-start-task__content" },
1972
+ .replace('{{tasks, number}}', tasks.length), taskStatus: taskStatus, isActiveTask: isActiveTask, onTaskSelect: onTaskSelect }, isActiveTask && (React.createElement(Stack, { hasGutter: true },
2059
1973
  React.createElement(QuickStartMarkdownView, { content: description }),
2060
1974
  shouldShowTaskReview && (React.createElement(QuickStartTaskReview, { review: review, taskStatus: taskStatus, onTaskReview: onTaskReview })))))));
2061
1975
  }))));
@@ -2063,14 +1977,14 @@ const QuickStartTasks = ({ tasks, taskNumber, allTaskStatuses, onTaskReview, onT
2063
1977
 
2064
1978
  const QuickStartContent = React.forwardRef(({ quickStart, nextQuickStarts = [], taskNumber, allTaskStatuses, onTaskSelect, onTaskReview, onQuickStartChange, }, ref) => {
2065
1979
  const { spec: { introduction, tasks, conclusion, prerequisites }, } = quickStart;
2066
- const totalTasks = tasks.length;
2067
- return (React.createElement("div", { className: "pfext-quick-start-content", ref: ref },
1980
+ const totalTasks = tasks === null || tasks === void 0 ? void 0 : tasks.length;
1981
+ return (React.createElement("div", { className: "pfext-quick-start-task", ref: ref },
2068
1982
  taskNumber === -1 && (React.createElement(QuickStartIntroduction, { tasks: tasks, allTaskStatuses: allTaskStatuses, introduction: introduction, prerequisites: prerequisites, onTaskSelect: onTaskSelect })),
2069
1983
  taskNumber > -1 && taskNumber < totalTasks && (React.createElement(QuickStartTasks, { tasks: tasks, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskReview: onTaskReview, onTaskSelect: onTaskSelect })),
2070
1984
  taskNumber === totalTasks && (React.createElement(QuickStartConclusion, { tasks: tasks, conclusion: conclusion, allTaskStatuses: allTaskStatuses, nextQuickStarts: nextQuickStarts, onQuickStartChange: onQuickStartChange, onTaskSelect: onTaskSelect }))));
2071
1985
  });
2072
1986
 
2073
- const QuickStartFooter = ({ status, taskNumber, totalTasks, onNext, onBack, footerClass, quickStartId, }) => {
1987
+ const QuickStartFooter = ({ status, taskNumber, totalTasks, onNext, onBack, quickStartId, className, }) => {
2074
1988
  const { restartQuickStart, getResource } = React.useContext(QuickStartContext);
2075
1989
  const PrimaryButtonText = React.useMemo(() => ({
2076
1990
  START: getResource('Start'),
@@ -2099,13 +2013,16 @@ const QuickStartFooter = ({ status, taskNumber, totalTasks, onNext, onBack, foot
2099
2013
  }
2100
2014
  return PrimaryButtonText.CONTINUE;
2101
2015
  }, [taskNumber, totalTasks, PrimaryButtonText, status]);
2102
- const getPrimaryButton = React.useMemo(() => (React.createElement(Button, { variant: "primary", className: "pfext-quick-start-footer__actionbtn", onClick: onNext, "data-testid": `qs-drawer-${camelize(getPrimaryButtonText)}`, "data-test": `${getPrimaryButtonText} button` }, getPrimaryButtonText)), [getPrimaryButtonText, onNext]);
2016
+ const getPrimaryButton = React.useMemo(() => (React.createElement(Button, { variant: "primary", onClick: onNext, "data-testid": `qs-drawer-${camelize(getPrimaryButtonText)}`, "data-test": `${getPrimaryButtonText} button` }, getPrimaryButtonText)), [getPrimaryButtonText, onNext]);
2103
2017
  const getSecondaryButton = React.useMemo(() => taskNumber === -1 && status !== QuickStartStatus.NOT_STARTED ? (React.createElement(Button, { variant: "secondary", onClick: onRestart, "data-testid": "qs-drawer-restart" }, SecondaryButtonText.RESTART)) : (taskNumber > -1 && (React.createElement(Button, { variant: "secondary", onClick: onBack, "data-testid": "qs-drawer-back" }, SecondaryButtonText.BACK))), [onRestart, onBack, SecondaryButtonText, status, taskNumber]);
2104
- const getSideNoteAction = React.useMemo(() => taskNumber !== -1 && (React.createElement(Button, { variant: "link", className: "pfext-quick-start-footer__restartbtn", onClick: onRestart, "data-testid": "qs-drawer-side-note-action" }, SecondaryButtonText.RESTART)), [taskNumber, onRestart, SecondaryButtonText.RESTART]);
2105
- return (React.createElement("div", { className: `pfext-quick-start-footer ${footerClass}` },
2106
- getPrimaryButton,
2107
- getSecondaryButton,
2108
- getSideNoteAction));
2018
+ const getSideNoteAction = React.useMemo(() => taskNumber !== -1 && (React.createElement(Button, { variant: "link", onClick: onRestart, "data-testid": "qs-drawer-side-note-action" }, SecondaryButtonText.RESTART)), [taskNumber, onRestart, SecondaryButtonText.RESTART]);
2019
+ return (React.createElement("div", { className: css('pfext-quick-start-footer', className) },
2020
+ React.createElement(ActionList, null,
2021
+ React.createElement(ActionListGroup, null,
2022
+ React.createElement(ActionListItem, null, getPrimaryButton),
2023
+ React.createElement(ActionListItem, null, getSecondaryButton)),
2024
+ React.createElement(ActionListGroup, null,
2025
+ React.createElement(ActionListItem, null, getSideNoteAction)))));
2109
2026
  };
2110
2027
 
2111
2028
  const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerClass, }) => {
@@ -2120,7 +2037,7 @@ const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerC
2120
2037
  const getQuickStartActiveTask = React.useCallback(() => {
2121
2038
  let activeTaskNumber = 0;
2122
2039
  while (activeTaskNumber !== totalTasks &&
2123
- activeQuickStartState[`taskStatus${activeTaskNumber}`] !== QuickStartTaskStatus.INIT) {
2040
+ activeQuickStartState[`taskStatus${activeTaskNumber}`] === QuickStartTaskStatus.SUCCESS) {
2124
2041
  activeTaskNumber++;
2125
2042
  }
2126
2043
  return activeTaskNumber;
@@ -2144,7 +2061,7 @@ const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerC
2144
2061
  }, [name, setQuickStartTaskNumber]);
2145
2062
  return (React.createElement(React.Fragment, null,
2146
2063
  React.createElement(QuickStartContent, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskSelect: handleTaskSelect, onTaskReview: handleTaskStatusChange, onQuickStartChange: handleQuickStartChange, ref: contentRef }),
2147
- React.createElement(QuickStartFooter, { status: status, taskNumber: taskNumber, totalTasks: totalTasks, onNext: handleNext, onBack: handleBack, footerClass: footerClass, quickStartId: quickStart.metadata.name })));
2064
+ React.createElement(QuickStartFooter, { status: status, taskNumber: taskNumber, totalTasks: totalTasks, onNext: handleNext, onBack: handleBack, className: footerClass, quickStartId: quickStart.metadata.name })));
2148
2065
  };
2149
2066
 
2150
2067
  const getElement = (appendTo) => {
@@ -2161,24 +2078,17 @@ const useScrollTopOnTaskNumberChange = (node, taskNumber) => {
2161
2078
  }, [taskNumber, node]);
2162
2079
  };
2163
2080
  const QuickStartPanelContent = (_a) => {
2164
- var { quickStarts = [], handleClose, activeQuickStartID, appendTo, isResizable = true, showClose = true, headerVariant = '' } = _a, props = __rest(_a, ["quickStarts", "handleClose", "activeQuickStartID", "appendTo", "isResizable", "showClose", "headerVariant"]);
2081
+ var { quickStarts = [], handleClose, activeQuickStartID, appendTo, isResizable = true, showClose = true, footerClass } = _a, props = __rest(_a, ["quickStarts", "handleClose", "activeQuickStartID", "appendTo", "isResizable", "showClose", "footerClass"]);
2165
2082
  const titleRef = React.useRef(null);
2166
- const { getResource, activeQuickStartState } = React.useContext(QuickStartContext);
2083
+ const { getResource, activeQuickStartState, focusOnQuickStart } = React.useContext(QuickStartContext);
2167
2084
  const [contentRef, setContentRef] = React.useState();
2168
- const shadows = useScrollShadows(contentRef);
2169
2085
  const quickStart = quickStarts.find((qs) => qs.metadata.name === activeQuickStartID);
2170
2086
  const taskNumber = activeQuickStartState === null || activeQuickStartState === void 0 ? void 0 : activeQuickStartState.taskNumber;
2171
2087
  useScrollTopOnTaskNumberChange(contentRef, taskNumber);
2172
2088
  const nextQuickStarts = quickStarts.filter((qs) => { var _a; return (_a = quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.nextQuickStart) === null || _a === void 0 ? void 0 : _a.includes(qs.metadata.name); });
2173
- const headerClasses = css('pfext-quick-start-panel-content__header', {
2174
- 'pfext-quick-start-panel-content__header__shadow': shadows === Shadows.top || shadows === Shadows.both,
2175
- 'pfext-quick-start-panel-content__header--blue-white': headerVariant === 'blue-white',
2176
- });
2177
- const footerClass = css({
2178
- 'pfext-quick-start-panel-content__footer__shadow': shadows === Shadows.bottom || shadows === Shadows.both,
2179
- });
2180
2089
  const getStep = () => {
2181
- const tasks = quickStart.spec.tasks.length;
2090
+ var _a;
2091
+ const tasks = ((_a = quickStart.spec.tasks) === null || _a === void 0 ? void 0 : _a.length) || 0;
2182
2092
  if (Number.parseInt(taskNumber) === -1) {
2183
2093
  return 'intro';
2184
2094
  }
@@ -2188,27 +2098,25 @@ const QuickStartPanelContent = (_a) => {
2188
2098
  return Number.parseInt(taskNumber) + 1;
2189
2099
  };
2190
2100
  React.useEffect(() => {
2191
- if (quickStart) {
2101
+ if (focusOnQuickStart && quickStart) {
2192
2102
  titleRef.current.focus();
2193
2103
  }
2194
- }, [quickStart]);
2195
- const content = quickStart ? (React.createElement(DrawerPanelContent, Object.assign({ isResizable: isResizable, className: "pfext-quick-start__base", "data-testid": `qs-drawer-${camelize(quickStart.spec.displayName)}`, "data-qs": `qs-step-${getStep()}`, "data-test": "quickstart drawer" }, props),
2196
- React.createElement("div", { className: headerClasses },
2104
+ }, [focusOnQuickStart, quickStart]);
2105
+ const content = quickStart ? (React.createElement(DrawerPanelContent, Object.assign({ isResizable: isResizable, "data-testid": `qs-drawer-${camelize(quickStart.spec.displayName)}`, "data-qs": `qs-step-${getStep()}`, "data-test": "quickstart drawer", style: { '--pf-v6-c-drawer__panel--PaddingBlockStart': '0' } }, props),
2106
+ React.createElement("div", { className: "pfext-quick-start-panel-content" },
2197
2107
  React.createElement(DrawerHead, null,
2198
- React.createElement("div", { className: "pfext-quick-start-panel-content__title", tabIndex: -1, ref: titleRef },
2199
- React.createElement(Title, { headingLevel: "h2", size: "xl", className: "pfext-quick-start-panel-content__name", style: { marginRight: 'var(--pf-t--global--spacer--md)' } },
2200
- React.createElement("span", { dangerouslySetInnerHTML: {
2201
- __html: removeParagraphWrap(markdownConvert(quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.displayName)),
2202
- } }),
2203
- ' ',
2204
- React.createElement("small", { className: "pfext-quick-start-panel-content__duration" }, (quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
2205
- ? getResource('{{type}} • {{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
2206
- .replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
2207
- .replace('{{type}}', getResource('Type'))
2208
- : getResource('Type')))),
2108
+ React.createElement("div", { tabIndex: -1, ref: titleRef },
2109
+ React.createElement(Title, { headingLevel: "h2", size: "xl", style: { marginRight: 'var(--pf-t--global--spacer--md)' } },
2110
+ React.createElement("span", null, quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.displayName),
2111
+ ' '),
2112
+ React.createElement("span", null, (quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
2113
+ ? getResource('{{type}} • {{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
2114
+ .replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)
2115
+ .replace('{{type}}', getResource('Type'))
2116
+ : getResource('Type'))),
2209
2117
  showClose && (React.createElement(DrawerActions, null,
2210
2118
  React.createElement(DrawerCloseButton, { onClick: handleClose, className: "pfext-quick-start-panel-content__close-button", "data-testid": "qs-drawer-close" }))))),
2211
- React.createElement(DrawerPanelBody, { hasNoPadding: true, className: "pfext-quick-start-panel-content__body", "data-test": "content" },
2119
+ React.createElement(DrawerPanelBody, { className: "pfext-quick-start-panel-content__body", "data-test": "content" },
2212
2120
  React.createElement(QuickStartController, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, footerClass: footerClass, contentRef: setContentRef })))) : null;
2213
2121
  if (appendTo) {
2214
2122
  return ReactDOM.createPortal(content, getElement(appendTo));
@@ -2248,7 +2156,7 @@ const QuickStartContainer = (_a) => {
2248
2156
  };
2249
2157
  const QuickStartDrawer = (_a) => {
2250
2158
  var { quickStarts = [], children, appendTo, fullWidth, onCloseInProgress, onCloseNotInProgress } = _a, props = __rest(_a, ["quickStarts", "children", "appendTo", "fullWidth", "onCloseInProgress", "onCloseNotInProgress"]);
2251
- const { activeQuickStartID, setActiveQuickStart, allQuickStarts = [], activeQuickStartState, allQuickStartStates, setAllQuickStartStates, useLegacyHeaderColors, } = React.useContext(QuickStartContext);
2159
+ const { activeQuickStartID, setActiveQuickStart, allQuickStarts = [], activeQuickStartState, allQuickStartStates, setAllQuickStartStates, } = React.useContext(QuickStartContext);
2252
2160
  const combinedQuickStarts = allQuickStarts.concat(quickStarts);
2253
2161
  React.useEffect(() => {
2254
2162
  const params = new URLSearchParams(window.location.search);
@@ -2307,10 +2215,10 @@ const QuickStartDrawer = (_a) => {
2307
2215
  },
2308
2216
  }
2309
2217
  : {};
2310
- const panelContent = (React.createElement(QuickStartPanelContent, Object.assign({ quickStarts: combinedQuickStarts, handleClose: handleClose, activeQuickStartID: activeQuickStartID, appendTo: appendTo, isResizable: !fullWidth, headerVariant: useLegacyHeaderColors ? '' : 'blue-white' }, fullWidthPanelStyle)));
2218
+ const panelContent = (React.createElement(QuickStartPanelContent, Object.assign({ quickStarts: combinedQuickStarts, handleClose: handleClose, activeQuickStartID: activeQuickStartID, appendTo: appendTo, isResizable: !fullWidth }, fullWidthPanelStyle)));
2311
2219
  return (React.createElement(React.Fragment, null,
2312
2220
  React.createElement(Drawer, Object.assign({ isExpanded: !!activeQuickStartID, isInline: true }, props), children ? (React.createElement(DrawerContent, Object.assign({ panelContent: panelContent }, fullWidthBodyStyle),
2313
- React.createElement(DrawerContentBody, { className: "pfext-quick-start-drawer__body" }, children))) : (React.createElement("div", { className: "pf-v6-c-drawer__main" }, panelContent))),
2221
+ React.createElement(DrawerContentBody, null, children))) : (React.createElement("div", null, panelContent))),
2314
2222
  React.createElement(QuickStartCloseModal, { isOpen: modalOpen, onConfirm: onModalConfirm, onCancel: onModalCancel })));
2315
2223
  };
2316
2224
 
@@ -2372,17 +2280,17 @@ const HelpTopicPanelContent = (_a) => {
2372
2280
  !!((_b = activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.links) === null || _b === void 0 ? void 0 : _b.length) && React.createElement(Divider, null),
2373
2281
  paddingContainer(React.createElement(Stack, { hasGutter: true }, (_c = activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.links) === null || _c === void 0 ? void 0 : _c.map(({ href, text, newTab, isExternal }, index) => (React.createElement(StackItem, { key: index },
2374
2282
  React.createElement(Button, { component: "a", href: href, target: newTab ? '_blank' : '', rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: isExternal ? React.createElement(ExternalLinkAltIcon, null) : null, iconPosition: "right", style: { fontSize: 'inherit' } }, text || href))))))));
2375
- const content = (React.createElement(DrawerPanelContent, Object.assign({ isResizable: isResizable, className: "pfext-quick-start__base" }, props),
2283
+ const content = (React.createElement(DrawerPanelContent, Object.assign({ isResizable: isResizable }, props),
2376
2284
  React.createElement("div", null,
2377
2285
  React.createElement(DrawerHead, null,
2378
- React.createElement("div", { className: "pfext-quick-start-panel-content__title" },
2286
+ React.createElement("div", null,
2379
2287
  helpTopicOptions && (React.createElement(Select, { isPlain: true, id: "help-topics-select", selected: activeHelpTopic, isOpen: isHelpTopicMenuOpen, onSelect: onSelectHelpTopic, onOpenChange: (isOpen) => setIsHelpTopicMenuOpen(isOpen), toggle: (toggleRef) => (React.createElement(MenuToggle, { isFullWidth: true, ref: toggleRef, icon: React.createElement(BarsIcon, null), onClick: toggleHelpTopicMenu, isExpanded: isHelpTopicMenuOpen }, activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title)) },
2380
2288
  React.createElement(SelectList, null, helpTopicOptions))),
2381
- React.createElement(Title, { headingLevel: "h1", size: "xl", className: "pfext-quick-start-panel-content__name", style: { marginRight: 'var(--pf-t--global--spacer--md)' } }, activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title)),
2289
+ React.createElement(Title, { headingLevel: "h1", size: "xl", style: { marginRight: 'var(--pf-t--global--spacer--md)' } }, activeHelpTopic === null || activeHelpTopic === void 0 ? void 0 : activeHelpTopic.title)),
2382
2290
  React.createElement(DrawerActions, null,
2383
- React.createElement(DrawerCloseButton, { onClick: onClose, className: "pfext-quick-start-panel-content__close-button", "data-testid": "qs-drawer-close" }))),
2291
+ React.createElement(DrawerCloseButton, { onClick: onClose, "data-testid": "qs-drawer-close" }))),
2384
2292
  React.createElement(Divider, null),
2385
- React.createElement(DrawerPanelBody, { hasNoPadding: true, className: "pfext-quick-start-panel-content__body", "data-test": "content" }, panelBodyItems))));
2293
+ React.createElement(DrawerPanelBody, { "data-test": "content" }, panelBodyItems))));
2386
2294
  return content;
2387
2295
  };
2388
2296
 
@@ -2414,7 +2322,7 @@ const HelpTopicDrawer = (_a) => {
2414
2322
  const panelContent = (React.createElement(HelpTopicPanelContent, { activeHelpTopic: activeHelpTopic, filteredHelpTopics: filteredHelpTopics, onClose: onClose }));
2415
2323
  return (React.createElement(React.Fragment, null,
2416
2324
  React.createElement(Drawer, Object.assign({ isExpanded: !!activeHelpTopic, isInline: true }, props), children ? (React.createElement(DrawerContent, { panelContent: panelContent },
2417
- React.createElement(DrawerContentBody, { className: "pfext-quick-start-drawer__body" }, children))) : (React.createElement("div", { className: "pf-v6-c-drawer__main" }, panelContent)))));
2325
+ React.createElement(DrawerContentBody, null, children))) : (React.createElement("div", { className: "pf-v6-c-drawer__main" }, panelContent)))));
2418
2326
  };
2419
2327
 
2420
2328
  const useLocalStorage = (key, initialValue) => {