+ {frames.map(frame => {
+ const { fileName, lineNumber } = frame;
+ const key = `${fileName}#L${lineNumber}`;
+ const snippet = results[key];
+
+ if (snippet) {
+ const { compositeContent, filePath, language, uri } = snippet;
+ const { content, lineMapping } = compositeContent;
+ const fileUrl = externalFileURI(uri, filePath);
+
+ return (
+
+
+ history.push(fileUrl)}
+ />
+ }
+ language={language}
+ lineNumber={i => lineMapping[i]}
+ />
+
+ );
+ }
+
+ return (
+
+
+
+ {fileName}
+ at
+ line {lineNumber}
+
+
+
+ );
+ })}
+
+);
diff --git a/x-pack/legacy/plugins/code/public/components/integrations/integrations.scss b/x-pack/legacy/plugins/code/public/components/integrations/integrations.scss
new file mode 100644
index 0000000000000..24fe406cd0960
--- /dev/null
+++ b/x-pack/legacy/plugins/code/public/components/integrations/integrations.scss
@@ -0,0 +1,43 @@
+.integrations__container {
+ padding: $euiSize;
+}
+
+.integrations__frame {
+ margin: $euiSizeS 0;
+}
+
+.integrations__code {
+ @include euiCodeFont;
+}
+
+.integrations__link--external {
+ margin-left: $euiSizeS;
+}
+
+.integrations__preposition {
+ margin: 0 $euiSizeS;
+ color: $euiColorMediumShade;
+}
+
+.integrations__button-icon {
+ padding: $euiSizeXS;
+ background-color: $euiColorLightestShade;
+ border: 1px solid $euiColorLightShade;
+}
+
+.integrations__snippet-info {
+ margin-bottom: $euiSizeS;
+}
+
+.integrations__snippet-title {
+ margin-bottom: $euiSizeS;
+}
+
+.integrations__text--bold {
+ font-weight: $euiFontWeightBold;
+}
+
+.integrations__popover {
+ margin-bottom: 1rem;
+ width: 300px;
+}
diff --git a/x-pack/legacy/plugins/code/public/components/integrations/repo_title.tsx b/x-pack/legacy/plugins/code/public/components/integrations/repo_title.tsx
new file mode 100644
index 0000000000000..2ed3d529b699b
--- /dev/null
+++ b/x-pack/legacy/plugins/code/public/components/integrations/repo_title.tsx
@@ -0,0 +1,22 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License;
+ * you may not use this file except in compliance with the Elastic License.
+ */
+
+import React from 'react';
+
+import { EuiText } from '@elastic/eui';
+import { RepositoryUtils } from '../../../common/repository_utils';
+
+export const RepoTitle = ({ uri }: { uri: string }) => {
+ const org = RepositoryUtils.orgNameFromUri(uri);
+ const name = RepositoryUtils.repoNameFromUri(uri);
+
+ return (
+