@patternfly/quickstarts 1.3.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -178,6 +178,7 @@ var en = {
178
178
  "{{count, number}} item": "{{count, number}} item",
179
179
  "{{count, number}} item_plural": "{{count, number}} items",
180
180
  "Prerequisites ({{totalPrereqs}})": "Prerequisites ({{totalPrereqs}})",
181
+ "View Prerequisites ({{totalPrereqs}})": "View Prerequisites ({{totalPrereqs}})",
181
182
  Prerequisites: Prerequisites,
182
183
  "Show prerequisites": "Show prerequisites",
183
184
  Complete: Complete,
@@ -205,7 +206,8 @@ var en = {
205
206
  "Your progress will be saved.": "Your progress will be saved.",
206
207
  "Not available": "Not available",
207
208
  "Copy to clipboard": "Copy to clipboard",
208
- "Successfully copied to clipboard!": "Successfully copied to clipboard!"
209
+ "Successfully copied to clipboard!": "Successfully copied to clipboard!",
210
+ "Quick start • {{duration, number}} minutes": "Quick start • {{duration, number}} minutes"
209
211
  };
210
212
 
211
213
  /* eslint-disable */
@@ -615,6 +617,7 @@ const QuickStartContextDefaults = {
615
617
  },
616
618
  setFilter: () => { },
617
619
  footer: null,
620
+ useLegacyHeaderColors: false,
618
621
  markdown: null,
619
622
  loading: false,
620
623
  alwaysShowTaskReview: false,
@@ -633,7 +636,7 @@ const getResource = (resource, options, resourceBundle, lng) => {
633
636
  const useValuesForQuickStartContext = (value = {}) => {
634
637
  var _a, _b;
635
638
  const combinedValue = Object.assign(Object.assign({}, QuickStartContextDefaults), value);
636
- const { activeQuickStartID, setActiveQuickStartID, setAllQuickStartStates, useQueryParams, allQuickStartStates, allQuickStarts = [], footer, markdown, } = combinedValue;
639
+ const { activeQuickStartID, setActiveQuickStartID, setAllQuickStartStates, useQueryParams, allQuickStartStates, allQuickStarts = [], footer, useLegacyHeaderColors, markdown, } = combinedValue;
637
640
  const [quickStarts, setQuickStarts] = React__default['default'].useState(combinedValue.allQuickStarts || []);
638
641
  const [resourceBundle, setResourceBundle] = React__default['default'].useState(Object.assign(Object.assign({}, en), combinedValue.resourceBundle));
639
642
  const [language, setLanguage] = React__default['default'].useState(combinedValue.language);
@@ -816,6 +819,7 @@ const useValuesForQuickStartContext = (value = {}) => {
816
819
  setQuickStartTaskStatus,
817
820
  getQuickStartForId,
818
821
  footer,
822
+ useLegacyHeaderColors,
819
823
  useQueryParams,
820
824
  markdown,
821
825
  resourceBundle,
@@ -1001,7 +1005,7 @@ const SimplePopper = ({ children }) => {
1001
1005
  }
1002
1006
  }, [destroy, isOpen]);
1003
1007
  return isOpen ? (React__namespace.createElement(Portal, null,
1004
- React__namespace.createElement("div", { ref: nodeRefCallback, style: { zIndex: 9999, position: 'absolute', top: 0, left: 0 } }, children))) : null;
1008
+ React__namespace.createElement("div", { ref: nodeRefCallback, style: { zIndex: 9999, position: 'absolute', top: 0, left: 0 }, className: "pfext-quick-start__base" }, children))) : null;
1005
1009
  };
1006
1010
 
