-
Set up docs MCP server
-
Query the ClickHouse documentation directly from your AI tools using the Model Context Protocol.
-
+
+
Set up docs MCP server
+
Query the ClickHouse documentation directly from your AI tools using the Model Context Protocol.
+
>
);
diff --git a/ja/index.mdx b/ja/index.mdx
index 7b0304490..61a136d2a 100644
--- a/ja/index.mdx
+++ b/ja/index.mdx
@@ -44,34 +44,7 @@ export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false,
);
}
-export const FullWidthDivider = ({ style }) => {
- const ref = useRef(null);
- useEffect(() => {
- if (!ref.current) return;
- const el = ref.current;
- const update = () => {
- requestAnimationFrame(() => {
- el.style.marginLeft = '';
- el.style.width = '';
- const elRect = el.getBoundingClientRect();
- const sidebar = document.getElementById('sidebar');
- const sidebarRect = sidebar?.getBoundingClientRect();
- const leftEdge = (sidebarRect && sidebarRect.width > 0) ? sidebarRect.right : 0;
- const rightEdge = document.documentElement.clientWidth;
- const ml = Math.max(0, elRect.left - leftEdge);
- const mr = Math.max(0, rightEdge - elRect.right);
- el.style.marginLeft = `-${ml}px`;
- el.style.width = `calc(100% + ${ml + mr}px)`;
- });
- };
- update();
- window.addEventListener('resize', update);
- return () => window.removeEventListener('resize', update);
- }, []);
- return
;
-};
-
-export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, body, href, links, icon, showArrow, arrowBottom, extraStyle }) => {
+export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, href, links, icon }) => {
const [isDark, setIsDark] = useState(false);
useEffect(() => {
@@ -95,10 +68,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
border: isDark ? '1px solid #3c3c3c' : '1px solid #e5e7eb',
display: 'block',
textDecoration: 'none',
- color: 'inherit',
- position: 'relative',
- overflow: 'hidden',
- transition: 'background-color 0.12s ease, border-color 0.12s ease'
+ color: 'inherit'
};
const content = (
@@ -137,7 +107,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
>
)}
{title}
- {body ? body : (
-
{description}
- )}
+
{description}
{links && links.length > 0 && (
{links.map((link, index) => (
@@ -177,21 +145,14 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
))}
)}
- {showArrow && (
-
- )}
>
);
if (links && links.length > 0) {
- return
{content}
;
+ return
{content}
;
}
- return
{ e.preventDefault(); window.location.href = href; }}>{content};
+ return
{content};
};
{/*
@@ -225,7 +186,8 @@ export const ContentSwitcher = () => {
{selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
+ {selected === 'usecase' && 'Explore by use case'}
+ {selected === 'product' && 'Explore by product area'}
{
{showUsecase && (
<>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by use case
+
+ )}
+
{
href="/get-started/use_cases/real-time-analytics"
/>
{
{showProduct && (
<>
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by product area
+
+ )}
{
title="Agentic Data Stack"
description="The open-source stack for agentic analytics. Your chat, your models, your data. Powered by ClickHouse, LibreChat and Langfuse."
href="/products/agentic-data-stack/overview"
- showArrow
/>
>
diff --git a/ko/index.mdx b/ko/index.mdx
index 7b0304490..61a136d2a 100644
--- a/ko/index.mdx
+++ b/ko/index.mdx
@@ -44,34 +44,7 @@ export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false,
);
}
-export const FullWidthDivider = ({ style }) => {
- const ref = useRef(null);
- useEffect(() => {
- if (!ref.current) return;
- const el = ref.current;
- const update = () => {
- requestAnimationFrame(() => {
- el.style.marginLeft = '';
- el.style.width = '';
- const elRect = el.getBoundingClientRect();
- const sidebar = document.getElementById('sidebar');
- const sidebarRect = sidebar?.getBoundingClientRect();
- const leftEdge = (sidebarRect && sidebarRect.width > 0) ? sidebarRect.right : 0;
- const rightEdge = document.documentElement.clientWidth;
- const ml = Math.max(0, elRect.left - leftEdge);
- const mr = Math.max(0, rightEdge - elRect.right);
- el.style.marginLeft = `-${ml}px`;
- el.style.width = `calc(100% + ${ml + mr}px)`;
- });
- };
- update();
- window.addEventListener('resize', update);
- return () => window.removeEventListener('resize', update);
- }, []);
- return
;
-};
-
-export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, body, href, links, icon, showArrow, arrowBottom, extraStyle }) => {
+export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, href, links, icon }) => {
const [isDark, setIsDark] = useState(false);
useEffect(() => {
@@ -95,10 +68,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
border: isDark ? '1px solid #3c3c3c' : '1px solid #e5e7eb',
display: 'block',
textDecoration: 'none',
- color: 'inherit',
- position: 'relative',
- overflow: 'hidden',
- transition: 'background-color 0.12s ease, border-color 0.12s ease'
+ color: 'inherit'
};
const content = (
@@ -137,7 +107,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
>
)}
{title}
- {body ? body : (
- {description}
- )}
+ {description}
{links && links.length > 0 && (
{links.map((link, index) => (
@@ -177,21 +145,14 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
))}
)}
- {showArrow && (
-
- )}
>
);
if (links && links.length > 0) {
- return {content}
;
+ return {content}
;
}
- return { e.preventDefault(); window.location.href = href; }}>{content};
+ return {content};
};
{/*
@@ -225,7 +186,8 @@ export const ContentSwitcher = () => {
{selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
+ {selected === 'usecase' && 'Explore by use case'}
+ {selected === 'product' && 'Explore by product area'}
{
{showUsecase && (
<>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by use case
+
+ )}
+
{
href="/get-started/use_cases/real-time-analytics"
/>
{
{showProduct && (
<>
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by product area
+
+ )}
{
title="Agentic Data Stack"
description="The open-source stack for agentic analytics. Your chat, your models, your data. Powered by ClickHouse, LibreChat and Langfuse."
href="/products/agentic-data-stack/overview"
- showArrow
/>
>
diff --git a/pt-br/index.mdx b/pt-br/index.mdx
index 7b0304490..61a136d2a 100644
--- a/pt-br/index.mdx
+++ b/pt-br/index.mdx
@@ -44,34 +44,7 @@ export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false,
);
}
-export const FullWidthDivider = ({ style }) => {
- const ref = useRef(null);
- useEffect(() => {
- if (!ref.current) return;
- const el = ref.current;
- const update = () => {
- requestAnimationFrame(() => {
- el.style.marginLeft = '';
- el.style.width = '';
- const elRect = el.getBoundingClientRect();
- const sidebar = document.getElementById('sidebar');
- const sidebarRect = sidebar?.getBoundingClientRect();
- const leftEdge = (sidebarRect && sidebarRect.width > 0) ? sidebarRect.right : 0;
- const rightEdge = document.documentElement.clientWidth;
- const ml = Math.max(0, elRect.left - leftEdge);
- const mr = Math.max(0, rightEdge - elRect.right);
- el.style.marginLeft = `-${ml}px`;
- el.style.width = `calc(100% + ${ml + mr}px)`;
- });
- };
- update();
- window.addEventListener('resize', update);
- return () => window.removeEventListener('resize', update);
- }, []);
- return
;
-};
-
-export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, body, href, links, icon, showArrow, arrowBottom, extraStyle }) => {
+export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, href, links, icon }) => {
const [isDark, setIsDark] = useState(false);
useEffect(() => {
@@ -95,10 +68,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
border: isDark ? '1px solid #3c3c3c' : '1px solid #e5e7eb',
display: 'block',
textDecoration: 'none',
- color: 'inherit',
- position: 'relative',
- overflow: 'hidden',
- transition: 'background-color 0.12s ease, border-color 0.12s ease'
+ color: 'inherit'
};
const content = (
@@ -137,7 +107,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
>
)}
{title}
- {body ? body : (
- {description}
- )}
+ {description}
{links && links.length > 0 && (
{links.map((link, index) => (
@@ -177,21 +145,14 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
))}
)}
- {showArrow && (
-
- )}
>
);
if (links && links.length > 0) {
- return {content}
;
+ return {content}
;
}
- return { e.preventDefault(); window.location.href = href; }}>{content};
+ return {content};
};
{/*
@@ -225,7 +186,8 @@ export const ContentSwitcher = () => {
{selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
+ {selected === 'usecase' && 'Explore by use case'}
+ {selected === 'product' && 'Explore by product area'}
{
{showUsecase && (
<>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by use case
+
+ )}
+
{
href="/get-started/use_cases/real-time-analytics"
/>
{
{showProduct && (
<>
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by product area
+
+ )}
{
title="Agentic Data Stack"
description="The open-source stack for agentic analytics. Your chat, your models, your data. Powered by ClickHouse, LibreChat and Langfuse."
href="/products/agentic-data-stack/overview"
- showArrow
/>
>
diff --git a/ru/index.mdx b/ru/index.mdx
index 7b0304490..61a136d2a 100644
--- a/ru/index.mdx
+++ b/ru/index.mdx
@@ -44,34 +44,7 @@ export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false,
);
}
-export const FullWidthDivider = ({ style }) => {
- const ref = useRef(null);
- useEffect(() => {
- if (!ref.current) return;
- const el = ref.current;
- const update = () => {
- requestAnimationFrame(() => {
- el.style.marginLeft = '';
- el.style.width = '';
- const elRect = el.getBoundingClientRect();
- const sidebar = document.getElementById('sidebar');
- const sidebarRect = sidebar?.getBoundingClientRect();
- const leftEdge = (sidebarRect && sidebarRect.width > 0) ? sidebarRect.right : 0;
- const rightEdge = document.documentElement.clientWidth;
- const ml = Math.max(0, elRect.left - leftEdge);
- const mr = Math.max(0, rightEdge - elRect.right);
- el.style.marginLeft = `-${ml}px`;
- el.style.width = `calc(100% + ${ml + mr}px)`;
- });
- };
- update();
- window.addEventListener('resize', update);
- return () => window.removeEventListener('resize', update);
- }, []);
- return
;
-};
-
-export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, body, href, links, icon, showArrow, arrowBottom, extraStyle }) => {
+export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, href, links, icon }) => {
const [isDark, setIsDark] = useState(false);
useEffect(() => {
@@ -95,10 +68,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
border: isDark ? '1px solid #3c3c3c' : '1px solid #e5e7eb',
display: 'block',
textDecoration: 'none',
- color: 'inherit',
- position: 'relative',
- overflow: 'hidden',
- transition: 'background-color 0.12s ease, border-color 0.12s ease'
+ color: 'inherit'
};
const content = (
@@ -137,7 +107,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
>
)}
{title}
- {body ? body : (
- {description}
- )}
+ {description}
{links && links.length > 0 && (
{links.map((link, index) => (
@@ -177,21 +145,14 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
))}
)}
- {showArrow && (
-
- )}
>
);
if (links && links.length > 0) {
- return {content}
;
+ return {content}
;
}
- return { e.preventDefault(); window.location.href = href; }}>{content};
+ return {content};
};
{/*
@@ -225,7 +186,8 @@ export const ContentSwitcher = () => {
{selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
+ {selected === 'usecase' && 'Explore by use case'}
+ {selected === 'product' && 'Explore by product area'}
{
{showUsecase && (
<>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by use case
+
+ )}
+
{
href="/get-started/use_cases/real-time-analytics"
/>
{
{showProduct && (
<>
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by product area
+
+ )}
{
title="Agentic Data Stack"
description="The open-source stack for agentic analytics. Your chat, your models, your data. Powered by ClickHouse, LibreChat and Langfuse."
href="/products/agentic-data-stack/overview"
- showArrow
/>
>
diff --git a/zh/index.mdx b/zh/index.mdx
index 7b0304490..61a136d2a 100644
--- a/zh/index.mdx
+++ b/zh/index.mdx
@@ -44,34 +44,7 @@ export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false,
);
}
-export const FullWidthDivider = ({ style }) => {
- const ref = useRef(null);
- useEffect(() => {
- if (!ref.current) return;
- const el = ref.current;
- const update = () => {
- requestAnimationFrame(() => {
- el.style.marginLeft = '';
- el.style.width = '';
- const elRect = el.getBoundingClientRect();
- const sidebar = document.getElementById('sidebar');
- const sidebarRect = sidebar?.getBoundingClientRect();
- const leftEdge = (sidebarRect && sidebarRect.width > 0) ? sidebarRect.right : 0;
- const rightEdge = document.documentElement.clientWidth;
- const ml = Math.max(0, elRect.left - leftEdge);
- const mr = Math.max(0, rightEdge - elRect.right);
- el.style.marginLeft = `-${ml}px`;
- el.style.width = `calc(100% + ${ml + mr}px)`;
- });
- };
- update();
- window.addEventListener('resize', update);
- return () => window.removeEventListener('resize', update);
- }, []);
- return
;
-};
-
-export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, body, href, links, icon, showArrow, arrowBottom, extraStyle }) => {
+export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, description, href, links, icon }) => {
const [isDark, setIsDark] = useState(false);
useEffect(() => {
@@ -95,10 +68,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
border: isDark ? '1px solid #3c3c3c' : '1px solid #e5e7eb',
display: 'block',
textDecoration: 'none',
- color: 'inherit',
- position: 'relative',
- overflow: 'hidden',
- transition: 'background-color 0.12s ease, border-color 0.12s ease'
+ color: 'inherit'
};
const content = (
@@ -137,7 +107,7 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
>
)}
{title}
- {body ? body : (
- {description}
- )}
+ {description}
{links && links.length > 0 && (
{links.map((link, index) => (
@@ -177,21 +145,14 @@ export const HeroCard = ({ filename, darkFilename: darkFilenameProp, title, desc
))}
)}
- {showArrow && (
-
- )}
>
);
if (links && links.length > 0) {
- return {content}
;
+ return {content}
;
}
- return { e.preventDefault(); window.location.href = href; }}>{content};
+ return {content};
};
{/*
@@ -225,7 +186,8 @@ export const ContentSwitcher = () => {
{selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
+ {selected === 'usecase' && 'Explore by use case'}
+ {selected === 'product' && 'Explore by product area'}
{
{showUsecase && (
<>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by use case
+
+ )}
+
{
href="/get-started/use_cases/real-time-analytics"
/>
{
{showProduct && (
<>
+ {CONTENT_MODE === 'stacked' && (
+
+
Explore by product area
+
+ )}
{
title="Agentic Data Stack"
description="The open-source stack for agentic analytics. Your chat, your models, your data. Powered by ClickHouse, LibreChat and Langfuse."
href="/products/agentic-data-stack/overview"
- showArrow
/>
>