@openchoreo/backstage-plugin-openchoreo-observability 1.1.0

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 (196) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +22 -0
  3. package/dist/api/FinOpsAgentApi.esm.js +43 -0
  4. package/dist/api/FinOpsAgentApi.esm.js.map +1 -0
  5. package/dist/api/ObservabilityApi.esm.js +568 -0
  6. package/dist/api/ObservabilityApi.esm.js.map +1 -0
  7. package/dist/api/ObserverUrlCache.esm.js +59 -0
  8. package/dist/api/ObserverUrlCache.esm.js.map +1 -0
  9. package/dist/api/RCAAgentApi.esm.js +104 -0
  10. package/dist/api/RCAAgentApi.esm.js.map +1 -0
  11. package/dist/components/Alerts/AlertRow.esm.js +203 -0
  12. package/dist/components/Alerts/AlertRow.esm.js.map +1 -0
  13. package/dist/components/Alerts/AlertsActions.esm.js +77 -0
  14. package/dist/components/Alerts/AlertsActions.esm.js.map +1 -0
  15. package/dist/components/Alerts/AlertsFilter.esm.js +95 -0
  16. package/dist/components/Alerts/AlertsFilter.esm.js.map +1 -0
  17. package/dist/components/Alerts/AlertsTable.esm.js +63 -0
  18. package/dist/components/Alerts/AlertsTable.esm.js.map +1 -0
  19. package/dist/components/Alerts/ObservabilityAlertsPage.esm.js +251 -0
  20. package/dist/components/Alerts/ObservabilityAlertsPage.esm.js.map +1 -0
  21. package/dist/components/Alerts/types.esm.js +4 -0
  22. package/dist/components/Alerts/types.esm.js.map +1 -0
  23. package/dist/components/CostAnalysis/CostAnalysisPage.esm.js +141 -0
  24. package/dist/components/CostAnalysis/CostAnalysisPage.esm.js.map +1 -0
  25. package/dist/components/CostAnalysis/CostAnalysisReport.esm.js +128 -0
  26. package/dist/components/CostAnalysis/CostAnalysisReport.esm.js.map +1 -0
  27. package/dist/components/CostAnalysis/CostAnalysisReportView.esm.js +517 -0
  28. package/dist/components/CostAnalysis/CostAnalysisReportView.esm.js.map +1 -0
  29. package/dist/components/CostAnalysis/CostAnalysisTable.esm.js +149 -0
  30. package/dist/components/CostAnalysis/CostAnalysisTable.esm.js.map +1 -0
  31. package/dist/components/CostAnalysis/FinOpsApplyButton.esm.js +112 -0
  32. package/dist/components/CostAnalysis/FinOpsApplyButton.esm.js.map +1 -0
  33. package/dist/components/CostAnalysis/index.esm.js +2 -0
  34. package/dist/components/CostAnalysis/index.esm.js.map +1 -0
  35. package/dist/components/Incidents/IncidentRow.esm.js +258 -0
  36. package/dist/components/Incidents/IncidentRow.esm.js.map +1 -0
  37. package/dist/components/Incidents/IncidentsActions.esm.js +77 -0
  38. package/dist/components/Incidents/IncidentsActions.esm.js.map +1 -0
  39. package/dist/components/Incidents/IncidentsFilter.esm.js +144 -0
  40. package/dist/components/Incidents/IncidentsFilter.esm.js.map +1 -0
  41. package/dist/components/Incidents/IncidentsTable.esm.js +68 -0
  42. package/dist/components/Incidents/IncidentsTable.esm.js.map +1 -0
  43. package/dist/components/Incidents/ObservabilityProjectIncidentsPage.esm.js +283 -0
  44. package/dist/components/Incidents/ObservabilityProjectIncidentsPage.esm.js.map +1 -0
  45. package/dist/components/Incidents/types.esm.js +8 -0
  46. package/dist/components/Incidents/types.esm.js.map +1 -0
  47. package/dist/components/Metrics/ChartTooltip.esm.js +53 -0
  48. package/dist/components/Metrics/ChartTooltip.esm.js.map +1 -0
  49. package/dist/components/Metrics/HTTPMetricsSection.esm.js +109 -0
  50. package/dist/components/Metrics/HTTPMetricsSection.esm.js.map +1 -0
  51. package/dist/components/Metrics/MetricGraphByComponent.esm.js +99 -0
  52. package/dist/components/Metrics/MetricGraphByComponent.esm.js.map +1 -0
  53. package/dist/components/Metrics/MetricsActions.esm.js +30 -0
  54. package/dist/components/Metrics/MetricsActions.esm.js.map +1 -0
  55. package/dist/components/Metrics/MetricsFilters.esm.js +49 -0
  56. package/dist/components/Metrics/MetricsFilters.esm.js.map +1 -0
  57. package/dist/components/Metrics/ObservabilityMetricsPage.esm.js +196 -0
  58. package/dist/components/Metrics/ObservabilityMetricsPage.esm.js.map +1 -0
  59. package/dist/components/Metrics/styles.esm.js +55 -0
  60. package/dist/components/Metrics/styles.esm.js.map +1 -0
  61. package/dist/components/Metrics/utils.esm.js +221 -0
  62. package/dist/components/Metrics/utils.esm.js.map +1 -0
  63. package/dist/components/RCA/RCAActions.esm.js +42 -0
  64. package/dist/components/RCA/RCAActions.esm.js.map +1 -0
  65. package/dist/components/RCA/RCAFilters.esm.js +100 -0
  66. package/dist/components/RCA/RCAFilters.esm.js.map +1 -0
  67. package/dist/components/RCA/RCAPage.esm.js +137 -0
  68. package/dist/components/RCA/RCAPage.esm.js.map +1 -0
  69. package/dist/components/RCA/RCAReport/EntityLinkContext.esm.js +9 -0
  70. package/dist/components/RCA/RCAReport/EntityLinkContext.esm.js.map +1 -0
  71. package/dist/components/RCA/RCAReport/FormattedText.esm.js +94 -0
  72. package/dist/components/RCA/RCAReport/FormattedText.esm.js.map +1 -0
  73. package/dist/components/RCA/RCAReport/RCAReportView.esm.js +308 -0
  74. package/dist/components/RCA/RCAReport/RCAReportView.esm.js.map +1 -0
  75. package/dist/components/RCA/RCAReport/sections/AssessmentSection.esm.js +113 -0
  76. package/dist/components/RCA/RCAReport/sections/AssessmentSection.esm.js.map +1 -0
  77. package/dist/components/RCA/RCAReport/sections/ChatPanelSection.esm.js +272 -0
  78. package/dist/components/RCA/RCAReport/sections/ChatPanelSection.esm.js.map +1 -0
  79. package/dist/components/RCA/RCAReport/sections/ExcludedCausesSection.esm.js +48 -0
  80. package/dist/components/RCA/RCAReport/sections/ExcludedCausesSection.esm.js.map +1 -0
  81. package/dist/components/RCA/RCAReport/sections/IncidentOverviewSection.esm.js +205 -0
  82. package/dist/components/RCA/RCAReport/sections/IncidentOverviewSection.esm.js.map +1 -0
  83. package/dist/components/RCA/RCAReport/sections/InvestigationPathSection.esm.js +121 -0
  84. package/dist/components/RCA/RCAReport/sections/InvestigationPathSection.esm.js.map +1 -0
  85. package/dist/components/RCA/RCAReport/sections/PatchTabContent.esm.js +593 -0
  86. package/dist/components/RCA/RCAReport/sections/PatchTabContent.esm.js.map +1 -0
  87. package/dist/components/RCA/RCAReport/sections/QuickFixesPanelSection.esm.js +35 -0
  88. package/dist/components/RCA/RCAReport/sections/QuickFixesPanelSection.esm.js.map +1 -0
  89. package/dist/components/RCA/RCAReport/sections/RecommendationsSection.esm.js +54 -0
  90. package/dist/components/RCA/RCAReport/sections/RecommendationsSection.esm.js.map +1 -0
  91. package/dist/components/RCA/RCAReport/sections/RootCausesSection.esm.js +526 -0
  92. package/dist/components/RCA/RCAReport/sections/RootCausesSection.esm.js.map +1 -0
  93. package/dist/components/RCA/RCAReport/sections/SystemTimelineSection.esm.js +70 -0
  94. package/dist/components/RCA/RCAReport/sections/SystemTimelineSection.esm.js.map +1 -0
  95. package/dist/components/RCA/RCAReport/sections/VisibilityImprovementsSection.esm.js +54 -0
  96. package/dist/components/RCA/RCAReport/sections/VisibilityImprovementsSection.esm.js.map +1 -0
  97. package/dist/components/RCA/RCAReport/styles.esm.js +467 -0
  98. package/dist/components/RCA/RCAReport/styles.esm.js.map +1 -0
  99. package/dist/components/RCA/RCAReport.esm.js +109 -0
  100. package/dist/components/RCA/RCAReport.esm.js.map +1 -0
  101. package/dist/components/RCA/RCATable.esm.js +140 -0
  102. package/dist/components/RCA/RCATable.esm.js.map +1 -0
  103. package/dist/components/RuntimeLogs/LogEntry.esm.js +182 -0
  104. package/dist/components/RuntimeLogs/LogEntry.esm.js.map +1 -0
  105. package/dist/components/RuntimeLogs/LogsActions.esm.js +106 -0
  106. package/dist/components/RuntimeLogs/LogsActions.esm.js.map +1 -0
  107. package/dist/components/RuntimeLogs/LogsFilter.esm.js +200 -0
  108. package/dist/components/RuntimeLogs/LogsFilter.esm.js.map +1 -0
  109. package/dist/components/RuntimeLogs/LogsTable.esm.js +91 -0
  110. package/dist/components/RuntimeLogs/LogsTable.esm.js.map +1 -0
  111. package/dist/components/RuntimeLogs/ObservabilityProjectRuntimeLogsPage.esm.js +220 -0
  112. package/dist/components/RuntimeLogs/ObservabilityProjectRuntimeLogsPage.esm.js.map +1 -0
  113. package/dist/components/RuntimeLogs/ObservabilityRuntimeLogsPage.esm.js +222 -0
  114. package/dist/components/RuntimeLogs/ObservabilityRuntimeLogsPage.esm.js.map +1 -0
  115. package/dist/components/RuntimeLogs/styles.esm.js +256 -0
  116. package/dist/components/RuntimeLogs/styles.esm.js.map +1 -0
  117. package/dist/components/RuntimeLogs/types.esm.js +16 -0
  118. package/dist/components/RuntimeLogs/types.esm.js.map +1 -0
  119. package/dist/components/TimeRangeFilter/TimeRangeFilter.esm.js +280 -0
  120. package/dist/components/TimeRangeFilter/TimeRangeFilter.esm.js.map +1 -0
  121. package/dist/components/Traces/ObservabilityTracesPage.esm.js +165 -0
  122. package/dist/components/Traces/ObservabilityTracesPage.esm.js.map +1 -0
  123. package/dist/components/Traces/TracesActions.esm.js +37 -0
  124. package/dist/components/Traces/TracesActions.esm.js.map +1 -0
  125. package/dist/components/Traces/TracesFilters.esm.js +121 -0
  126. package/dist/components/Traces/TracesFilters.esm.js.map +1 -0
  127. package/dist/components/Traces/TracesTable.esm.js +137 -0
  128. package/dist/components/Traces/TracesTable.esm.js.map +1 -0
  129. package/dist/components/Traces/WaterfallView.esm.js +567 -0
  130. package/dist/components/Traces/WaterfallView.esm.js.map +1 -0
  131. package/dist/components/Traces/styles.esm.js +198 -0
  132. package/dist/components/Traces/styles.esm.js.map +1 -0
  133. package/dist/components/Traces/utils.esm.js +19 -0
  134. package/dist/components/Traces/utils.esm.js.map +1 -0
  135. package/dist/hooks/useAutoSelectFirstEnvironment.esm.js +25 -0
  136. package/dist/hooks/useAutoSelectFirstEnvironment.esm.js.map +1 -0
  137. package/dist/hooks/useComponentAlerts.esm.js +80 -0
  138. package/dist/hooks/useComponentAlerts.esm.js.map +1 -0
  139. package/dist/hooks/useDataPlaneNetPolProvider.esm.js +55 -0
  140. package/dist/hooks/useDataPlaneNetPolProvider.esm.js.map +1 -0
  141. package/dist/hooks/useDebouncedSearch.esm.js +24 -0
  142. package/dist/hooks/useDebouncedSearch.esm.js.map +1 -0
  143. package/dist/hooks/useFilters.esm.js +29 -0
  144. package/dist/hooks/useFilters.esm.js.map +1 -0
  145. package/dist/hooks/useFinOpsReport.esm.js +66 -0
  146. package/dist/hooks/useFinOpsReport.esm.js.map +1 -0
  147. package/dist/hooks/useFinOpsReports.esm.js +70 -0
  148. package/dist/hooks/useFinOpsReports.esm.js.map +1 -0
  149. package/dist/hooks/useGetComponentsByProject.esm.js +57 -0
  150. package/dist/hooks/useGetComponentsByProject.esm.js.map +1 -0
  151. package/dist/hooks/useGetEnvironmentsByNamespace.esm.js +53 -0
  152. package/dist/hooks/useGetEnvironmentsByNamespace.esm.js.map +1 -0
  153. package/dist/hooks/useGetNamespaceAndProjectByEntity.esm.js +40 -0
  154. package/dist/hooks/useGetNamespaceAndProjectByEntity.esm.js.map +1 -0
  155. package/dist/hooks/useMetrics.esm.js +107 -0
  156. package/dist/hooks/useMetrics.esm.js.map +1 -0
  157. package/dist/hooks/useProjectIncidents.esm.js +111 -0
  158. package/dist/hooks/useProjectIncidents.esm.js.map +1 -0
  159. package/dist/hooks/useProjectRuntimeLogs.esm.js +185 -0
  160. package/dist/hooks/useProjectRuntimeLogs.esm.js.map +1 -0
  161. package/dist/hooks/useRCAReportByAlert.esm.js +54 -0
  162. package/dist/hooks/useRCAReportByAlert.esm.js.map +1 -0
  163. package/dist/hooks/useRCAReports.esm.js +75 -0
  164. package/dist/hooks/useRCAReports.esm.js.map +1 -0
  165. package/dist/hooks/useRuntimeLogs.esm.js +147 -0
  166. package/dist/hooks/useRuntimeLogs.esm.js.map +1 -0
  167. package/dist/hooks/useSpanDetails.esm.js +71 -0
  168. package/dist/hooks/useSpanDetails.esm.js.map +1 -0
  169. package/dist/hooks/useTraceSpans.esm.js +80 -0
  170. package/dist/hooks/useTraceSpans.esm.js.map +1 -0
  171. package/dist/hooks/useTraces.esm.js +112 -0
  172. package/dist/hooks/useTraces.esm.js.map +1 -0
  173. package/dist/hooks/useUpdateIncident.esm.js +50 -0
  174. package/dist/hooks/useUpdateIncident.esm.js.map +1 -0
  175. package/dist/hooks/useUrlFilters.esm.js +63 -0
  176. package/dist/hooks/useUrlFilters.esm.js.map +1 -0
  177. package/dist/hooks/useUrlFiltersForAlerts.esm.js +80 -0
  178. package/dist/hooks/useUrlFiltersForAlerts.esm.js.map +1 -0
  179. package/dist/hooks/useUrlFiltersForIncidents.esm.js +87 -0
  180. package/dist/hooks/useUrlFiltersForIncidents.esm.js.map +1 -0
  181. package/dist/hooks/useUrlFiltersForRuntimeLogs.esm.js +135 -0
  182. package/dist/hooks/useUrlFiltersForRuntimeLogs.esm.js.map +1 -0
  183. package/dist/index.d.ts +41 -0
  184. package/dist/index.esm.js +2 -0
  185. package/dist/index.esm.js.map +1 -0
  186. package/dist/plugin.esm.js +107 -0
  187. package/dist/plugin.esm.js.map +1 -0
  188. package/dist/routes.esm.js +8 -0
  189. package/dist/routes.esm.js.map +1 -0
  190. package/dist/types.esm.js +18 -0
  191. package/dist/types.esm.js.map +1 -0
  192. package/dist/utils/applyResourceChange.esm.js +79 -0
  193. package/dist/utils/applyResourceChange.esm.js.map +1 -0
  194. package/dist/utils/urlTimeRange.esm.js +52 -0
  195. package/dist/utils/urlTimeRange.esm.js.map +1 -0
  196. package/package.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SystemTimelineSection.esm.js","sources":["../../../../../src/components/RCA/RCAReport/sections/SystemTimelineSection.tsx"],"sourcesContent":["import { Box, Typography } from '@material-ui/core';\nimport {\n Timeline,\n TimelineItem,\n TimelineSeparator,\n TimelineDot,\n TimelineConnector,\n TimelineContent,\n TimelineOppositeContent,\n} from '@material-ui/lab';\nimport { useRCAReportStyles } from '../styles';\nimport { FormattedText } from '../FormattedText';\nimport type { AIRCAAgentComponents } from '@openchoreo/backstage-plugin-common';\n\ntype TimelineEvent = AIRCAAgentComponents['schemas']['TimelineEvent'];\n\ninterface SystemTimelineSectionProps {\n timeline?: TimelineEvent[];\n}\n\nconst formatTimelineTimestamp = (timestamp?: string): string => {\n if (!timestamp) return 'N/A';\n try {\n const date = new Date(timestamp);\n return date.toLocaleString('en-US', {\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n });\n } catch {\n return timestamp;\n }\n};\n\nexport const SystemTimelineSection = ({\n timeline,\n}: SystemTimelineSectionProps) => {\n const classes = useRCAReportStyles();\n\n if (!timeline || timeline.length === 0) {\n return null;\n }\n\n return (\n <Box className={classes.timelineContainer}>\n <Timeline style={{ padding: '4px 0', margin: 0 }}>\n {timeline.map((event, idx) => (\n <TimelineItem key={idx} style={{ minHeight: 'auto' }}>\n <TimelineOppositeContent\n style={{\n maxWidth: 0,\n padding: 0,\n flex: 0,\n }}\n />\n <TimelineSeparator>\n <TimelineDot color=\"primary\" />\n {idx < timeline.length - 1 && <TimelineConnector />}\n </TimelineSeparator>\n <TimelineContent style={{ paddingRight: 0 }}>\n <Box className={classes.timelineHeaderRow}>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {formatTimelineTimestamp(event.timestamp)}\n </Typography>\n {event.component && (\n <Typography\n variant=\"caption\"\n color=\"textSecondary\"\n style={{ marginLeft: 8 }}\n >\n <FormattedText text={event.component} />\n </Typography>\n )}\n </Box>\n <Typography\n component=\"div\"\n variant=\"body2\"\n className={classes.timelineEventText}\n >\n <FormattedText text={event.event || ''} />\n </Typography>\n </TimelineContent>\n </TimelineItem>\n ))}\n </Timeline>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;AAoBA,MAAM,uBAAA,GAA0B,CAAC,SAAA,KAA+B;AAC9D,EAAA,IAAI,CAAC,WAAW,OAAO,KAAA;AACvB,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,SAAS,CAAA;AAC/B,IAAA,OAAO,IAAA,CAAK,eAAe,OAAA,EAAS;AAAA,MAClC,KAAA,EAAO,OAAA;AAAA,MACP,GAAA,EAAK,SAAA;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,SAAA;AAAA,EACT;AACF,CAAA;AAEO,MAAM,wBAAwB,CAAC;AAAA,EACpC;AACF,CAAA,KAAkC;AAChC,EAAA,MAAM,UAAU,kBAAA,EAAmB;AAEnC,EAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG;AACtC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,iBAAA,EACtB,8BAAC,QAAA,EAAA,EAAS,KAAA,EAAO,EAAE,OAAA,EAAS,OAAA,EAAS,MAAA,EAAQ,GAAE,EAC5C,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,EAAO,GAAA,qBACpB,IAAA,CAAC,YAAA,EAAA,EAAuB,KAAA,EAAO,EAAE,SAAA,EAAW,MAAA,EAAO,EACjD,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,CAAA;AAAA,UACT,IAAA,EAAM;AAAA;AACR;AAAA,KACF;AAAA,yBACC,iBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,OAAM,SAAA,EAAU,CAAA;AAAA,MAC5B,GAAA,GAAM,QAAA,CAAS,MAAA,GAAS,CAAA,wBAAM,iBAAA,EAAA,EAAkB;AAAA,KAAA,EACnD,CAAA;AAAA,yBACC,eAAA,EAAA,EAAgB,KAAA,EAAO,EAAE,YAAA,EAAc,GAAE,EACxC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,iBAAA,EACtB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAQ,SAAA,EAAU,KAAA,EAAM,iBACjC,QAAA,EAAA,uBAAA,CAAwB,KAAA,CAAM,SAAS,CAAA,EAC1C,CAAA;AAAA,QACC,MAAM,SAAA,oBACL,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,KAAA,EAAM,eAAA;AAAA,YACN,KAAA,EAAO,EAAE,UAAA,EAAY,CAAA,EAAE;AAAA,YAEvB,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAM,KAAA,CAAM,SAAA,EAAW;AAAA;AAAA;AACxC,OAAA,EAEJ,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,KAAA;AAAA,UACV,OAAA,EAAQ,OAAA;AAAA,UACR,WAAW,OAAA,CAAQ,iBAAA;AAAA,UAEnB,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAM,KAAA,CAAM,SAAS,EAAA,EAAI;AAAA;AAAA;AAC1C,KAAA,EACF;AAAA,GAAA,EAAA,EAlCiB,GAmCnB,CACD,CAAA,EACH,CAAA,EACF,CAAA;AAEJ;;;;"}
@@ -0,0 +1,54 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Fragment } from 'react';
3
+ import { List, ListItem, ListItemText, Divider } from '@material-ui/core';
4
+ import { makeStyles } from '@material-ui/core/styles';
5
+ import { FormattedText } from '../FormattedText.esm.js';
6
+
7
+ const useStyles = makeStyles((theme) => ({
8
+ list: {
9
+ padding: 0,
10
+ margin: 0
11
+ },
12
+ listItem: {
13
+ padding: theme.spacing(1, 0)
14
+ },
15
+ primary: {
16
+ fontWeight: 500,
17
+ fontSize: theme.typography.body1.fontSize,
18
+ color: theme.palette.text.primary
19
+ },
20
+ secondary: {
21
+ fontSize: theme.typography.caption.fontSize
22
+ }
23
+ }));
24
+ const VisibilityImprovementsSection = ({
25
+ recommendations
26
+ }) => {
27
+ const classes = useStyles();
28
+ if (!recommendations || recommendations.length === 0) {
29
+ return null;
30
+ }
31
+ return /* @__PURE__ */ jsx(List, { className: classes.list, disablePadding: true, children: recommendations.map((recommendation, idx) => /* @__PURE__ */ jsxs(Fragment, { children: [
32
+ /* @__PURE__ */ jsx(ListItem, { className: classes.listItem, disableGutters: true, children: /* @__PURE__ */ jsx(
33
+ ListItemText,
34
+ {
35
+ primary: /* @__PURE__ */ jsx(
36
+ FormattedText,
37
+ {
38
+ text: recommendation.description || "",
39
+ disableMarkdown: true
40
+ }
41
+ ),
42
+ secondary: recommendation.rationale ? /* @__PURE__ */ jsx(FormattedText, { text: recommendation.rationale }) : void 0,
43
+ classes: {
44
+ primary: classes.primary,
45
+ secondary: classes.secondary
46
+ }
47
+ }
48
+ ) }),
49
+ idx < recommendations.length - 1 && /* @__PURE__ */ jsx(Divider, { component: "li" })
50
+ ] }, idx)) });
51
+ };
52
+
53
+ export { VisibilityImprovementsSection };
54
+ //# sourceMappingURL=VisibilityImprovementsSection.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisibilityImprovementsSection.esm.js","sources":["../../../../../src/components/RCA/RCAReport/sections/VisibilityImprovementsSection.tsx"],"sourcesContent":["import { Fragment } from 'react';\nimport { List, ListItem, ListItemText, Divider } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { FormattedText } from '../FormattedText';\nimport type { AIRCAAgentComponents } from '@openchoreo/backstage-plugin-common';\n\ntype Action = AIRCAAgentComponents['schemas']['Action'];\n\ninterface VisibilityImprovementsSectionProps {\n recommendations?: Action[];\n}\n\nconst useStyles = makeStyles(theme => ({\n list: {\n padding: 0,\n margin: 0,\n },\n listItem: {\n padding: theme.spacing(1, 0),\n },\n primary: {\n fontWeight: 500,\n fontSize: theme.typography.body1.fontSize,\n color: theme.palette.text.primary,\n },\n secondary: {\n fontSize: theme.typography.caption.fontSize,\n },\n}));\n\nexport const VisibilityImprovementsSection = ({\n recommendations,\n}: VisibilityImprovementsSectionProps) => {\n const classes = useStyles();\n\n if (!recommendations || recommendations.length === 0) {\n return null;\n }\n\n return (\n <List className={classes.list} disablePadding>\n {recommendations.map((recommendation, idx) => (\n <Fragment key={idx}>\n <ListItem className={classes.listItem} disableGutters>\n <ListItemText\n primary={\n <FormattedText\n text={recommendation.description || ''}\n disableMarkdown\n />\n }\n secondary={\n recommendation.rationale ? (\n <FormattedText text={recommendation.rationale} />\n ) : undefined\n }\n classes={{\n primary: classes.primary,\n secondary: classes.secondary,\n }}\n />\n </ListItem>\n {idx < recommendations.length - 1 && <Divider component=\"li\" />}\n </Fragment>\n ))}\n </List>\n );\n};\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,CAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,CAAC;AAAA,GAC7B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,QAAA;AAAA,IACjC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK;AAAA,GAC5B;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ;AAAA;AAEvC,CAAA,CAAE,CAAA;AAEK,MAAM,gCAAgC,CAAC;AAAA,EAC5C;AACF,CAAA,KAA0C;AACxC,EAAA,MAAM,UAAU,SAAA,EAAU;AAE1B,EAAA,IAAI,CAAC,eAAA,IAAmB,eAAA,CAAgB,MAAA,KAAW,CAAA,EAAG;AACpD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,OAAA,CAAQ,IAAA,EAAM,cAAA,EAAc,IAAA,EAC1C,QAAA,EAAA,eAAA,CAAgB,GAAA,CAAI,CAAC,cAAA,EAAgB,GAAA,0BACnC,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,OAAA,CAAQ,QAAA,EAAU,gBAAc,IAAA,EACnD,QAAA,kBAAA,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,OAAA,kBACE,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,eAAe,WAAA,IAAe,EAAA;AAAA,YACpC,eAAA,EAAe;AAAA;AAAA,SACjB;AAAA,QAEF,SAAA,EACE,eAAe,SAAA,mBACb,GAAA,CAAC,iBAAc,IAAA,EAAM,cAAA,CAAe,WAAW,CAAA,GAC7C,MAAA;AAAA,QAEN,OAAA,EAAS;AAAA,UACP,SAAS,OAAA,CAAQ,OAAA;AAAA,UACjB,WAAW,OAAA,CAAQ;AAAA;AACrB;AAAA,KACF,EACF,CAAA;AAAA,IACC,MAAM,eAAA,CAAgB,MAAA,GAAS,qBAAK,GAAA,CAAC,OAAA,EAAA,EAAQ,WAAU,IAAA,EAAK;AAAA,GAAA,EAAA,EApBhD,GAqBf,CACD,CAAA,EACH,CAAA;AAEJ;;;;"}
@@ -0,0 +1,467 @@
1
+ import { makeStyles } from '@material-ui/core/styles';
2
+
3
+ const useRCAReportStyles = makeStyles((theme) => ({
4
+ header: {
5
+ backgroundColor: theme.palette.background.paper,
6
+ display: "flex",
7
+ alignItems: "center",
8
+ justifyContent: "space-between",
9
+ padding: theme.spacing(1, 2),
10
+ borderBottom: `1px solid ${theme.palette.divider}`
11
+ },
12
+ headerLeft: {
13
+ display: "flex",
14
+ alignItems: "center",
15
+ gap: theme.spacing(1)
16
+ },
17
+ backButton: {
18
+ marginRight: theme.spacing(1)
19
+ },
20
+ titleContainer: {
21
+ display: "flex",
22
+ flexDirection: "column"
23
+ },
24
+ title: {
25
+ fontWeight: 500
26
+ },
27
+ subtitle: {
28
+ color: theme.palette.text.secondary,
29
+ display: "flex",
30
+ alignItems: "center",
31
+ gap: theme.spacing(1)
32
+ },
33
+ content: {
34
+ paddingTop: theme.spacing(1)
35
+ },
36
+ cardTitle: {
37
+ display: "flex",
38
+ alignItems: "center",
39
+ gap: theme.spacing(1)
40
+ },
41
+ cardTitleIcon: {
42
+ color: theme.palette.primary.main,
43
+ fontSize: theme.typography.h3.fontSize
44
+ },
45
+ emptyState: {
46
+ padding: theme.spacing(4),
47
+ textAlign: "center"
48
+ },
49
+ timelineContainer: {},
50
+ numberedDot: {
51
+ width: 24,
52
+ height: 24,
53
+ display: "flex",
54
+ alignItems: "center",
55
+ justifyContent: "center",
56
+ padding: 0
57
+ },
58
+ dotNumber: {
59
+ fontSize: theme.typography.caption.fontSize,
60
+ fontWeight: 500,
61
+ color: theme.palette.primary.contrastText,
62
+ lineHeight: 1
63
+ },
64
+ stepRationale: {
65
+ fontStyle: "italic",
66
+ color: theme.palette.text.secondary,
67
+ fontSize: theme.typography.caption.fontSize,
68
+ marginTop: theme.spacing(0.25)
69
+ },
70
+ timelineHeaderRow: {
71
+ display: "flex",
72
+ alignItems: "center",
73
+ gap: theme.spacing(0.75),
74
+ marginBottom: theme.spacing(0.25)
75
+ },
76
+ timelineEventText: {
77
+ fontWeight: 500
78
+ },
79
+ infoCardSpacing: {
80
+ marginBottom: theme.spacing(1)
81
+ },
82
+ sidebarColumn: {},
83
+ chatPanelWrapper: {
84
+ height: `calc(100vh - 240px)`,
85
+ marginBottom: theme.spacing(1),
86
+ display: "flex",
87
+ flexDirection: "column"
88
+ },
89
+ chatPanel: {
90
+ flex: 1,
91
+ display: "flex",
92
+ flexDirection: "column",
93
+ overflow: "hidden",
94
+ "& > div:first-child": {
95
+ alignItems: "center"
96
+ },
97
+ "& > div:last-child": {
98
+ flex: 1,
99
+ display: "flex",
100
+ flexDirection: "column",
101
+ overflow: "auto",
102
+ padding: 0
103
+ }
104
+ },
105
+ chatContent: {
106
+ flex: 1,
107
+ display: "flex",
108
+ flexDirection: "column",
109
+ overflow: "hidden"
110
+ },
111
+ chatMessages: {
112
+ flex: 1,
113
+ display: "flex",
114
+ flexDirection: "column",
115
+ gap: theme.spacing(1.5),
116
+ overflow: "auto",
117
+ padding: theme.spacing(2)
118
+ },
119
+ chatMessageUser: {
120
+ alignSelf: "flex-end",
121
+ backgroundColor: theme.palette.primary.main,
122
+ borderRadius: theme.spacing(2),
123
+ borderBottomRightRadius: theme.spacing(0.5),
124
+ padding: theme.spacing(1, 1.5),
125
+ maxWidth: "85%",
126
+ "& p, & span, & li, & strong, & em, & a": {
127
+ color: theme.palette.primary.contrastText
128
+ },
129
+ "& code": {
130
+ color: theme.palette.primary.contrastText,
131
+ backgroundColor: "rgba(255, 255, 255, 0.2)"
132
+ }
133
+ },
134
+ chatMessageAssistant: {
135
+ alignSelf: "flex-start",
136
+ backgroundColor: theme.palette.action.hover,
137
+ borderRadius: theme.spacing(2),
138
+ borderBottomLeftRadius: theme.spacing(0.5),
139
+ padding: theme.spacing(1, 1.5),
140
+ maxWidth: "85%"
141
+ },
142
+ chatInputArea: {
143
+ padding: theme.spacing(0.25, 0.5, 0.5, 0.5),
144
+ marginTop: "auto",
145
+ "& .MuiOutlinedInput-adornedEnd": {
146
+ paddingRight: theme.spacing(0.25)
147
+ }
148
+ },
149
+ statusStrip: {
150
+ padding: theme.spacing(0.25, 2, 0, 2),
151
+ textAlign: "center"
152
+ },
153
+ statusText: {
154
+ color: theme.palette.text.secondary,
155
+ animation: "$pulse 1.5s ease-in-out infinite"
156
+ },
157
+ "@keyframes pulse": {
158
+ "0%, 100%": {
159
+ opacity: 1
160
+ },
161
+ "50%": {
162
+ opacity: 0.4
163
+ }
164
+ },
165
+ inputPulsing: {
166
+ "& .MuiOutlinedInput-notchedOutline": {
167
+ animation: "$pulse 1.5s ease-in-out infinite"
168
+ }
169
+ },
170
+ buttonPulsing: {
171
+ animation: "$pulse 1.5s ease-in-out infinite"
172
+ },
173
+ markdownContent: {
174
+ fontSize: theme.typography.body2.fontSize,
175
+ lineHeight: 1.6,
176
+ "& p": {
177
+ margin: 0,
178
+ marginBottom: theme.spacing(1),
179
+ "&:last-child": {
180
+ marginBottom: 0
181
+ }
182
+ },
183
+ "& ul, & ol": {
184
+ margin: 0,
185
+ marginBottom: theme.spacing(1),
186
+ paddingLeft: theme.spacing(2.5),
187
+ "&:last-child": {
188
+ marginBottom: 0
189
+ }
190
+ },
191
+ "& li": {
192
+ marginBottom: theme.spacing(0.5)
193
+ },
194
+ "& code": {
195
+ backgroundColor: theme.palette.action.hover,
196
+ color: theme.palette.primary.main,
197
+ padding: "2px 6px",
198
+ borderRadius: 4,
199
+ fontFamily: "monospace",
200
+ fontSize: "0.85em"
201
+ },
202
+ "& pre": {
203
+ backgroundColor: theme.palette.background.default,
204
+ padding: theme.spacing(1.5),
205
+ borderRadius: theme.shape.borderRadius,
206
+ overflow: "auto",
207
+ marginBottom: theme.spacing(1),
208
+ "& code": {
209
+ backgroundColor: "transparent",
210
+ color: theme.palette.text.secondary,
211
+ padding: 0
212
+ }
213
+ },
214
+ "& strong": {
215
+ fontWeight: 500,
216
+ color: "inherit"
217
+ },
218
+ "& em": {
219
+ fontStyle: "italic"
220
+ },
221
+ "& a": {
222
+ color: theme.palette.primary.main,
223
+ textDecoration: "none",
224
+ "&:hover": {
225
+ textDecoration: "underline"
226
+ },
227
+ "& strong": {
228
+ color: theme.palette.primary.main
229
+ }
230
+ },
231
+ "& blockquote": {
232
+ borderLeft: `3px solid ${theme.palette.primary.main}`,
233
+ margin: 0,
234
+ marginBottom: theme.spacing(1),
235
+ paddingLeft: theme.spacing(1.5),
236
+ color: theme.palette.text.secondary,
237
+ fontStyle: "italic"
238
+ },
239
+ "& h1": {
240
+ fontSize: "1.1em",
241
+ marginTop: theme.spacing(1),
242
+ marginBottom: theme.spacing(0.5),
243
+ fontWeight: 500
244
+ },
245
+ "& h2": {
246
+ fontSize: "1.05em",
247
+ marginTop: theme.spacing(1),
248
+ marginBottom: theme.spacing(0.5),
249
+ fontWeight: 500
250
+ },
251
+ "& h3, & h4, & h5, & h6": {
252
+ fontSize: "1em",
253
+ marginTop: theme.spacing(0.75),
254
+ marginBottom: theme.spacing(0.5),
255
+ fontWeight: 500
256
+ },
257
+ "& h1:first-child, & h2:first-child, & h3:first-child": {
258
+ marginTop: 0
259
+ },
260
+ "& hr": {
261
+ border: "none",
262
+ borderTop: `1px solid ${theme.palette.divider}`,
263
+ margin: theme.spacing(1.5, 0)
264
+ },
265
+ "& table": {
266
+ display: "block",
267
+ width: "100%",
268
+ overflowX: "auto",
269
+ borderCollapse: "collapse",
270
+ marginBottom: theme.spacing(1),
271
+ fontSize: "0.85em",
272
+ whiteSpace: "nowrap",
273
+ // Thin scrollbar
274
+ "&::-webkit-scrollbar": {
275
+ height: 6
276
+ },
277
+ "&::-webkit-scrollbar-track": {
278
+ backgroundColor: theme.palette.action.hover,
279
+ borderRadius: 3
280
+ },
281
+ "&::-webkit-scrollbar-thumb": {
282
+ backgroundColor: theme.palette.action.disabled,
283
+ borderRadius: 3,
284
+ "&:hover": {
285
+ backgroundColor: theme.palette.action.active
286
+ }
287
+ },
288
+ scrollbarWidth: "thin",
289
+ "&:last-child": {
290
+ marginBottom: 0
291
+ }
292
+ },
293
+ "& th, & td": {
294
+ border: `1px solid ${theme.palette.divider}`,
295
+ padding: theme.spacing(0.75, 1),
296
+ textAlign: "left"
297
+ },
298
+ "& th": {
299
+ backgroundColor: theme.palette.action.hover,
300
+ fontWeight: 500
301
+ },
302
+ "& tr:nth-child(even)": {
303
+ backgroundColor: theme.palette.action.hover
304
+ }
305
+ },
306
+ chatError: {
307
+ padding: theme.spacing(0.5, 1),
308
+ backgroundColor: theme.palette.error.light,
309
+ textAlign: "center"
310
+ },
311
+ severityCritical: {
312
+ backgroundColor: theme.palette.error.light,
313
+ color: theme.palette.error.dark
314
+ },
315
+ severityWarning: {
316
+ backgroundColor: theme.palette.warning.light,
317
+ color: theme.palette.warning.dark
318
+ },
319
+ severityNormal: {
320
+ backgroundColor: theme.palette.success.light,
321
+ color: theme.palette.success.dark
322
+ },
323
+ outcomeNoAnomaly: {
324
+ backgroundColor: theme.palette.success.light,
325
+ color: theme.palette.success.dark
326
+ },
327
+ outcomeInsufficientData: {
328
+ backgroundColor: theme.palette.warning.light,
329
+ color: theme.palette.warning.dark
330
+ },
331
+ outcomeTransient: {
332
+ backgroundColor: theme.palette.grey[200],
333
+ color: theme.palette.grey[700]
334
+ },
335
+ outcomeExternal: {
336
+ backgroundColor: theme.palette.grey[300],
337
+ color: theme.palette.grey[800]
338
+ },
339
+ // Alert Context pane styles
340
+ alertContextHeader: {
341
+ display: "flex",
342
+ justifyContent: "space-between",
343
+ alignItems: "flex-start",
344
+ marginBottom: theme.spacing(1)
345
+ },
346
+ alertContextName: {
347
+ fontSize: theme.typography.h6.fontSize,
348
+ fontWeight: 500,
349
+ color: theme.palette.text.primary
350
+ },
351
+ alertContextDescriptionInline: {
352
+ fontSize: theme.typography.body2.fontSize,
353
+ color: theme.palette.text.secondary,
354
+ marginBottom: theme.spacing(2)
355
+ },
356
+ // Property row pattern (consistent with rest of repo)
357
+ propertyGrid: {
358
+ display: "flex",
359
+ flexDirection: "column",
360
+ gap: theme.spacing(1.5),
361
+ marginBottom: theme.spacing(2)
362
+ },
363
+ propertyRow: {
364
+ display: "flex",
365
+ alignItems: "baseline",
366
+ gap: theme.spacing(2)
367
+ },
368
+ propertyKey: {
369
+ fontWeight: 500,
370
+ color: theme.palette.text.secondary,
371
+ fontSize: theme.typography.body2.fontSize,
372
+ minWidth: 100,
373
+ flexShrink: 0
374
+ },
375
+ propertyValue: {
376
+ color: theme.palette.text.primary,
377
+ fontSize: theme.typography.body2.fontSize,
378
+ wordBreak: "break-word"
379
+ },
380
+ propertyValueHighlight: {
381
+ fontWeight: 500,
382
+ color: theme.palette.warning.main
383
+ },
384
+ alertContextQueryBox: {
385
+ marginTop: theme.spacing(1)
386
+ },
387
+ alertContextQuery: {
388
+ fontFamily: "monospace",
389
+ fontSize: theme.typography.caption.fontSize,
390
+ backgroundColor: theme.palette.action.hover,
391
+ padding: theme.spacing(1, 1.5),
392
+ borderRadius: theme.shape.borderRadius,
393
+ color: theme.palette.text.primary,
394
+ wordBreak: "break-word",
395
+ marginTop: theme.spacing(0.5)
396
+ },
397
+ overviewDivider: {
398
+ borderTop: `1px solid ${theme.palette.divider}`,
399
+ margin: theme.spacing(2, 0)
400
+ },
401
+ fixesPanelWrapper: {
402
+ maxHeight: `calc(100vh - 240px)`,
403
+ marginBottom: theme.spacing(1),
404
+ display: "flex",
405
+ flexDirection: "column"
406
+ },
407
+ fixesPanel: {
408
+ flex: 1,
409
+ display: "flex",
410
+ flexDirection: "column",
411
+ overflow: "hidden",
412
+ "& > div:first-child": {
413
+ alignItems: "center"
414
+ },
415
+ "& > div:last-child": {
416
+ flex: 1,
417
+ display: "flex",
418
+ flexDirection: "column",
419
+ overflow: "auto",
420
+ padding: 0
421
+ }
422
+ },
423
+ fixesContent: {
424
+ flex: 1,
425
+ overflow: "auto",
426
+ padding: theme.spacing(2)
427
+ },
428
+ patchActionCard: {
429
+ display: "flex",
430
+ flexDirection: "column",
431
+ gap: theme.spacing(1.5),
432
+ marginBottom: theme.spacing(1.5),
433
+ border: `1px solid ${theme.palette.divider}`,
434
+ borderRadius: theme.shape.borderRadius,
435
+ overflow: "hidden",
436
+ padding: theme.spacing(2),
437
+ "&:last-child": {
438
+ marginBottom: 0
439
+ }
440
+ },
441
+ patchActionDescription: {
442
+ fontWeight: 500,
443
+ fontSize: theme.typography.caption.fontSize,
444
+ color: theme.palette.text.primary,
445
+ lineHeight: 1.4
446
+ },
447
+ patchActionFooter: {
448
+ display: "flex",
449
+ alignItems: "center",
450
+ justifyContent: "space-between",
451
+ gap: theme.spacing(1)
452
+ },
453
+ patchResultDetails: {
454
+ fontSize: theme.typography.caption.fontSize,
455
+ color: theme.palette.text.secondary,
456
+ fontStyle: "italic"
457
+ },
458
+ patchBindingName: {
459
+ fontSize: theme.typography.caption.fontSize,
460
+ color: theme.palette.primary.main,
461
+ fontWeight: 500,
462
+ letterSpacing: "0.3px"
463
+ }
464
+ }));
465
+
466
+ export { useRCAReportStyles };
467
+ //# sourceMappingURL=styles.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.esm.js","sources":["../../../../src/components/RCA/RCAReport/styles.ts"],"sourcesContent":["import { makeStyles } from '@material-ui/core/styles';\n\nexport const useRCAReportStyles = makeStyles(theme => ({\n header: {\n backgroundColor: theme.palette.background.paper,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: theme.spacing(1, 2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n headerLeft: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n backButton: {\n marginRight: theme.spacing(1),\n },\n titleContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n title: {\n fontWeight: 500,\n },\n subtitle: {\n color: theme.palette.text.secondary,\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n content: {\n paddingTop: theme.spacing(1),\n },\n cardTitle: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n cardTitleIcon: {\n color: theme.palette.primary.main,\n fontSize: theme.typography.h3.fontSize,\n },\n emptyState: {\n padding: theme.spacing(4),\n textAlign: 'center',\n },\n timelineContainer: {},\n numberedDot: {\n width: 24,\n height: 24,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0,\n },\n dotNumber: {\n fontSize: theme.typography.caption.fontSize,\n fontWeight: 500,\n color: theme.palette.primary.contrastText,\n lineHeight: 1,\n },\n stepRationale: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n fontSize: theme.typography.caption.fontSize,\n marginTop: theme.spacing(0.25),\n },\n timelineHeaderRow: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.75),\n marginBottom: theme.spacing(0.25),\n },\n timelineEventText: {\n fontWeight: 500,\n },\n infoCardSpacing: {\n marginBottom: theme.spacing(1),\n },\n sidebarColumn: {},\n chatPanelWrapper: {\n height: `calc(100vh - 240px)`,\n marginBottom: theme.spacing(1),\n display: 'flex',\n flexDirection: 'column',\n },\n chatPanel: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n '& > div:first-child': {\n alignItems: 'center',\n },\n '& > div:last-child': {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n padding: 0,\n },\n },\n chatContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n },\n chatMessages: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1.5),\n overflow: 'auto',\n padding: theme.spacing(2),\n },\n chatMessageUser: {\n alignSelf: 'flex-end',\n backgroundColor: theme.palette.primary.main,\n borderRadius: theme.spacing(2),\n borderBottomRightRadius: theme.spacing(0.5),\n padding: theme.spacing(1, 1.5),\n maxWidth: '85%',\n '& p, & span, & li, & strong, & em, & a': {\n color: theme.palette.primary.contrastText,\n },\n '& code': {\n color: theme.palette.primary.contrastText,\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n },\n },\n chatMessageAssistant: {\n alignSelf: 'flex-start',\n backgroundColor: theme.palette.action.hover,\n borderRadius: theme.spacing(2),\n borderBottomLeftRadius: theme.spacing(0.5),\n padding: theme.spacing(1, 1.5),\n maxWidth: '85%',\n },\n chatInputArea: {\n padding: theme.spacing(0.25, 0.5, 0.5, 0.5),\n marginTop: 'auto',\n '& .MuiOutlinedInput-adornedEnd': {\n paddingRight: theme.spacing(0.25),\n },\n },\n statusStrip: {\n padding: theme.spacing(0.25, 2, 0, 2),\n textAlign: 'center',\n },\n statusText: {\n color: theme.palette.text.secondary,\n animation: '$pulse 1.5s ease-in-out infinite',\n },\n '@keyframes pulse': {\n '0%, 100%': {\n opacity: 1,\n },\n '50%': {\n opacity: 0.4,\n },\n },\n inputPulsing: {\n '& .MuiOutlinedInput-notchedOutline': {\n animation: '$pulse 1.5s ease-in-out infinite',\n },\n },\n buttonPulsing: {\n animation: '$pulse 1.5s ease-in-out infinite',\n },\n markdownContent: {\n fontSize: theme.typography.body2.fontSize,\n lineHeight: 1.6,\n '& p': {\n margin: 0,\n marginBottom: theme.spacing(1),\n '&:last-child': {\n marginBottom: 0,\n },\n },\n '& ul, & ol': {\n margin: 0,\n marginBottom: theme.spacing(1),\n paddingLeft: theme.spacing(2.5),\n '&:last-child': {\n marginBottom: 0,\n },\n },\n '& li': {\n marginBottom: theme.spacing(0.5),\n },\n '& code': {\n backgroundColor: theme.palette.action.hover,\n color: theme.palette.primary.main,\n padding: '2px 6px',\n borderRadius: 4,\n fontFamily: 'monospace',\n fontSize: '0.85em',\n },\n '& pre': {\n backgroundColor: theme.palette.background.default,\n padding: theme.spacing(1.5),\n borderRadius: theme.shape.borderRadius,\n overflow: 'auto',\n marginBottom: theme.spacing(1),\n '& code': {\n backgroundColor: 'transparent',\n color: theme.palette.text.secondary,\n padding: 0,\n },\n },\n '& strong': {\n fontWeight: 500,\n color: 'inherit',\n },\n '& em': {\n fontStyle: 'italic',\n },\n '& a': {\n color: theme.palette.primary.main,\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n '& strong': {\n color: theme.palette.primary.main,\n },\n },\n '& blockquote': {\n borderLeft: `3px solid ${theme.palette.primary.main}`,\n margin: 0,\n marginBottom: theme.spacing(1),\n paddingLeft: theme.spacing(1.5),\n color: theme.palette.text.secondary,\n fontStyle: 'italic',\n },\n '& h1': {\n fontSize: '1.1em',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(0.5),\n fontWeight: 500,\n },\n '& h2': {\n fontSize: '1.05em',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(0.5),\n fontWeight: 500,\n },\n '& h3, & h4, & h5, & h6': {\n fontSize: '1em',\n marginTop: theme.spacing(0.75),\n marginBottom: theme.spacing(0.5),\n fontWeight: 500,\n },\n '& h1:first-child, & h2:first-child, & h3:first-child': {\n marginTop: 0,\n },\n '& hr': {\n border: 'none',\n borderTop: `1px solid ${theme.palette.divider}`,\n margin: theme.spacing(1.5, 0),\n },\n '& table': {\n display: 'block',\n width: '100%',\n overflowX: 'auto',\n borderCollapse: 'collapse',\n marginBottom: theme.spacing(1),\n fontSize: '0.85em',\n whiteSpace: 'nowrap',\n // Thin scrollbar\n '&::-webkit-scrollbar': {\n height: 6,\n },\n '&::-webkit-scrollbar-track': {\n backgroundColor: theme.palette.action.hover,\n borderRadius: 3,\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: theme.palette.action.disabled,\n borderRadius: 3,\n '&:hover': {\n backgroundColor: theme.palette.action.active,\n },\n },\n scrollbarWidth: 'thin',\n '&:last-child': {\n marginBottom: 0,\n },\n },\n '& th, & td': {\n border: `1px solid ${theme.palette.divider}`,\n padding: theme.spacing(0.75, 1),\n textAlign: 'left',\n },\n '& th': {\n backgroundColor: theme.palette.action.hover,\n fontWeight: 500,\n },\n '& tr:nth-child(even)': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n chatError: {\n padding: theme.spacing(0.5, 1),\n backgroundColor: theme.palette.error.light,\n textAlign: 'center',\n },\n severityCritical: {\n backgroundColor: theme.palette.error.light,\n color: theme.palette.error.dark,\n },\n severityWarning: {\n backgroundColor: theme.palette.warning.light,\n color: theme.palette.warning.dark,\n },\n severityNormal: {\n backgroundColor: theme.palette.success.light,\n color: theme.palette.success.dark,\n },\n outcomeNoAnomaly: {\n backgroundColor: theme.palette.success.light,\n color: theme.palette.success.dark,\n },\n outcomeInsufficientData: {\n backgroundColor: theme.palette.warning.light,\n color: theme.palette.warning.dark,\n },\n outcomeTransient: {\n backgroundColor: theme.palette.grey[200],\n color: theme.palette.grey[700],\n },\n outcomeExternal: {\n backgroundColor: theme.palette.grey[300],\n color: theme.palette.grey[800],\n },\n // Alert Context pane styles\n alertContextHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: theme.spacing(1),\n },\n alertContextName: {\n fontSize: theme.typography.h6.fontSize,\n fontWeight: 500,\n color: theme.palette.text.primary,\n },\n alertContextDescriptionInline: {\n fontSize: theme.typography.body2.fontSize,\n color: theme.palette.text.secondary,\n marginBottom: theme.spacing(2),\n },\n // Property row pattern (consistent with rest of repo)\n propertyGrid: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1.5),\n marginBottom: theme.spacing(2),\n },\n propertyRow: {\n display: 'flex',\n alignItems: 'baseline',\n gap: theme.spacing(2),\n },\n propertyKey: {\n fontWeight: 500,\n color: theme.palette.text.secondary,\n fontSize: theme.typography.body2.fontSize,\n minWidth: 100,\n flexShrink: 0,\n },\n propertyValue: {\n color: theme.palette.text.primary,\n fontSize: theme.typography.body2.fontSize,\n wordBreak: 'break-word',\n },\n propertyValueHighlight: {\n fontWeight: 500,\n color: theme.palette.warning.main,\n },\n alertContextQueryBox: {\n marginTop: theme.spacing(1),\n },\n alertContextQuery: {\n fontFamily: 'monospace',\n fontSize: theme.typography.caption.fontSize,\n backgroundColor: theme.palette.action.hover,\n padding: theme.spacing(1, 1.5),\n borderRadius: theme.shape.borderRadius,\n color: theme.palette.text.primary,\n wordBreak: 'break-word',\n marginTop: theme.spacing(0.5),\n },\n overviewDivider: {\n borderTop: `1px solid ${theme.palette.divider}`,\n margin: theme.spacing(2, 0),\n },\n fixesPanelWrapper: {\n maxHeight: `calc(100vh - 240px)`,\n marginBottom: theme.spacing(1),\n display: 'flex',\n flexDirection: 'column',\n },\n fixesPanel: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n '& > div:first-child': {\n alignItems: 'center',\n },\n '& > div:last-child': {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n padding: 0,\n },\n },\n fixesContent: {\n flex: 1,\n overflow: 'auto',\n padding: theme.spacing(2),\n },\n patchActionCard: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: theme.spacing(1.5),\n marginBottom: theme.spacing(1.5),\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: theme.shape.borderRadius,\n overflow: 'hidden',\n padding: theme.spacing(2),\n '&:last-child': {\n marginBottom: 0,\n },\n },\n patchActionDescription: {\n fontWeight: 500,\n fontSize: theme.typography.caption.fontSize,\n color: theme.palette.text.primary,\n lineHeight: 1.4,\n },\n patchActionFooter: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n },\n patchResultDetails: {\n fontSize: theme.typography.caption.fontSize,\n color: theme.palette.text.secondary,\n fontStyle: 'italic',\n },\n patchBindingName: {\n fontSize: theme.typography.caption.fontSize,\n color: theme.palette.primary.main,\n fontWeight: 500,\n letterSpacing: '0.3px',\n },\n}));\n"],"names":[],"mappings":";;AAEO,MAAM,kBAAA,GAAqB,WAAW,CAAA,KAAA,MAAU;AAAA,EACrD,MAAA,EAAQ;AAAA,IACN,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,UAAA,CAAW,KAAA;AAAA,IAC1C,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,IAC3B,YAAA,EAAc,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA;AAAA,GAClD;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GACtB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,WAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC9B;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,IAC1B,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GACtB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC7B;AAAA,EACA,SAAA,EAAW;AAAA,IACT,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GACtB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA;AAAA,IAC7B,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,EAAA,CAAG;AAAA,GAChC;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACxB,SAAA,EAAW;AAAA,GACb;AAAA,EACA,mBAAmB,EAAC;AAAA,EACpB,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,QAAA;AAAA,IACnC,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,YAAA;AAAA,IAC7B,UAAA,EAAY;AAAA,GACd;AAAA,EACA,aAAA,EAAe;AAAA,IACb,SAAA,EAAW,QAAA;AAAA,IACX,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,IAC1B,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,QAAA;AAAA,IACnC,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,IAAI;AAAA,GAC/B;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,IACvB,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,IAAI;AAAA,GAClC;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC/B;AAAA,EACA,eAAe,EAAC;AAAA,EAChB,gBAAA,EAAkB;AAAA,IAChB,MAAA,EAAQ,CAAA,mBAAA,CAAA;AAAA,IACR,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,CAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,QAAA,EAAU,QAAA;AAAA,IACV,qBAAA,EAAuB;AAAA,MACrB,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,IAAA,EAAM,CAAA;AAAA,MACN,OAAA,EAAS,MAAA;AAAA,MACT,aAAA,EAAe,QAAA;AAAA,MACf,QAAA,EAAU,MAAA;AAAA,MACV,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,CAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IACtB,QAAA,EAAU,MAAA;AAAA,IACV,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC1B;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,SAAA,EAAW,UAAA;AAAA,IACX,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA;AAAA,IACvC,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,uBAAA,EAAyB,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC1C,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,GAAG,CAAA;AAAA,IAC7B,QAAA,EAAU,KAAA;AAAA,IACV,wCAAA,EAA0C;AAAA,MACxC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA,KAC/B;AAAA,IACA,QAAA,EAAU;AAAA,MACR,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,YAAA;AAAA,MAC7B,eAAA,EAAiB;AAAA;AACnB,GACF;AAAA,EACA,oBAAA,EAAsB;AAAA,IACpB,SAAA,EAAW,YAAA;AAAA,IACX,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,IACtC,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,sBAAA,EAAwB,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IACzC,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,GAAG,CAAA;AAAA,IAC7B,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,aAAA,EAAe;AAAA,IACb,SAAS,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,GAAA,EAAK,KAAK,GAAG,CAAA;AAAA,IAC1C,SAAA,EAAW,MAAA;AAAA,IACX,gCAAA,EAAkC;AAAA,MAChC,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,IAAI;AAAA;AAClC,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAS,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,IACpC,SAAA,EAAW;AAAA,GACb;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,IAC1B,SAAA,EAAW;AAAA,GACb;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,UAAA,EAAY;AAAA,MACV,OAAA,EAAS;AAAA,KACX;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,oCAAA,EAAsC;AAAA,MACpC,SAAA,EAAW;AAAA;AACb,GACF;AAAA,EACA,aAAA,EAAe;AAAA,IACb,SAAA,EAAW;AAAA,GACb;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,QAAA;AAAA,IACjC,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO;AAAA,MACL,MAAA,EAAQ,CAAA;AAAA,MACR,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC7B,cAAA,EAAgB;AAAA,QACd,YAAA,EAAc;AAAA;AAChB,KACF;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,MAAA,EAAQ,CAAA;AAAA,MACR,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC7B,WAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC9B,cAAA,EAAgB;AAAA,QACd,YAAA,EAAc;AAAA;AAChB,KACF;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,GAAG;AAAA,KACjC;AAAA,IACA,QAAA,EAAU;AAAA,MACR,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACtC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA;AAAA,MAC7B,OAAA,EAAS,SAAA;AAAA,MACT,YAAA,EAAc,CAAA;AAAA,MACd,UAAA,EAAY,WAAA;AAAA,MACZ,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,OAAA,EAAS;AAAA,MACP,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,UAAA,CAAW,OAAA;AAAA,MAC1C,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC1B,YAAA,EAAc,MAAM,KAAA,CAAM,YAAA;AAAA,MAC1B,QAAA,EAAU,MAAA;AAAA,MACV,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC7B,QAAA,EAAU;AAAA,QACR,eAAA,EAAiB,aAAA;AAAA,QACjB,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,QAC1B,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,GAAA;AAAA,MACZ,KAAA,EAAO;AAAA,KACT;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,SAAA,EAAW;AAAA,KACb;AAAA,IACA,KAAA,EAAO;AAAA,MACL,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA;AAAA,MAC7B,cAAA,EAAgB,MAAA;AAAA,MAChB,SAAA,EAAW;AAAA,QACT,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA;AAC/B,KACF;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,UAAA,EAAY,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,MACnD,MAAA,EAAQ,CAAA;AAAA,MACR,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC7B,WAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC9B,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,MAC1B,SAAA,EAAW;AAAA,KACb;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC1B,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC/B,UAAA,EAAY;AAAA,KACd;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC1B,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC/B,UAAA,EAAY;AAAA,KACd;AAAA,IACA,wBAAA,EAA0B;AAAA,MACxB,QAAA,EAAU,KAAA;AAAA,MACV,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,MAC7B,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC/B,UAAA,EAAY;AAAA,KACd;AAAA,IACA,sDAAA,EAAwD;AAAA,MACtD,SAAA,EAAW;AAAA,KACb;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,CAAA;AAAA,MAC7C,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,CAAC;AAAA,KAC9B;AAAA,IACA,SAAA,EAAW;AAAA,MACT,OAAA,EAAS,OAAA;AAAA,MACT,KAAA,EAAO,MAAA;AAAA,MACP,SAAA,EAAW,MAAA;AAAA,MACX,cAAA,EAAgB,UAAA;AAAA,MAChB,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC7B,QAAA,EAAU,QAAA;AAAA,MACV,UAAA,EAAY,QAAA;AAAA;AAAA,MAEZ,sBAAA,EAAwB;AAAA,QACtB,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,4BAAA,EAA8B;AAAA,QAC5B,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,QACtC,YAAA,EAAc;AAAA,OAChB;AAAA,MACA,4BAAA,EAA8B;AAAA,QAC5B,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,QAAA;AAAA,QACtC,YAAA,EAAc,CAAA;AAAA,QACd,SAAA,EAAW;AAAA,UACT,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO;AAAA;AACxC,OACF;AAAA,MACA,cAAA,EAAgB,MAAA;AAAA,MAChB,cAAA,EAAgB;AAAA,QACd,YAAA,EAAc;AAAA;AAChB,KACF;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,CAAA;AAAA,MAC1C,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,CAAC,CAAA;AAAA,MAC9B,SAAA,EAAW;AAAA,KACb;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,sBAAA,EAAwB;AAAA,MACtB,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO;AAAA;AACxC,GACF;AAAA,EACA,SAAA,EAAW;AAAA,IACT,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAA;AAAA,IAC7B,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,KAAA;AAAA,IACrC,SAAA,EAAW;AAAA,GACb;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,KAAA;AAAA,IACrC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM;AAAA,GAC7B;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,KAAA;AAAA,IACvC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA,GAC/B;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,KAAA;AAAA,IACvC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA,GAC/B;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,KAAA;AAAA,IACvC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA,GAC/B;AAAA,EACA,uBAAA,EAAyB;AAAA,IACvB,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,KAAA;AAAA,IACvC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA,GAC/B;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA;AAAA,IACvC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG;AAAA,GAC/B;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA;AAAA,IACvC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG;AAAA,GAC/B;AAAA;AAAA,EAEA,kBAAA,EAAoB;AAAA,IAClB,OAAA,EAAS,MAAA;AAAA,IACT,cAAA,EAAgB,eAAA;AAAA,IAChB,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC/B;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,EAAA,CAAG,QAAA;AAAA,IAC9B,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK;AAAA,GAC5B;AAAA,EACA,6BAAA,EAA+B;AAAA,IAC7B,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,QAAA;AAAA,IACjC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,IAC1B,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC/B;AAAA;AAAA,EAEA,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IACtB,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC/B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,UAAA;AAAA,IACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GACtB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,IAC1B,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,QAAA;AAAA,IACjC,QAAA,EAAU,GAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,aAAA,EAAe;AAAA,IACb,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,IAC1B,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,QAAA;AAAA,IACjC,SAAA,EAAW;AAAA,GACb;AAAA,EACA,sBAAA,EAAwB;AAAA,IACtB,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA,GAC/B;AAAA,EACA,oBAAA,EAAsB;AAAA,IACpB,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC5B;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,UAAA,EAAY,WAAA;AAAA,IACZ,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,QAAA;AAAA,IACnC,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,IACtC,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,GAAG,CAAA;AAAA,IAC7B,YAAA,EAAc,MAAM,KAAA,CAAM,YAAA;AAAA,IAC1B,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,IAC1B,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,GAAG;AAAA,GAC9B;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,CAAA;AAAA,IAC7C,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,CAAC;AAAA,GAC5B;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,SAAA,EAAW,CAAA,mBAAA,CAAA;AAAA,IACX,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,QAAA,EAAU,QAAA;AAAA,IACV,qBAAA,EAAuB;AAAA,MACrB,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,IAAA,EAAM,CAAA;AAAA,MACN,OAAA,EAAS,MAAA;AAAA,MACT,aAAA,EAAe,QAAA;AAAA,MACf,QAAA,EAAU,MAAA;AAAA,MACV,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,MAAA;AAAA,IACV,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC1B;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IACtB,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC/B,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,CAAA;AAAA,IAC1C,YAAA,EAAc,MAAM,KAAA,CAAM,YAAA;AAAA,IAC1B,QAAA,EAAU,QAAA;AAAA,IACV,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACxB,cAAA,EAAgB;AAAA,MACd,YAAA,EAAc;AAAA;AAChB,GACF;AAAA,EACA,sBAAA,EAAwB;AAAA,IACtB,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,QAAA;AAAA,IACnC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,IAC1B,UAAA,EAAY;AAAA,GACd;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GACtB;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,QAAA;AAAA,IACnC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,IAC1B,SAAA,EAAW;AAAA,GACb;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,QAAA;AAAA,IACnC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA;AAAA,IAC7B,UAAA,EAAY,GAAA;AAAA,IACZ,aAAA,EAAe;AAAA;AAEnB,CAAA,CAAE;;;;"}