1007
1011
  const isInViewport = (elementToCheck) => {
@@ -1244,7 +1248,7 @@ const CopyClipboard = ({ element, rootSelector, docContext, }) => {
1244
1248
  useEventListener(element, 'mouseleave', React__namespace.useCallback(() => {
1245
1249
  setShowSuccessContent(false);
1246
1250
  }, []));
1247
- return showSuccessContent ? (React__namespace.createElement(reactCore.Tooltip, { key: "after-copy", isVisible: true, reference: () => element, content: getResource('Successfully copied to clipboard!') })) : (React__namespace.createElement(reactCore.Tooltip, { key: "before-copy", reference: () => element, content: getResource('Copy to clipboard') }));
1251
+ return showSuccessContent ? (React__namespace.createElement(reactCore.Tooltip, { key: "after-copy", isVisible: true, reference: () => element, content: getResource('Successfully copied to clipboard!'), className: "pfext-quick-start__base" })) : (React__namespace.createElement(reactCore.Tooltip, { key: "before-copy", reference: () => element, content: getResource('Copy to clipboard'), className: "pfext-quick-start__base" }));
1248
1252
  };
1249
1253
  const MarkdownCopyClipboard = ({ docContext, rootSelector, }) => {
1250
1254
  const elements = docContext.querySelectorAll(`${rootSelector} [${MARKDOWN_COPY_BUTTON_ID}]`);
@@ -1569,10 +1573,11 @@ const QuickStartTileDescription = ({ description, prerequisites, }) => {
1569
1573
  React__namespace.createElement(reactCore.Text, { component: reactCore.TextVariants.h5, className: "pfext-quick-start-tile-prerequisites__text" },
1570
1574
  getResource('Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length),
1571
1575
  ' '),
1572
- React__namespace.createElement(reactCore.Popover, { "aria-label": getResource('Prerequisites'), headerContent: getResource('Prerequisites'), className: "pfext-page-layout__base", bodyContent: React__namespace.createElement(reactCore.TextList, { "aria-label": getResource('Prerequisites'), className: "pfext-quick-start-tile-prerequisites-list" }, prereqs.map((prerequisite, index) => (
1573
- // eslint-disable-next-line react/no-array-index-key
1574
- React__namespace.createElement(reactCore.TextListItem, { key: index },
1575
- React__namespace.createElement(QuickStartMarkdownView, { content: prerequisite }))))) },
1576
+ React__namespace.createElement(reactCore.Popover, { "aria-label": getResource('Prerequisites'), headerContent: getResource('Prerequisites'), className: "pfext-quick-start__base", bodyContent: React__namespace.createElement("div", { className: "pfext-popover__base" },
1577
+ React__namespace.createElement(reactCore.TextList, { "aria-label": getResource('Prerequisites'), className: "pfext-quick-start-tile-prerequisites-list" }, prereqs.map((prerequisite, index) => (
1578
+ // eslint-disable-next-line react/no-array-index-key
1579
+ React__namespace.createElement(reactCore.TextListItem, { key: index },
1580
+ React__namespace.createElement(QuickStartMarkdownView, { content: prerequisite })))))) },
1576
1581
  React__namespace.createElement(reactCore.Button, { variant: "link", isInline: true, className: "pfext-quick-start-tile-prerequisites__icon", "data-testid": "qs-card-prereqs", onClick: (e) => {
1577
1582
  e.preventDefault();
1578
1583
  e.stopPropagation();
@@ -1595,20 +1600,20 @@ const QuickStartTileFooter = ({ quickStartId, status, totalTasks, }) => {
1595
1600
  }, [quickStartId, restartQuickStart, totalTasks]);
1596
1601
  return (React__namespace.createElement(reactCore.Flex, { justifyContent: { default: 'justifyContentSpaceBetween' } },
1597
1602
  status === exports.QuickStartStatus.NOT_STARTED && (React__namespace.createElement(reactCore.FlexItem, null,
1598
- React__namespace.createElement(reactCore.Button, { onClick: start, variant: "link", isInline: true, "data-testid": "qs-card-notStarted-start" }, getResource('Start')))),
1603
+ React__namespace.createElement(reactCore.Button, { onClick: start, variant: "link", isInline: true, "data-testid": "qs-card-notStarted-start", id: `${quickStartId}-start`, "aria-labelledby": `${quickStartId}-start ${quickStartId}` }, getResource('Start')))),
1599
1604
  status === exports.QuickStartStatus.IN_PROGRESS && activeQuickStartID !== quickStartId && (React__namespace.createElement(reactCore.FlexItem, null,
1600
- React__namespace.createElement(reactCore.Button, { variant: "link", isInline: true, "data-testid": "qs-card-inProgress-resume" }, getResource('Continue')))),
1605
+ React__namespace.createElement(reactCore.Button, { variant: "link", isInline: true, "data-testid": "qs-card-inProgress-resume", id: `${quickStartId}-continue`, "aria-labelledby": `${quickStartId}-continue ${quickStartId}` }, getResource('Continue')))),
1601
1606
  status === exports.QuickStartStatus.COMPLETE && (React__namespace.createElement(reactCore.FlexItem, null,
1602
- React__namespace.createElement(reactCore.Button, { onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-complete-restart" }, getResource('Start')))),
1607
+ React__namespace.createElement(reactCore.Button, { onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-complete-restart", id: `${quickStartId}-restart`, "aria-labelledby": `${quickStartId}-restart ${quickStartId}` }, getResource('Restart')))),
1603
1608
  status === exports.QuickStartStatus.IN_PROGRESS && (React__namespace.createElement(reactCore.FlexItem, null,
1604
- React__namespace.createElement(reactCore.Button, { onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-inProgress-restart" }, getResource('Restart'))))));
1609
+ React__namespace.createElement(reactCore.Button, { onClick: restart, variant: "link", isInline: true, "data-testid": "qs-card-inProgress-restart", id: `${quickStartId}-restart`, "aria-labelledby": `${quickStartId}-restart ${quickStartId}` }, getResource('Restart'))))));
1605
1610
  };
1606
1611
 
1607
- const QuickStartTileFooterExternal = ({ link }) => {
1612
+ const QuickStartTileFooterExternal = ({ link, quickStartId, }) => {
1608
1613
  const { href, text } = link;
1609
1614
  return (React__namespace.createElement(reactCore.Flex, { justifyContent: { default: 'justifyContentSpaceBetween' } },
1610
1615
  React__namespace.createElement(reactCore.FlexItem, null,
1611
- React__namespace.createElement(reactCore.Button, { component: "a", href: href, target: "_blank", rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: React__namespace.createElement(ExternalLinkAltIcon__default['default'], null), iconPosition: "right" }, text || href))));
1616
+ React__namespace.createElement(reactCore.Button, { component: "a", href: href, target: "_blank", rel: "noopener noreferrer", variant: "link", "aria-label": `Open documentation in new window`, isInline: true, icon: React__namespace.createElement(ExternalLinkAltIcon__default['default'], null), iconPosition: "right", id: quickStartId, "aria-labelledby": `${quickStartId}-external ${quickStartId}` }, text || href))));
1612
1617
  };
1613
1618
 
1614
1619
  const statusColorMap = {
@@ -1616,7 +1621,7 @@ const statusColorMap = {
1616
1621
  [exports.QuickStartStatus.IN_PROGRESS]: 'purple',
1617
1622
  [exports.QuickStartStatus.NOT_STARTED]: 'grey',
1618
1623
  };
1619
- const QuickStartTileHeader = ({ status, duration, name, type, }) => {
1624
+ const QuickStartTileHeader = ({ status, duration, name, type, quickStartId, }) => {
1620
1625
  const { getResource } = React__namespace.useContext(QuickStartContext);
1621
1626
  const statusLocaleMap = {
1622
1627
  [exports.QuickStartStatus.COMPLETE]: getResource('Complete'),
@@ -1624,7 +1629,7 @@ const QuickStartTileHeader = ({ status, duration, name, type, }) => {
1624
1629
  [exports.QuickStartStatus.NOT_STARTED]: getResource('Not started'),
1625
1630
  };
1626
1631
  return (React__namespace.createElement("div", { className: "pfext-quick-start-tile-header" },
1627
- React__namespace.createElement(reactCore.Title, { headingLevel: "h3", "data-test": "title" }, name),
1632
+ React__namespace.createElement(reactCore.Title, { headingLevel: "h3", "data-test": "title", id: quickStartId }, name),
1628
1633
  React__namespace.createElement("div", { className: "pfext-quick-start-tile-header__status" },
1629
1634
  type && (React__namespace.createElement(reactCore.Label, { className: "pfext-quick-start-tile-header--margin", color: type.color }, type.text)),
1630
1635
  duration && (React__namespace.createElement(reactCore.Label, { variant: "outline", "data-test": "duration", icon: React__namespace.createElement(OutlinedClockIcon__default['default'], null), className: "pfext-quick-start-tile-header--margin" }, getResource('{{duration, number}} minutes', duration).replace('{{duration, number}}', duration))),
@@ -1642,7 +1647,7 @@ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, })
1642
1647
  else {
1643
1648
  quickStartIcon = (React__namespace.createElement(FallbackImg, { className: "pfext-catalog-item-icon__img--large", src: icon, alt: "", fallback: React__namespace.createElement(RocketIcon__default['default'], null) }));
1644
1649
  }
1645
- const footerComponent = footer && footer.show === false ? null : link ? (React__namespace.createElement(QuickStartTileFooterExternal, { link: link })) : (React__namespace.createElement(QuickStartTileFooter, { quickStartId: id, status: status, totalTasks: tasks === null || tasks === void 0 ? void 0 : tasks.length }));
1650
+ const footerComponent = footer && footer.show === false ? null : link ? (React__namespace.createElement(QuickStartTileFooterExternal, { link: link, quickStartId: id })) : (React__namespace.createElement(QuickStartTileFooter, { quickStartId: id, status: status, totalTasks: tasks === null || tasks === void 0 ? void 0 : tasks.length }));
1646
1651
  const handleClick = (e) => {
1647
1652
  var _a;
1648
1653
  if ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) {
@@ -1662,7 +1667,7 @@ const QuickStartTile = ({ quickStart, status, isActive, onClick = () => { }, })
1662
1667
  // @ts-ignore
1663
1668
  component: "div", style: {
1664
1669
  cursor: 'pointer',
1665
- }, icon: quickStartIcon, className: "pfext-quick-start-tile", "data-testid": `qs-card-${camelize(displayName)}`, featured: isActive, title: React__namespace.createElement(QuickStartTileHeader, { name: displayName, status: status, duration: durationMinutes, type: type }), onClick: handleClick, "data-test": `tile ${id}`, description: React__namespace.createElement(QuickStartTileDescription, { description: description, prerequisites: prerequisites }), footer: footerComponent })));
1670
+ }, icon: quickStartIcon, className: "pfext-quick-start-tile", "data-testid": `qs-card-${camelize(displayName)}`, featured: isActive, title: React__namespace.createElement(QuickStartTileHeader, { name: displayName, status: status, duration: durationMinutes, type: type, quickStartId: id }), onClick: handleClick, "data-test": `tile ${id}`, description: React__namespace.createElement(QuickStartTileDescription, { description: description, prerequisites: prerequisites }), footer: footerComponent })));
1666
1671
  };
1667
1672
 
1668
1673
  const QuickStartCatalog = ({ quickStarts }) => {
@@ -1855,7 +1860,7 @@ const QuickStartCatalogPage = ({ quickStarts, showFilter, sortFnc = (q1, q2) =>
1855
1860
  if (!allQuickStarts || allQuickStarts.length === 0) {
1856
1861
  return React__namespace.createElement(EmptyBox, { label: getResource('Quick Starts') });
1857
1862
  }
1858
- return (React__namespace.createElement(React__namespace.Fragment, null,
1863
+ return (React__namespace.createElement("div", { className: "pfext-quick-start__base" },
1859
1864
  showTitle && (React__namespace.createElement("div", { className: "pfext-page-layout__header" },
1860
1865
  React__namespace.createElement(reactCore.Text, { component: "h1", className: "pfext-page-layout__title", "data-test": "page-title" }, title || getResource('Quick Starts')),
1861
1866
  hint && React__namespace.createElement("div", { className: "pfext-page-layout__hint" }, hint))),
@@ -1876,31 +1881,31 @@ const QuickStartCatalogToolbar = ({ children }) => (React__namespace.createEleme
1876
1881
 
1877
1882
  const QuickStartCloseModal = ({ isOpen, onConfirm, onCancel, }) => {
1878
1883
  const { getResource } = React__namespace.useContext(QuickStartContext);
1879
- return (React__namespace.createElement(Modal, { className: "pfext-quick-start-drawer__modal", isOpen: isOpen, variant: reactCore.ModalVariant.small, showClose: false, "data-test": "leave-quickstart", title: getResource('Leave quick start?'), footer: React__namespace.createElement(reactCore.Flex, null,
1884
+ return (React__namespace.createElement(Modal, { className: "pfext-quick-start-drawer__modal pfext-quick-start__base", isOpen: isOpen, variant: reactCore.ModalVariant.small, showClose: false, "data-test": "leave-quickstart", title: getResource('Leave quick start?'), footer: React__namespace.createElement(reactCore.Flex, null,
1880
1885
  React__namespace.createElement(reactCore.FlexItem, { align: { default: 'alignRight' } },
1881
1886
  React__namespace.createElement(reactCore.Button, { variant: "secondary", "data-test": "cancel button", onClick: onCancel }, getResource('Cancel'))),
1882
1887
  React__namespace.createElement(reactCore.FlexItem, null,
1883
1888
  React__namespace.createElement(reactCore.Button, { variant: "primary", "data-test": "leave button", onClick: onConfirm }, getResource('Leave')))), isFullScreen: true }, getResource('Your progress will be saved.')));
1884
1889
  };
1885
1890
 
1886
- const TaskIcon = ({ taskIndex, taskStatus, isActiveTask }) => {
1891
+ const TaskIcon = ({ taskIndex, taskStatus }) => {
1887
1892
  const { getResource } = React__namespace.useContext(QuickStartContext);
1888
- const stepNumberIcon = (React__namespace.createElement("span", { className: "pfext-icon-and-text__icon pfext-quick-start-task-header__task-icon-init" }, getResource('{{taskIndex, number}}', taskIndex).replace('{{taskIndex, number}}', taskIndex)));
1889
- // When the task has been visited but is the active task, show number icon.
1890
- if (taskStatus === exports.QuickStartTaskStatus.VISITED && isActiveTask) {
1891
- return stepNumberIcon;
1893
+ const success = taskStatus === exports.QuickStartTaskStatus.SUCCESS;
1894
+ const failed = taskStatus === exports.QuickStartTaskStatus.FAILED;
1895
+ const classNames = reactStyles.css('pfext-icon-and-text__icon', {
1896
+ 'pfext-quick-start-task-header__task-icon-init': !failed && !success,
1897
+ });
1898
+ let content;
1899
+ if (success) {
1900
+ content = (React__namespace.createElement(CheckCircleIcon__default['default'], { size: "md", className: "pfext-quick-start-task-header__task-icon-success" }));
1892
1901
  }
1893
- switch (taskStatus) {
1894
- case exports.QuickStartTaskStatus.SUCCESS:
1895
- return (React__namespace.createElement("span", { className: "pfext-icon-and-text__icon" },
1896
- React__namespace.createElement(CheckCircleIcon__default['default'], { size: "md", className: "pfext-quick-start-task-header__task-icon-success" })));
1897
- case exports.QuickStartTaskStatus.FAILED:
1898
- case exports.QuickStartTaskStatus.VISITED:
1899
- return (React__namespace.createElement("span", { className: "pfext-icon-and-text__icon" },
1900
- React__namespace.createElement(ExclamationCircleIcon__default['default'], { size: "md", className: "pfext-quick-start-task-header__task-icon-failed" })));
1901
- default:
1902
- return stepNumberIcon;
1902
+ else if (failed) {
1903
+ content = (React__namespace.createElement(ExclamationCircleIcon__default['default'], { size: "md", className: "pfext-quick-start-task-header__task-icon-failed" }));
1903
1904
  }
1905
+ else {
1906
+ content = getResource('{{taskIndex, number}}', taskIndex).replace('{{taskIndex, number}}', taskIndex);
1907
+ }
1908
+ return React__namespace.createElement("span", { className: classNames }, content);
1904
1909
  };
1905
1910
  const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, isActiveTask, onTaskSelect, }) => {
1906
1911
  const classNames = reactStyles.css('pfext-quick-start-task-header__title', {
@@ -1909,16 +1914,16 @@ const QuickStartTaskHeader = ({ title, taskIndex, subtitle, taskStatus, size, is
1909
1914
  });
1910
1915
  const notCompleted = taskStatus === exports.QuickStartTaskStatus.VISITED;
1911
1916
  const skippedReviewOrFailed = taskStatus === exports.QuickStartTaskStatus.REVIEW || taskStatus === exports.QuickStartTaskStatus.FAILED;
1912
- const tryAgain = !isActiveTask && (skippedReviewOrFailed || notCompleted) && (React__namespace.createElement(reactCore.FlexItem, null,
1913
- React__namespace.createElement(reactCore.Title, { headingLevel: "h4", className: "pfext-quick-start-task-header__tryagain" }, "Try the steps again.")));
1914
- const content = (React__namespace.createElement(reactCore.Flex, { className: "pfext-quick-start-task-header", direction: { default: 'column' }, spaceItems: { default: 'spaceItemsXs' } },
1915
- React__namespace.createElement(reactCore.FlexItem, null,
1916
- React__namespace.createElement(reactCore.Title, { headingLevel: "h3", size: size, className: classNames },
1917
- React__namespace.createElement(TaskIcon, { taskIndex: taskIndex, taskStatus: taskStatus, isActiveTask: true }),
1918
- React__namespace.createElement("span", { dangerouslySetInnerHTML: { __html: removeParagraphWrap(markdownConvert(title)) } }),
1919
- isActiveTask && subtitle && (React__namespace.createElement(React__namespace.Fragment, null,
1920
- ' ',
1921
- React__namespace.createElement("span", { className: "pfext-quick-start-task-header__subtitle", "data-test-id": "quick-start-task-subtitle" }, subtitle))))),
1917
+ const tryAgain = !isActiveTask && (skippedReviewOrFailed || notCompleted) && (React__namespace.createElement(React__namespace.Fragment, null,
1918
+ React__namespace.createElement("div", null),
1919
+ React__namespace.createElement("div", { className: "pfext-quick-start-task-header__tryagain" }, "Try the steps again.")));
1920
+ const content = (React__namespace.createElement("div", { className: "pfext-quick-start-task-header" },
1921
+ React__namespace.createElement(TaskIcon, { taskIndex: taskIndex, taskStatus: taskStatus }),
1922
+ React__namespace.createElement(reactCore.Title, { headingLevel: "h3", size: size, className: classNames },
1923
+ React__namespace.createElement("span", { dangerouslySetInnerHTML: { __html: removeParagraphWrap(markdownConvert(title)) } }),
1924
+ isActiveTask && subtitle && (React__namespace.createElement("span", { className: "pfext-quick-start-task-header__subtitle", "data-test-id": "quick-start-task-subtitle" },
1925
+ ' ',
1926
+ subtitle))),
1922
1927
  tryAgain));
1923
1928
  return (React__namespace.createElement(reactCore.WizardNavItem, { content: content, step: taskIndex, onNavItemClick: () => onTaskSelect(taskIndex - 1), navItemComponent: "button", isCurrent: isActiveTask }));
1924
1929
  };
@@ -1947,10 +1952,18 @@ const QuickStartConclusion = ({ tasks, conclusion, allTaskStatuses, nextQuickSta
1947
1952
  })));
1948
1953
  };
1949
1954
 
1950
- const QuickStartIntroduction = ({ tasks, introduction, allTaskStatuses, onTaskSelect, }) => {
1955
+ const QuickStartIntroduction = ({ tasks, introduction, allTaskStatuses, prerequisites, onTaskSelect, }) => {
1951
1956
  const { getResource } = React__namespace.useContext(QuickStartContext);
1957
+ const prereqs = prerequisites === null || prerequisites === void 0 ? void 0 : prerequisites.filter((p) => p);
1958
+ const [isPrereqsExpanded, setIsPrereqsExpanded] = React__namespace.useState(false);
1959
+ const prereqList = (prereqs === null || prereqs === void 0 ? void 0 : prereqs.length) > 0 && (React__namespace.createElement(reactCore.ExpandableSection, { toggleText: getResource('View Prerequisites ({{totalPrereqs}})').replace('{{totalPrereqs}}', prereqs.length), onToggle: () => setIsPrereqsExpanded(!isPrereqsExpanded), className: "pfext-quick-start-intro__prereq" },
1960
+ React__namespace.createElement(reactCore.List, { className: "pfext-quick-start-intro__prereq-list" }, prereqs.map((pr) => {
1961
+ return (React__namespace.createElement(reactCore.ListItem, { key: pr, className: "pfext-quick-start-intro__prereq-list__item" },
1962
+ React__namespace.createElement("span", { className: "pfext-quick-start-intro__prereq-list__item-content" }, pr)));
1963
+ }))));
1952
1964
  return (React__namespace.createElement(React__namespace.Fragment, null,
1953
1965
  React__namespace.createElement(QuickStartMarkdownView, { content: introduction }),
1966
+ prereqList,
1954
1967
  React__namespace.createElement("p", { style: { marginBottom: 'var(--pf-global--spacer--md)' } },
1955
1968
  getResource('In this quick start, you will complete {{count, number}} task', tasks.length).replace('{{count, number}}', tasks.length),
1956
1969
  ":"),
@@ -1975,7 +1988,7 @@ const QuickStartTaskReview = ({ review, taskStatus, onTaskReview, }) => {
1975
1988
  'pfext-quick-start-task-review--failed': taskStatus === exports.QuickStartTaskStatus.FAILED,
1976
1989
  });
1977
1990
  const title = React__namespace.createElement("span", { className: alertClassNames }, getResource('Check your work'));
1978
- return (React__namespace.createElement(reactCore.Alert, { variant: getAlertVariant(taskStatus), title: title, isInline: true },
1991
+ return (React__namespace.createElement(reactCore.Alert, { className: "pfext-quick-start-task-review-alert", variant: getAlertVariant(taskStatus), title: title, isInline: true },
1979
1992
  React__namespace.createElement(QuickStartMarkdownView, { content: instructions }),
1980
1993
  React__namespace.createElement("span", { className: "pfext-quick-start-task-review__actions" },
1981
1994
  React__namespace.createElement(reactCore.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 === exports.QuickStartTaskStatus.SUCCESS, onChange: () => onTaskReview(exports.QuickStartTaskStatus.SUCCESS) }),
@@ -1997,17 +2010,17 @@ const QuickStartTasks = ({ tasks, taskNumber, allTaskStatuses, onTaskReview, onT
1997
2010
  React__namespace.createElement(QuickStartTaskHeader, { taskIndex: index + 1, title: title, size: "md", subtitle: getResource('{{index, number}} of {{tasks, number}}')
1998
2011
  .replace('{{index, number}}', index + 1)
1999
2012
  .replace('{{tasks, number}}', tasks.length), taskStatus: taskStatus, isActiveTask: isActiveTask, onTaskSelect: onTaskSelect }),
2000
- isActiveTask && (React__namespace.createElement("div", { style: { marginBottom: 'var(--pf-global--spacer--md)' } },
2013
+ isActiveTask && (React__namespace.createElement("div", { className: "pfext-quick-start-task__content" },
2001
2014
  React__namespace.createElement(QuickStartMarkdownView, { content: description }),
2002
2015
  shouldShowTaskReview && (React__namespace.createElement(QuickStartTaskReview, { review: review, taskStatus: taskStatus, onTaskReview: onTaskReview }))))));
2003
2016
  })));
2004
2017
  };
2005
2018
 
2006
2019
  const QuickStartContent = React__namespace.forwardRef(({ quickStart, nextQuickStarts = [], taskNumber, allTaskStatuses, onTaskSelect, onTaskReview, onQuickStartChange, }, ref) => {
2007
- const { spec: { introduction, tasks, conclusion }, } = quickStart;
2020
+ const { spec: { introduction, tasks, conclusion, prerequisites }, } = quickStart;
2008
2021
  const totalTasks = tasks.length;
2009
2022
  return (React__namespace.createElement("div", { className: "pfext-quick-start-content", ref: ref },
2010
- taskNumber === -1 && (React__namespace.createElement(QuickStartIntroduction, { tasks: tasks, allTaskStatuses: allTaskStatuses, introduction: introduction, onTaskSelect: onTaskSelect })),
2023
+ taskNumber === -1 && (React__namespace.createElement(QuickStartIntroduction, { tasks: tasks, allTaskStatuses: allTaskStatuses, introduction: introduction, prerequisites: prerequisites, onTaskSelect: onTaskSelect })),
2011
2024
  taskNumber > -1 && taskNumber < totalTasks && (React__namespace.createElement(QuickStartTasks, { tasks: tasks, taskNumber: taskNumber, allTaskStatuses: allTaskStatuses, onTaskReview: onTaskReview, onTaskSelect: onTaskSelect })),
2012
2025
  taskNumber === totalTasks && (React__namespace.createElement(QuickStartConclusion, { tasks: tasks, conclusion: conclusion, allTaskStatuses: allTaskStatuses, nextQuickStarts: nextQuickStarts, onQuickStartChange: onQuickStartChange, onTaskSelect: onTaskSelect }))));
2013
2026
  });
@@ -2109,7 +2122,7 @@ const useScrollTopOnTaskNumberChange = (node, taskNumber) => {
2109
2122
  }, [taskNumber, node]);
2110
2123
  };
2111
2124
  const QuickStartPanelContent = (_a) => {
2112
- var { quickStarts = [], handleClose, activeQuickStartID, appendTo, isResizable = true, showClose = true } = _a, props = tslib.__rest(_a, ["quickStarts", "handleClose", "activeQuickStartID", "appendTo", "isResizable", "showClose"]);
2125
+ var { quickStarts = [], handleClose, activeQuickStartID, appendTo, isResizable = true, showClose = true, headerVariant = '' } = _a, props = tslib.__rest(_a, ["quickStarts", "handleClose", "activeQuickStartID", "appendTo", "isResizable", "showClose", "headerVariant"]);
2113
2126
  const { getResource } = React__namespace.useContext(QuickStartContext);
2114
2127
  const [contentRef, setContentRef] = React__namespace.useState();
2115
2128
  const shadows = useScrollShadows(contentRef);
@@ -2120,6 +2133,7 @@ const QuickStartPanelContent = (_a) => {
2120
2133
  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); });
2121
2134
  const headerClasses = reactStyles.css('pfext-quick-start-panel-content__header', {
2122
2135
  'pfext-quick-start-panel-content__header__shadow': shadows === Shadows.top || shadows === Shadows.both,
2136
+ 'pfext-quick-start-panel-content__header--blue-white': headerVariant === 'blue-white',
2123
2137
  });
2124
2138
  const footerClass = reactStyles.css({
2125
2139
  'pfext-quick-start-panel-content__footer__shadow': shadows === Shadows.bottom || shadows === Shadows.both,
@@ -2134,16 +2148,16 @@ const QuickStartPanelContent = (_a) => {
2134
2148
  }
2135
2149
  return Number.parseInt(taskNumber, 10) + 1;
2136
2150
  };
2137
- const content = quickStart ? (React__namespace.createElement(reactCore.DrawerPanelContent, Object.assign({ isResizable: isResizable, className: "pfext-quick-start-panel-content", "data-testid": `qs-drawer-${camelize(quickStart.spec.displayName)}`, "data-qs": `qs-step-${getStep()}`, "data-test": "quickstart drawer" }, props),
2151
+ const content = quickStart ? (React__namespace.createElement(reactCore.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),
2138
2152
  React__namespace.createElement("div", { className: headerClasses },
2139
2153
  React__namespace.createElement(reactCore.DrawerHead, null,
2140
2154
  React__namespace.createElement("div", { className: "pfext-quick-start-panel-content__title" },
2141
- React__namespace.createElement(reactCore.Title, { headingLevel: "h1", size: "xl", style: { marginRight: 'var(--pf-global--spacer--md)' } }, quickStart === null || quickStart === void 0 ? void 0 :
2155
+ React__namespace.createElement(reactCore.Title, { headingLevel: "h1", size: "xl", className: "pfext-quick-start-panel-content__name", style: { marginRight: 'var(--pf-global--spacer--md)' } }, quickStart === null || quickStart === void 0 ? void 0 :
2142
2156
  quickStart.spec.displayName,
2143
2157
  ' ',
2144
- React__namespace.createElement("small", { className: "pfext-quick-start-panel-content__duration text-secondary" }, getResource('{{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes).replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)))),
2158
+ React__namespace.createElement("small", { className: "pfext-quick-start-panel-content__duration" }, getResource('Quick start • {{duration, number}} minutes', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes).replace('{{duration, number}}', quickStart === null || quickStart === void 0 ? void 0 : quickStart.spec.durationMinutes)))),
2145
2159
  showClose && (React__namespace.createElement(reactCore.DrawerActions, null,
2146
- React__namespace.createElement(reactCore.DrawerCloseButton, { onClick: handleClose, "data-testid": "qs-drawer-close" }))))),
2160
+ React__namespace.createElement(reactCore.DrawerCloseButton, { onClick: handleClose, className: "pfext-quick-start-panel-content__close-button", "data-testid": "qs-drawer-close" }))))),
2147
2161
  React__namespace.createElement(reactCore.DrawerPanelBody, { hasNoPadding: true, className: "pfext-quick-start-panel-content__body", "data-test": "content" },
2148
2162
  React__namespace.createElement(QuickStartController, { quickStart: quickStart, nextQuickStarts: nextQuickStarts, footerClass: footerClass, contentRef: setContentRef })))) : null;
2149
2163
  if (appendTo) {
@@ -2153,13 +2167,14 @@ const QuickStartPanelContent = (_a) => {
2153
2167
  };
2154
2168
 
2155
2169
  const QuickStartContainer = (_a) => {
2156
- var { quickStarts, children, activeQuickStartID, allQuickStartStates, setActiveQuickStartID, setAllQuickStartStates, appendTo, fullWidth, onCloseInProgress, onCloseNotInProgress, resourceBundle, showCardFooters, language, loading = false, useQueryParams = true, markdown, contextProps, alwaysShowTaskReview = false } = _a, props = tslib.__rest(_a, ["quickStarts", "children", "activeQuickStartID", "allQuickStartStates", "setActiveQuickStartID", "setAllQuickStartStates", "appendTo", "fullWidth", "onCloseInProgress", "onCloseNotInProgress", "resourceBundle", "showCardFooters", "language", "loading", "useQueryParams", "markdown", "contextProps", "alwaysShowTaskReview"]);
2170
+ var { quickStarts, children, activeQuickStartID, allQuickStartStates, setActiveQuickStartID, setAllQuickStartStates, appendTo, fullWidth, onCloseInProgress, onCloseNotInProgress, resourceBundle, showCardFooters, useLegacyHeaderColors, language, loading = false, useQueryParams = true, markdown, contextProps, alwaysShowTaskReview = false } = _a, props = tslib.__rest(_a, ["quickStarts", "children", "activeQuickStartID", "allQuickStartStates", "setActiveQuickStartID", "setAllQuickStartStates", "appendTo", "fullWidth", "onCloseInProgress", "onCloseNotInProgress", "resourceBundle", "showCardFooters", "useLegacyHeaderColors", "language", "loading", "useQueryParams", "markdown", "contextProps", "alwaysShowTaskReview"]);
2157
2171
  const valuesForQuickstartContext = useValuesForQuickStartContext(Object.assign({ allQuickStarts: quickStarts, activeQuickStartID,
2158
2172
  setActiveQuickStartID,
2159
2173
  allQuickStartStates,
2160
2174
  setAllQuickStartStates, footer: {
2161
2175
  show: showCardFooters,
2162
- }, language, resourceBundle: Object.assign({}, resourceBundle), loading,
2176
+ }, useLegacyHeaderColors,
2177
+ language, resourceBundle: Object.assign({}, resourceBundle), loading,
2163
2178
  useQueryParams,
2164
2179
  markdown,
2165
2180
  alwaysShowTaskReview }, contextProps));
@@ -2183,7 +2198,7 @@ const QuickStartContainer = (_a) => {
2183
2198
  };
2184
2199
  const QuickStartDrawer = (_a) => {
2185
2200
  var { quickStarts = [], children, appendTo, fullWidth, onCloseInProgress, onCloseNotInProgress } = _a, props = tslib.__rest(_a, ["quickStarts", "children", "appendTo", "fullWidth", "onCloseInProgress", "onCloseNotInProgress"]);
2186
- const { activeQuickStartID, setActiveQuickStart, allQuickStarts = [], activeQuickStartState, allQuickStartStates, setAllQuickStartStates, } = React__namespace.useContext(QuickStartContext);
2201
+ const { activeQuickStartID, setActiveQuickStart, allQuickStarts = [], activeQuickStartState, allQuickStartStates, setAllQuickStartStates, useLegacyHeaderColors, } = React__namespace.useContext(QuickStartContext);
2187
2202
  const combinedQuickStarts = allQuickStarts.concat(quickStarts);
2188
2203
  React__namespace.useEffect(() => {
2189
2204
  const params = new URLSearchParams(window.location.search);
@@ -2242,7 +2257,7 @@ const QuickStartDrawer = (_a) => {
2242
2257
  },
2243
2258
  }
2244
2259
  : {};
2245
- const panelContent = (React__namespace.createElement(QuickStartPanelContent, Object.assign({ quickStarts: combinedQuickStarts, handleClose: handleClose, activeQuickStartID: activeQuickStartID, appendTo: appendTo, isResizable: !fullWidth }, fullWidthPanelStyle)));
2260
+ const panelContent = (React__namespace.createElement(QuickStartPanelContent, Object.assign({ quickStarts: combinedQuickStarts, handleClose: handleClose, activeQuickStartID: activeQuickStartID, appendTo: appendTo, isResizable: !fullWidth, headerVariant: useLegacyHeaderColors ? '' : 'blue-white' }, fullWidthPanelStyle)));
2246
2261
  return (React__namespace.createElement(React__namespace.Fragment, null,
2247
2262
  React__namespace.createElement(reactCore.Drawer, Object.assign({ isExpanded: !!activeQuickStartID, isInline: true }, props), children ? (React__namespace.createElement(reactCore.DrawerContent, Object.assign({ panelContent: panelContent }, fullWidthBodyStyle),
2248
2263
  React__namespace.createElement(reactCore.DrawerContentBody, { className: "pfext-quick-start-drawer__body" }, children))) : (React__namespace.createElement("div", { className: "pf-c-drawer__main" }, panelContent))),