@rh-support/troubleshoot 2.6.119 → 2.6.120

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 (90) hide show
  1. package/lib/esm/components/AccountInfo/css/accountSelector.css +3 -2
  2. package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
  3. package/lib/esm/components/CaseEditView/Case.js +1 -1
  4. package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.d.ts.map +1 -1
  5. package/lib/esm/components/CaseEditView/CaseOverview/CaseOwnerInfo.js +1 -1
  6. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
  7. package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +2 -4
  8. package/lib/esm/components/CaseEditView/CaseOverview/index.js +2 -2
  9. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenShiftPopover.js +1 -1
  10. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
  11. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +4 -2
  12. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
  13. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +2 -1
  14. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
  15. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +2 -3
  16. package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +13 -33
  17. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummary.js +3 -3
  18. package/lib/esm/components/CaseEditView/Tabs/CaseSummary/CaseSummaryErrorMessage.js +1 -1
  19. package/lib/esm/components/CaseEditView/Tabs/RelatedTasks/RelatedTasks.js +1 -1
  20. package/lib/esm/components/CaseInformation/CaseGroup.d.ts.map +1 -1
  21. package/lib/esm/components/CaseInformation/CaseGroup.js +11 -1
  22. package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
  23. package/lib/esm/components/CaseInformation/CaseInformation.js +4 -4
  24. package/lib/esm/components/CaseInformation/Description.d.ts.map +1 -1
  25. package/lib/esm/components/CaseInformation/Description.js +1 -3
  26. package/lib/esm/components/CaseInformation/Severity.d.ts.map +1 -1
  27. package/lib/esm/components/CaseInformation/Severity.js +1 -1
  28. package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
  29. package/lib/esm/components/CaseInformation/SupportLevel.js +1 -1
  30. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
  31. package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +12 -6
  32. package/lib/esm/components/IdeaInformation/IdeaInformation.d.ts.map +1 -1
  33. package/lib/esm/components/IdeaInformation/IdeaInformation.js +4 -4
  34. package/lib/esm/components/OpenCase/OpenCase.d.ts.map +1 -1
  35. package/lib/esm/components/OpenCase/OpenCase.js +8 -2
  36. package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
  37. package/lib/esm/components/ProductSelector/AllProductsSelector.js +18 -6
  38. package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
  39. package/lib/esm/components/ProductSelector/ProductSelector.js +12 -5
  40. package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts +2 -0
  41. package/lib/esm/components/Recommendations/ClusterRecommendationItems.d.ts.map +1 -1
  42. package/lib/esm/components/Recommendations/ClusterRecommendationItems.js +16 -13
  43. package/lib/esm/components/Recommendations/ClusterRecommendations.d.ts.map +1 -1
  44. package/lib/esm/components/Recommendations/ClusterRecommendations.js +1 -4
  45. package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
  46. package/lib/esm/components/Recommendations/Recommendations.js +38 -38
  47. package/lib/esm/components/RemoteRider/RemoteRiderAcceptanceModal.d.ts.map +1 -1
  48. package/lib/esm/components/Review/Review.d.ts.map +1 -1
  49. package/lib/esm/components/Review/Review.js +5 -1
  50. package/lib/esm/components/TroubleshootSection/AskRedHat.js +1 -1
  51. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts +0 -9
  52. package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
  53. package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +44 -150
  54. package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
  55. package/lib/esm/components/shared/useIsSectionValid.js +71 -32
  56. package/lib/esm/components/wizardLayout/WizardAside.d.ts.map +1 -1
  57. package/lib/esm/components/wizardLayout/WizardAside.js +9 -18
  58. package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
  59. package/lib/esm/components/wizardLayout/WizardMain.js +64 -110
  60. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
  61. package/lib/esm/components/wizardLayout/WizardNavigation.js +53 -59
  62. package/lib/esm/css/AskRedHat.css +2 -9
  63. package/lib/esm/css/app.css +1 -1
  64. package/lib/esm/hooks/useWizard.d.ts +0 -4
  65. package/lib/esm/hooks/useWizard.d.ts.map +1 -1
  66. package/lib/esm/hooks/useWizard.js +6 -20
  67. package/lib/esm/reducers/AIResponseConstNTypes.d.ts +2 -17
  68. package/lib/esm/reducers/AIResponseConstNTypes.d.ts.map +1 -1
  69. package/lib/esm/reducers/AIResponseConstNTypes.js +0 -3
  70. package/lib/esm/reducers/AIResponseReducer.d.ts +0 -2
  71. package/lib/esm/reducers/AIResponseReducer.d.ts.map +1 -1
  72. package/lib/esm/reducers/AIResponseReducer.js +0 -17
  73. package/lib/esm/reducers/CaseConstNTypes.js +3 -3
  74. package/lib/esm/reducers/CaseDiscussionTabReducer.js +1 -1
  75. package/lib/esm/reducers/CaseHelpers.d.ts +8 -6
  76. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  77. package/lib/esm/reducers/CaseHelpers.js +20 -10
  78. package/lib/esm/reducers/CaseReducer.d.ts +1 -0
  79. package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
  80. package/lib/esm/reducers/CaseReducer.js +37 -2
  81. package/lib/esm/reducers/RouteConstNTypes.d.ts.map +1 -1
  82. package/lib/esm/reducers/RouteConstNTypes.js +1 -0
  83. package/lib/esm/scss/_pf-overrides.scss +23 -2
  84. package/package.json +7 -9
  85. package/lib/esm/components/Suggestions/TopContentSidebar.d.ts +0 -3
  86. package/lib/esm/components/Suggestions/TopContentSidebar.d.ts.map +0 -1
  87. package/lib/esm/components/Suggestions/TopContentSidebar.js +0 -26
  88. package/lib/esm/hooks/useAB.d.ts +0 -22
  89. package/lib/esm/hooks/useAB.d.ts.map +0 -1
  90. package/lib/esm/hooks/useAB.js +0 -37
