diff --git a/docs/scripts/notebook_convert.py b/docs/scripts/notebook_convert.py
index 429734f115817..fb0e3c807561d 100644
--- a/docs/scripts/notebook_convert.py
+++ b/docs/scripts/notebook_convert.py
@@ -143,16 +143,22 @@ def _modify_frontmatter(
edit_url = (
f"https://github.com/langchain-ai/langchain/edit/master/docs/docs/{rel_path}"
)
+ frontmatter = {
+ "custom_edit_url": edit_url,
+ }
if re.match(r"^[\s\n]*---\n", body):
- # if custom_edit_url already exists, leave it
- if re.match(r"custom_edit_url: ", body):
- return body
- else:
- return re.sub(
- r"^[\s\n]*---\n", f"---\ncustom_edit_url: {edit_url}\n", body, count=1
- )
+ # frontmatter already present
+
+ for k, v in frontmatter.items():
+ # if key already exists, leave it
+ if re.match(f"{k}: ", body):
+ continue
+ else:
+ body = re.sub(r"^[\s\n]*---\n", f"---\n{k}: {v}\n", body, count=1)
+ return body
else:
- return f"---\ncustom_edit_url: {edit_url}\n---\n{body}"
+ insert = "\n".join([f"{k}: {v}" for k, v in frontmatter.items()])
+ return f"---\n{insert}\n---\n{body}"
def _convert_notebook(
diff --git a/docs/src/theme/DocItem/Layout/index.js b/docs/src/theme/DocItem/Layout/index.js
new file mode 100644
index 0000000000000..768e65112d284
--- /dev/null
+++ b/docs/src/theme/DocItem/Layout/index.js
@@ -0,0 +1,85 @@
+import React from 'react';
+import clsx from 'clsx';
+import {useWindowSize} from '@docusaurus/theme-common';
+import {useDoc} from '@docusaurus/plugin-content-docs/client';
+import DocItemPaginator from '@theme/DocItem/Paginator';
+import DocVersionBanner from '@theme/DocVersionBanner';
+import DocVersionBadge from '@theme/DocVersionBadge';
+import DocItemFooter from '@theme/DocItem/Footer';
+import DocItemTOCMobile from '@theme/DocItem/TOC/Mobile';
+import DocItemTOCDesktop from '@theme/DocItem/TOC/Desktop';
+import DocItemContent from '@theme/DocItem/Content';
+import DocBreadcrumbs from '@theme/DocBreadcrumbs';
+import ContentVisibility from '@theme/ContentVisibility';
+import styles from './styles.module.css';
+/**
+ * Decide if the toc should be rendered, on mobile or desktop viewports
+ */
+function useDocTOC() {
+ const {frontMatter, toc} = useDoc();
+ const windowSize = useWindowSize();
+ const hidden = frontMatter.hide_table_of_contents;
+ const canRender = !hidden && toc.length > 0;
+ const mobile = canRender ?