@@ -33,10 +33,11 @@ const AllProductsSelector = forwardRef((props, ref) => {
33
33
  var _a, _b;
34
34
  const { globalMetadataState: { allProducts, loggedInUserRights }, } = useContext(GlobalMetadataStateContext);
35
35
  const caseDispatch = useCaseDispatch();
36
- const { product, version, contactSSOName } = useCaseSelector((state) => ({
36
+ const { product, version, contactSSOName, ABTestVariation } = useCaseSelector((state) => ({
37
37
  product: state.caseDetails.product,
38
38
  version: state.caseDetails.version,
39
39
  contactSSOName: state.caseDetails.contactSSOName,
40
+ ABTestVariation: state.ABTestVariation,
40
41
  }), isEqual);
41
42
  const { topContentState: { topContent }, } = useContext(TCStateContext);
42
43
  const { routeState: { activeSection, isCaseCreate }, } = useContext(RouteContext);
@@ -79,14 +80,25 @@ const AllProductsSelector = forwardRef((props, ref) => {
79
80
  RouteUtils.updateQueryParams(props.routeProps, newParams);
80
81
  }
81
82
  const entitledProducts = filter(allProducts.data.productsResult, (p) => p.isEntitledProduct);
83
+ const isATestvariation = ABTestVariation === 'A';
84
+ const isBTestvariation = ABTestVariation === 'B' || isEmpty(ABTestVariation);
85
+ // Determine whether to render the ProductVersionDropdownSelector
82
86
  const renderProductVersionDropdownSelector = (activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) &&
83
87
  !props.caseCreateExperience) ||
84
88
  activeSection === AppRouteSections.GET_SUPPORT ||
85
- props.isOnGetSupportPage ||
86
- props.isOnReviewPage;
87
- const renderOpenCaseIssue = activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) ||
88
- activeSection === AppRouteSections.REVIEW ||
89
- activeSection === AppRouteSections.SUBMIT_CASE;
89
+ isBTestvariation ||
90
+ (isATestvariation && (props.isOnGetSupportPage || props.isOnReviewPage));
91
+ // Determine whether to render the OpenCaseIssue component
92
+ const renderOpenCaseIssue = (isBTestvariation &&
93
+ (activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) ||
94
+ activeSection === AppRouteSections.REVIEW ||
95
+ activeSection === AppRouteSections.SUBMIT_CASE)) ||
96
+ (isATestvariation &&
97
+ (activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) ||
98
+ activeSection === AppRouteSections.REVIEW ||
99
+ activeSection === AppRouteSections.SUBMIT_CASE)) ||
100
+ (!props.caseCreateExperience &&
101
+ activeSection === (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT));
90
102
  return (React.createElement(React.Fragment, null,
91
103
  renderProductVersionDropdownSelector && (React.createElement("div", { className: "form-group product-selector-wrapper" },
92
104
  React.createElement("div", { className: "all-product-selector-dropdown" },
@@ -1 +1 @@
1
- {"version":3,"file":"ProductSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/ProductSelector.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAKlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBAqGpD"}
1
+ {"version":3,"file":"ProductSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/ProductSelector.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAOlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBA0GpD"}
@@ -8,12 +8,13 @@ import React, { useContext, useEffect, useRef } from 'react';
8
8
  import { Trans, useTranslation } from 'react-i18next';
9
9
  import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
10
10
  import { RouteContext } from '../../context/RouteContext';
11
- import { useAB } from '../../hooks/useAB';
12
11
  import { useFetchCVEData } from '../../hooks/useFetchCVEData';
13
12
  import { setCaseState } from '../../reducers/CaseReducer';
14
13
  import { CveModal } from '../Cve/CveModal';
14
+ import { EARuleWidget } from '../Recommendations/EARules/EARuleWidget';
15
15
  import Recommendations from '../Recommendations/Recommendations';
16
16
  import { AllProductsSelector } from './AllProductsSelector';
17
+ import { ProductSelectorLoader } from './ProductSelectorLoader';
17
18
  /**
18
19
  * Responsible for:
19
20
  * # Setting case state with product version from url.
@@ -25,16 +26,18 @@ import { AllProductsSelector } from './AllProductsSelector';
25
26
  export default function ProductSelector(props) {
26
27
  const { cveRecommendation } = useFetchCVEData();
27
28
  const { t } = useTranslation();
28
- const { isVariationA } = useAB();
29
29
  const { globalMetadataState: { allProducts, pcmConfig }, } = useContext(GlobalMetadataStateContext);
30
- const { product, version } = useCaseSelector((state) => ({
30
+ const { product, version, ABTestVariation } = useCaseSelector((state) => ({
31
31
  product: state.caseDetails.product,
32
32
  version: state.caseDetails.version,
33
+ ABTestVariation: state.ABTestVariation,
33
34
  }), isEqual);
34
35
  const { routeState: { isCaseCreate }, } = useContext(RouteContext);
35
36
  const caseDispatch = useCaseDispatch();
36
37
  const cveModalEnabledConfig = getConfigField(pcmConfig.data, 'isCVEModalEnabled', PCM_CONFIG_FIELD_TYPE.STRING);
37
38
  const isCVEModalEnabled = cveModalEnabledConfig === '1';
39
+ const isATestvariation = ABTestVariation === 'A';
40
+ const isBTestvariation = ABTestVariation === 'B' || isEmpty(ABTestVariation);
38
41
  useEffect(() => {
39
42
  if (!isCVEModalEnabled) {
40
43
  setCaseState(caseDispatch, {
@@ -53,8 +56,11 @@ export default function ProductSelector(props) {
53
56
  (cveRecommendation === null || cveRecommendation === void 0 ? void 0 : cveRecommendation.length) !== 0 && isCVEModalEnabled && React.createElement(CveModal, null),
54
57
  React.createElement(AllProductsSelector, { routeProps: props.routeProps, checkEntitledProduct: isCaseCreate ? true : false, ref: productSelectorRef, isOnSummaryPage: true, isOnGetSupportPage: props === null || props === void 0 ? void 0 : props.isOnGetSupportPage, caseCreateExperience: props.caseCreateExperience })));
55
58
  return (React.createElement(React.Fragment, null,
59
+ isBTestvariation && allProducts.isFetching && React.createElement(ProductSelectorLoader, null),
56
60
  React.createElement(AlertMessage, { variant: AlertType.DANGER, className: "pf-v6-u-mt-lg", title: t('There was an error loading products.'), show: allProducts.isError }),
57
- rederProductSelect,
61
+ isBTestvariation
62
+ ? !allProducts.isFetching && !allProducts.isError && rederProductSelect
63
+ : isATestvariation && rederProductSelect,
58
64
  product === 'Subscription Watch' && (React.createElement(Alert, { isInline: true, variant: AlertVariant.warning, title: React.createElement(Trans, null,
59
65
  ' ',
60
66
  "If you're having a subscription issue that doesn't relate to",
@@ -65,7 +71,8 @@ export default function ProductSelector(props) {
65
71
  React.createElement("a", { href: "/support/contact", "data-tracking-id": "contact-customer-service" }, "customer service"),
66
72
  ' ',
67
73
  "for help.") })),
68
- !isVariationA && !(props === null || props === void 0 ? void 0 : props.isOnGetSupportPage) && (React.createElement("div", { className: "suggestions-result-section" },
74
+ isBTestvariation && React.createElement(EARuleWidget, null),
75
+ !(props === null || props === void 0 ? void 0 : props.isOnGetSupportPage) && (React.createElement("div", { className: "suggestions-result-section" },
69
76
  React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading recommendations') } }, !isEmpty(version) && (React.createElement("div", { className: "common-suggestions" },
70
77
  React.createElement(Recommendations, { routeProps: props.routeProps, userSeenRecommendations: props.userSeenRecommendations, userClickedNextonRecommendationsValue: props.userClickedNextonRecommendations, resultsRowRef: props.resultsRowRef }))))))));
71
78
  }
@@ -2,6 +2,8 @@ import { IClusterRecommendation } from '@cee-eng/hydrajs/@types/api/pcm/preCaseD
2
2
  import React from 'react';
3
3
  interface IProps {
4
4
  clusterRecommendations: IClusterRecommendation[];
5
+ onViewMoreRecommendation?: () => void;
6
+ displayVeiwMoreBtn?: boolean;
5
7
  }
6
8
  export declare function ClusterRecommendationItems(props: IProps): React.JSX.Element;
7
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterRecommendationItems.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/ClusterRecommendationItems.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAI5F,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,UAAU,MAAM;IACZ,sBAAsB,EAAE,sBAAsB,EAAE,CAAC;CACpD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBAkFvD"}
1
+ {"version":3,"file":"ClusterRecommendationItems.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/ClusterRecommendationItems.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAI5F,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,UAAU,MAAM;IACZ,sBAAsB,EAAE,sBAAsB,EAAE,CAAC;IACjD,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBA4FvD"}
@@ -1,5 +1,5 @@
1
1
  import { pcm } from '@cee-eng/hydrajs';
2
- import { Label } from '@patternfly/react-core';
2
+ import { Button, Label } from '@patternfly/react-core';
3
3
  import ArrowRightIcon from '@patternfly/react-icons/dist/js/icons/arrow-right-icon';
4
4
  import isEqual from 'lodash/isEqual';
5
5
  import React, { useContext, useEffect } from 'react';
@@ -29,16 +29,19 @@ export function ClusterRecommendationItems(props) {
29
29
  createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.CLUSTER_RECOMMENDATION, getRulesToSave('', '', recsWithUrl), JSON.stringify({ product, version, openshiftClusterID }));
30
30
  // eslint-disable-next-line react-hooks/exhaustive-deps
31
31
  }, [props.clusterRecommendations, activeSessionId]);
32
- return (React.createElement("pfe-accordion", null, props.clusterRecommendations.map((rule, i) => (React.createElement(React.Fragment, null,
33
- React.createElement("pfe-accordion-header", null,
34
- React.createElement("h3", null, rule.description)),
35
- React.createElement("pfe-accordion-panel", null,
36
- React.createElement("p", null,
37
- React.createElement(Label, { icon: riskLabels[rule.total_risk].icon, className: riskLabels[rule.total_risk].className },
38
- React.createElement(Trans, null, riskLabels[rule.total_risk].label))),
39
- React.createElement("p", null, rule.details || ''),
40
- React.createElement("a", { onClick: (e) => onResourceClick(e, rule, i), className: "pf-v6-u-font-weight-bold", "data-tracking-id": "cluster-recommendations", href: detailsUrl, target: "_blank", rel: "noopener noreferrer" },
41
- React.createElement(Trans, null,
42
- "View details and remediation steps ",
43
- React.createElement(ArrowRightIcon, { "aria-hidden": "true" })))))))));
32
+ return (React.createElement("pfe-accordion", null,
33
+ props.clusterRecommendations.map((rule, i) => (React.createElement(React.Fragment, null,
34
+ React.createElement("pfe-accordion-header", null,
35
+ React.createElement("p", null, rule.description)),
36
+ React.createElement("pfe-accordion-panel", null,
37
+ React.createElement("p", null,
38
+ React.createElement(Label, { icon: riskLabels[rule.total_risk].icon, className: riskLabels[rule.total_risk].className },
39
+ React.createElement(Trans, null, riskLabels[rule.total_risk].label))),
40
+ React.createElement("p", null, rule.details || ''),
41
+ React.createElement("a", { onClick: (e) => onResourceClick(e, rule, i), className: "pf-v6-u-font-weight-bold", "data-tracking-id": "cluster-recommendations", href: detailsUrl, target: "_blank", rel: "noopener noreferrer" },
42
+ React.createElement(Trans, null,
43
+ "View details and remediation steps ",
44
+ React.createElement(ArrowRightIcon, { "aria-hidden": "true" }))))))),
45
+ props.displayVeiwMoreBtn && (React.createElement(Button, { className: "pf-v6-u-p-md", variant: "link", onClick: props.onViewMoreRecommendation, "data-tracking-id": "cluster-recs-view-more" },
46
+ React.createElement(Trans, null, "View more recommendations")))));
44
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterRecommendations.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/ClusterRecommendations.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAa1C,UAAU,MAAM;IACZ,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBAgE3D"}
1
+ {"version":3,"file":"ClusterRecommendations.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/ClusterRecommendations.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAa1C,UAAU,MAAM;IACZ,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBAuD3D"}
@@ -1,4 +1,3 @@
1
- import { Button } from '@patternfly/react-core';
2
1
  import { GlobalMetadataStateContext } from '@rh-support/react-context';
3
2
  import isEqual from 'lodash/isEqual';
4
3
  import React, { useContext } from 'react';
@@ -35,8 +34,6 @@ export default function ClusterRecommendations(props) {
35
34
  React.createElement("h3", { className: "card-heading popular-solutions" },
36
35
  React.createElement(Trans, null, "Cluster recommendations")),
37
36
  React.createElement("div", null,
38
- React.createElement(ClusterRecommendationItems, { clusterRecommendations: clusterRecommendations.data.slice(0, NUMBER_OF_RULES_TO_DISPLAY) }),
39
- clusterRecommendations.data.length > NUMBER_OF_RULES_TO_DISPLAY && (React.createElement(Button, { className: "pf-v6-u-p-md", variant: "link", isBlock: true, onClick: onViewMoreRecommendation, "data-tracking-id": "cluster-recs-view-more" },
40
- React.createElement(Trans, null, "View more recommendations")))))),
37
+ React.createElement(ClusterRecommendationItems, { clusterRecommendations: clusterRecommendations.data.slice(0, NUMBER_OF_RULES_TO_DISPLAY), onViewMoreRecommendation: onViewMoreRecommendation, displayVeiwMoreBtn: clusterRecommendations.data.length > NUMBER_OF_RULES_TO_DISPLAY })))),
41
38
  showClusterRecommendationsModal && React.createElement(ClusterRecommendationsModal, null)));
42
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Recommendations.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/Recommendations.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgBvD,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAapF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD,aAAa,EAAE,GAAG,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBA0XpD"}
1
+ {"version":3,"file":"Recommendations.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/Recommendations.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAevD,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAapF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD,aAAa,EAAE,GAAG,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBA+YpD"}
@@ -2,7 +2,7 @@ import { pcm } from '@cee-eng/hydrajs';
2
2
  import { Label, Pagination, PaginationVariant, Popover, Spinner } from '@patternfly/react-core';
3
3
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
4
4
  import StarIcon from '@patternfly/react-icons/dist/js/icons/star-icon';
5
- import { useDebounce, usePrevious } from '@rh-support/components';
5
+ import { LoadingDots, useDebounce, usePrevious } from '@rh-support/components';
6
6
  import { computeRecommendationAbstract, computeRecommendationTitle, dtmTrackEventContentListingItemClicked, formatDate, getRecommendationTitle, } from '@rh-support/utils';
7
7
  import differenceBy from 'lodash/differenceBy';
8
8
  import find from 'lodash/find';
@@ -15,7 +15,6 @@ import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
15
15
  import { RecommendationDispatchContext, RecommendationStateContext } from '../../context/RecommendationContext';
16
16
  import { RouteContext } from '../../context/RouteContext';
17
17
  import { SessionRestoreDispatchContext, SessionRestoreStateContext } from '../../context/SessionRestoreContext';
18
- import { useAB } from '../../hooks/useAB';
19
18
  import { getRecommendationObject } from '../../reducers/CaseHelpers';
20
19
  import { setCaseRecommendations } from '../../reducers/CaseReducer';
21
20
  import { fetchWatsonXRecommendations, RecommendationsConstants, setCurrentPage, setVisibleDocs, } from '../../reducers/RecommendationsReducer';
@@ -28,14 +27,14 @@ import { WatsonxAiIcon } from './WatsonxAiIcon';
28
27
  const { SessionResourceSource, SessionResourceVisibility } = pcm.preCase.session;
29
28
  export default function Recommendations(props) {
30
29
  var _a, _b, _c;
31
- const { isVariationA } = useAB();
32
- const { product, version, environment, summary, caseResourceLinks, issue, cveWorkflowRecommendation } = useCaseSelector((state) => ({
30
+ const { product, version, environment, summary, caseResourceLinks, issue, ABTestVariation, cveWorkflowRecommendation, } = useCaseSelector((state) => ({
33
31
  product: state.caseDetails.product,
34
32
  version: state.caseDetails.version,
35
33
  environment: state.caseDetails.environment,
36
34
  summary: state.caseDetails.summary,
37
35
  issue: state.caseDetails.issue,
38
36
  caseResourceLinks: state.caseDetails.caseResourceLinks,
37
+ ABTestVariation: state.ABTestVariation,
39
38
  cveWorkflowRecommendation: state.cveWorkflowRecommendation,
40
39
  }), isEqual);
41
40
  const caseDispatch = useCaseDispatch();
@@ -47,7 +46,7 @@ export default function Recommendations(props) {
47
46
  const { recommendationState } = useContext(RecommendationStateContext);
48
47
  const prevMainRecommendations = usePrevious((_a = recommendationState === null || recommendationState === void 0 ? void 0 : recommendationState.visibleDocs) !== null && _a !== void 0 ? _a : []);
49
48
  const recommendationDispatch = useContext(RecommendationDispatchContext);
50
- const DEFAULTPAGESIZE = 10;
49
+ const DEFAULTPAGESIZE = 8;
51
50
  const MAXROW = 24;
52
51
  const recPageSize = pageSize !== null && pageSize !== void 0 ? pageSize : DEFAULTPAGESIZE;
53
52
  const abortControllerRef = useRef(undefined);
@@ -57,17 +56,16 @@ export default function Recommendations(props) {
57
56
  summary: summary,
58
57
  description: issue, // we don't need to truncate to 20k as Watsonx max recs is 4000 done for us already
59
58
  };
59
+ const isATestvariation = ABTestVariation === 'A';
60
+ const isBTestvariation = ABTestVariation === 'B' || isEmpty(ABTestVariation);
60
61
  const isRecSearchPayloadSame = isEqual(payload, recommendationState.prevRecommendationsBody);
61
62
  useEffect(() => {
62
63
  // currently due to the debounce we use after the page load leads to some delay in the disbaling of next button
63
64
  // since the state of the next button depends on the loading rec flag so we force the flag to be true every time the
64
65
  // rec section is rendered for the first time except the case when we won't make a new search since there was no change in the rec payload.
65
- const validSections = isVariationA
66
- ? [AppRouteSections.RESOURCES]
67
- : isCaseCreate
68
- ? [AppRouteSections.SUMMARIZE]
69
- : [AppRouteSections.TROUBLESHOOT];
70
- if (!validSections.includes(activeSection) || !summary || isRecSearchPayloadSame) {
66
+ if (activeSection !== (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) ||
67
+ !summary ||
68
+ isRecSearchPayloadSame) {
71
69
  return;
72
70
  }
73
71
  !isRecSearchPayloadSame &&
@@ -82,12 +80,8 @@ export default function Recommendations(props) {
82
80
  * Also, log the newly presented resources on the session
83
81
  */
84
82
  useDebounce(() => {
85
- const validSections = isVariationA
86
- ? [AppRouteSections.RESOURCES]
87
- : isCaseCreate
88
- ? [AppRouteSections.SUMMARIZE]
89
- : [AppRouteSections.TROUBLESHOOT];
90
- if (!validSections.includes(activeSection) || isRecSearchPayloadSame) {
83
+ if (activeSection !== (isCaseCreate ? AppRouteSections.SUMMARIZE : AppRouteSections.TROUBLESHOOT) ||
84
+ isRecSearchPayloadSame) {
91
85
  return;
92
86
  }
93
87
  setCurrentPage(recommendationDispatch, 1);
@@ -187,33 +181,39 @@ export default function Recommendations(props) {
187
181
  t('Match')))));
188
182
  };
189
183
  return (React.createElement(React.Fragment, null,
184
+ isBTestvariation && (React.createElement(LoadingDots, { className: "recommendation-loading-dots", show: recommendationState.isLoadingRecommendations && !isEmpty(summary) })),
190
185
  React.createElement("div", { className: "recommendation-list", ref: props.resultsRowRef },
191
- (recommendationState.visibleDocs.length !== 0 || recommendationState.isLoadingRecommendations) && (React.createElement("div", { className: `${recommendationState.isLoadingRecommendations ? 'gradient' : ''} label-container-icon` },
192
- React.createElement("div", { id: "DeepPurpleColorAILabel" },
193
- recommendationState.isLoadingRecommendations ? (React.createElement(React.Fragment, null,
194
- React.createElement("span", { className: "loading-text" },
195
- React.createElement(Spinner, { size: "sm", className: "pf-v6-u-mr-xs" }),
196
- ' ',
197
- React.createElement(Trans, null, recommendationState.visibleDocs.length
198
- ? 'Updating recommendations '
199
- : 'Recommending articles '),
200
- ' ',
201
- React.createElement(InfoCircleIcon, { color: "#5E40BE" })))) : (React.createElement(React.Fragment, null,
202
- React.createElement("span", { className: "ai-label-text" },
203
- React.createElement(WatsonxAiIcon, { fillColor: "#FFFFFF", className: "pf-v6-u-mr-xs" }),
204
- ' ',
205
- React.createElement("span", { className: "ai-label-text1" },
206
- React.createElement(Trans, null, "Recommended search results"),
207
- " ",
208
- infoPopover)))),
209
- ' '))),
210
- recommendationState.isLoadingRecommendations ? (React.createElement(RecommendationsLoader, null)) : (React.createElement("ul", { className: "list-flat" }, map(recommendationState.visibleDocs, (doc, i) => {
186
+ isATestvariation
187
+ ? (recommendationState.visibleDocs.length !== 0 ||
188
+ recommendationState.isLoadingRecommendations) && (React.createElement("div", { className: `${recommendationState.isLoadingRecommendations ? 'gradient' : ''} label-container-icon` },
189
+ React.createElement("div", { id: "DeepPurpleColorAILabel" },
190
+ recommendationState.isLoadingRecommendations ? (React.createElement(React.Fragment, null,
191
+ React.createElement("span", { className: "loading-text" },
192
+ React.createElement(Spinner, { size: "sm", className: "pf-v6-u-mr-xs" }),
193
+ ' ',
194
+ React.createElement(Trans, null, recommendationState.visibleDocs.length
195
+ ? 'Updating recommendations '
196
+ : 'Recommending articles '),
197
+ ' ',
198
+ React.createElement(InfoCircleIcon, { color: "#5E40BE" })))) : (React.createElement(React.Fragment, null,
199
+ React.createElement("span", { className: "ai-label-text" },
200
+ React.createElement(WatsonxAiIcon, { fillColor: "#FFFFFF", className: "pf-v6-u-mr-xs" }),
201
+ ' ',
202
+ React.createElement("span", { className: "ai-label-text1" },
203
+ React.createElement(Trans, null, "Recommended search results"),
204
+ " ",
205
+ infoPopover)))),
206
+ ' ')))
207
+ : recommendationState.visibleDocs.length !== 0 && (React.createElement(Label, { color: "purple", className: "pf-v6-u-mb-md" },
208
+ React.createElement(WatsonxAiIcon, { fillColor: "#6753ac", className: "pf-v6-u-mr-xs" }),
209
+ React.createElement(Trans, null, "Live search results powered by OpenShift AI"))),
210
+ isATestvariation && recommendationState.isLoadingRecommendations ? (React.createElement(RecommendationsLoader, null)) : (React.createElement("ul", { className: "list-flat" }, map(recommendationState.visibleDocs, (doc, i) => {
211
211
  var _a, _b;
212
212
  return (React.createElement("li", { className: "result", key: doc.id },
213
213
  React.createElement("header", { className: "result-header" },
214
214
  React.createElement("a", { href: `${doc.view_uri}?${RouteUtils.getSEResourceQueryParams(activeSessionId, (_b = (_a = sessionResourceTracking[SessionResourceSource.RECOMMENDATIONS]) === null || _a === void 0 ? void 0 : _a.resourceOriginId) !== null && _b !== void 0 ? _b : '', SessionResourceSource.RECOMMENDATIONS)}`, className: "se-recommended ts-result", "data-tracking-id": `se-recommended-main-recommendations-${i}`, rel: "noopener noreferrer", target: "_blank", onClick: onResourceClick(doc, i), dangerouslySetInnerHTML: computeRecommendationTitle(doc) }),
215
215
  React.createElement("div", { className: "header-meta pf-v6-u-mt-xs" },
216
- doc.rerank_score && computeLabel(doc),
216
+ isATestvariation && doc.rerank_score && computeLabel(doc),
217
217
  doc.kcsState === 'verified' && (React.createElement(React.Fragment, null,
218
218
  React.createElement("span", { className: "status-verified pf-v6-u-font-weight-bold pf-v6-u-success-color-100" }, "verified"),
219
219
  React.createElement("span", { className: "list-separator" }, "\u2013"))),
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteRiderAcceptanceModal.d.ts","sourceRoot":"","sources":["../../../../src/components/RemoteRider/RemoteRiderAcceptanceModal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,KAAqB,MAAM,OAAO,CAAC;AAG1C,UAAU,MAAM;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACrD;AAED,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBAuD/D"}
1
+ {"version":3,"file":"RemoteRiderAcceptanceModal.d.ts","sourceRoot":"","sources":["../../../../src/components/RemoteRider/RemoteRiderAcceptanceModal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,KAAqB,MAAM,OAAO,CAAC;AAG1C,UAAU,MAAM;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACrD;AAED,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAC,KAAK,EAAE,MAAM,qBAwD/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAoBlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AACD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,MAAM,qBAuE3C"}
1
+ {"version":3,"file":"Review.d.ts","sourceRoot":"","sources":["../../../../src/components/Review/Review.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAqBlE,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AACD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,MAAM,qBA2E3C"}
@@ -24,10 +24,12 @@ import CaseContactSelector from '../CaseManagement/SendNotifications/CaseContact
24
24
  import { Hostname } from '../ImproveCase/Hostname';
25
25
  import KtQuestions from '../ImproveCase/KtQuestions';
26
26
  import { AllProductsSelector } from '../ProductSelector/AllProductsSelector';
27
+ import { EARuleWidget } from '../Recommendations/EARules/EARuleWidget';
27
28
  export default function Review(props) {
28
29
  const caseDispatch = useCaseDispatch();
29
- const { contactInfo24x7, caseType } = useCaseSelector((state) => ({
30
+ const { contactInfo24x7, ABTestVariation, caseType } = useCaseSelector((state) => ({
30
31
  contactInfo24x7: state.caseDetails.contactInfo24x7,
32
+ ABTestVariation: state.ABTestVariation,
31
33
  caseType: state.caseDetails.caseType,
32
34
  }), isEqual);
33
35
  const ability = useContext(AbilityContext);
@@ -35,7 +37,9 @@ export default function Review(props) {
35
37
  const onSeverityChange = (payload) => {
36
38
  setCaseDetails(caseDispatch, payload);
37
39
  };
40
+ const isBTestvariation = ABTestVariation === 'B' || isEmpty(ABTestVariation);
38
41
  return (React.createElement(React.Fragment, null,
42
+ isBTestvariation && React.createElement(EARuleWidget, null),
39
43
  React.createElement("form", { className: "review-form card card-light push-bottom" },
40
44
  React.createElement(AccountSelector, null),
41
45
  React.createElement(OwnerSelector, null),
@@ -140,7 +140,7 @@ export const AskRedHat = ({ onChatWithAIClick }) => {
140
140
  // Use accumulated response if streaming, otherwise use the final response
141
141
  const answer = aiResponseState.isStreaming && aiResponseState.accumulatedResponse
142
142
  ? aiResponseState.accumulatedResponse
143
- : (aiResponse === null || aiResponse === void 0 ? void 0 : aiResponse.answer) || (aiResponse === null || aiResponse === void 0 ? void 0 : aiResponse.content);
143
+ : (aiResponse === null || aiResponse === void 0 ? void 0 : aiResponse.answer) || (aiResponse === null || aiResponse === void 0 ? void 0 : aiResponse.content) || t('No AI response available yet.');
144
144
  const sources = React.useMemo(() => (aiResponse === null || aiResponse === void 0 ? void 0 : aiResponse.sources) || (aiResponse === null || aiResponse === void 0 ? void 0 : aiResponse.references) || [], [aiResponse]);
145
145
  const sourcesCount = sources.length || 0;
146
146
  // Show loading only when streaming has started but no content received yet
@@ -1,12 +1,6 @@
1
1
  import '@ifd-ui/ask-redhat-core/ask-redhat-core.css';
2
2
  import React from 'react';
3
- import { RouteComponentProps } from 'react-router-dom';
4
- import { IRouteUrlParams } from '../../reducers/RouteConstNTypes';
5
3
  interface IProps {
6
- routeProps: RouteComponentProps<IRouteUrlParams>;
7
- userSeenRecommendations?: (value: React.SetStateAction<boolean>) => void;
8
- userClickedNextonRecommendations?: boolean;
9
- resultsRowRef: React.MutableRefObject<HTMLDivElement | null>;
10
4
  inlineEditable: boolean;
11
5
  initialIsEditing?: boolean;
12
6
  required?: boolean;
@@ -19,9 +13,6 @@ interface IProps {
19
13
  aiServicesAvailable: boolean;
20
14
  isSecureSupport?: boolean;
21
15
  hasConfirmedStatesideSupport?: boolean;
22
- onBack?: (e: React.MouseEvent<HTMLButtonElement>) => void;
23
- haveARHFieldsChanged?: boolean;
24
- resetARHFieldsChanged?: () => void;
25
16
  }
26
17
  declare function TroubleshootSection(props: IProps): React.JSX.Element;
27
18
  declare namespace TroubleshootSection {
@@ -1 +1 @@
1
- {"version":3,"file":"TroubleshootSection.d.ts","sourceRoot":"","sources":["../../../../src/components/TroubleshootSection/TroubleshootSection.tsx"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC;AAkBrD,OAAO,KAAqD,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAUvD,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAyBpF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7D,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACtC;AAWD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAmZzC;kBAnZQ,mBAAmB;;;AAsZ5B,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"TroubleshootSection.d.ts","sourceRoot":"","sources":["../../../../src/components/TroubleshootSection/TroubleshootSection.tsx"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC;AAUrD,OAAO,KAA6B,MAAM,OAAO,CAAC;AAclD,UAAU,MAAM;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4BAA4B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAUD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAgOzC;kBAhOQ,mBAAmB;;;AAmO5B,eAAe,mBAAmB,CAAC"}