diff --git a/es/index.mdx b/es/index.mdx
deleted file mode 100644
index 7b0304490..000000000
--- a/es/index.mdx
+++ /dev/null
@@ -1,435 +0,0 @@
----
-mode: "custom"
-max-toc-depth: 3
-slug: home
-sidebarTitle: "Home"
-icon: "house"
----
-
-export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false, type = 'default', ...props}) => {
- return (
-
- {options.map(({ value, label, ...buttonProps }) => (
-
- ))}
-
- );
-}
-
-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 }) => {
- const [isDark, setIsDark] = useState(false);
-
- useEffect(() => {
- if (typeof window !== 'undefined') {
- const checkDark = () => {
- setIsDark(document.documentElement.classList.contains('dark'));
- };
- checkDark();
- const observer = new MutationObserver(checkDark);
- observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
- return () => observer.disconnect();
- }
- }, []);
-
- const darkFilename = darkFilenameProp || (filename ? filename.replace('-light.', '-dark.') : null);
-
- const cardStyle = {
- padding: '16px 16px 16px 16px',
- borderRadius: '8px',
- backgroundColor: isDark ? '#1b1b18' : '#f9f9f9',
- 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'
- };
-
- const content = (
- <>
- {icon ? (
-
- {icon}
-
- ) : (
- <>
-
-
- >
- )}
-
- {title}
-
- {body ? body : (
- {description}
- )}
- {links && links.length > 0 && (
-
- )}
- {showArrow && (
-
- )}
- >
- );
-
- if (links && links.length > 0) {
- return {content}
;
- }
-
- return { e.preventDefault(); window.location.href = href; }}>{content};
-};
-
-{/*
- To restore the tab switcher, change MODE to 'switcher'.
- Valid values: 'stacked' (all sections visible) or 'switcher' (tabbed).
-*/}
-export const CONTENT_MODE = 'stacked';
-
-export const ContentSwitcher = () => {
- const [selected, setSelected] = useState(() => {
- if (typeof window !== 'undefined') {
- return localStorage.getItem('contentSwitcherTab') || 'goal';
- }
- return 'goal';
- });
-
- const handleSelection = (value) => {
- setSelected(value);
- if (typeof window !== 'undefined') {
- localStorage.setItem('contentSwitcherTab', value);
- }
- };
-
- const showGoal = CONTENT_MODE === 'stacked' || selected === 'goal';
- const showUsecase = CONTENT_MODE === 'stacked' || selected === 'usecase';
- const showProduct = CONTENT_MODE === 'stacked' || selected === 'product';
-
- return (
- <>
- {CONTENT_MODE === 'switcher' && (
-
-
- {selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
-
-
-
- )}
-
- {showGoal && (
- <>
-
-
-
-
-
- }
- links={[
- { label: "What is ClickHouse?", href: "/get-started/about/intro" },
- { label: "Setup/Install", href: "/get-started/install/quick-start-cloud" },
- { label: "Explore quickstarts", href: "/get-started/quickstarts/home" },
- { label: "Migration guides", href: "/get-started/migration-guides/01_overview" },
- { label: "Core concepts & best practices", href: "/concepts/best-practices/index" },
- { label: "Sample datasets", href: "/get-started/sample-datasets/github" }
- ]}
- />
-
-
-
- }
- links={[
- { label: "Data modelling topics", href: "/guides/data_modelling/schema-design" },
- { label: "Performance & query optimization guides", href: "/guides/performance_and_monitoring/query-optimization" },
- { label: "ClickHouse Cloud topics", href: "/guides/cloud/cloud-compatibility" },
- { label: "Self-managed topics", href: "/guides/oss/deployment_and_scaling/terminology" },
- { label: "Use-case guides", href: "/guides/use_case_guides/time-series/time-series-filling-gaps" },
- ]}
- />
-
-
-
- }
- links={[
- { label: "SQL reference", href: "/reference/statements" },
- { label: "Session settings", href: "/reference/settings/session-settings" },
- { label: "Server settings", href: "/reference/settings/server-settings/settings" },
- { label: "Functions", href: "/reference/functions/regular-functions/overview" },
- { label: "Engines", href: "/reference/engines/engines" },
- { label: "System tables", href: "/reference/system-tables" },
- { label: "Formats", href: "/reference/formats/Arrow/Arrow" },
- { label: "Data types", href: "/reference/data-types/int-uint" }
- ]}
- />
-
- >
- )}
-
- {showUsecase && (
- <>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
-
-
-
-
-
- >
- )}
-
- {showProduct && (
- <>
-
-
-
-
-
-
-
-
- >
- )}
- >
- );
-};
-
-
-
-

-

-
-
-
-
- Start building with ClickHouse
-
-
-
- Documentation for the fastest analytics database
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/es/navigation.json b/es/navigation.json
deleted file mode 100644
index ceab20380..000000000
--- a/es/navigation.json
+++ /dev/null
@@ -1,8 +0,0 @@
-[
- {
- "group": "Home",
- "pages": [
- "es/index"
- ]
- }
-]
diff --git a/gt.config.json b/gt.config.json
new file mode 100644
index 000000000..c2ba778ec
--- /dev/null
+++ b/gt.config.json
@@ -0,0 +1,121 @@
+{
+ "framework": "mintlify",
+ "options": {
+ "experimentalClearLocaleDirs": true,
+ "skipFileValidation": {
+ "mdx": true
+ },
+ "mintlify": {
+ "inferTitleFromFilename": true,
+ "openapi": {
+ "files": [
+ "./clickstack/api-reference/hyperdx-openapi.json",
+ "./products/cloud/api-reference/cloud-openapi.json"
+ ]
+ }
+ },
+ "jsonSchema": {
+ "./docs.json": {
+ "resolveRefs": true,
+ "composite": {
+ "$.navigation.languages": {
+ "type": "array",
+ "key": "$.language",
+ "experimentalSort": "localesAlphabetical",
+ "splitEntries": true,
+ "include": [
+ "$..group",
+ "$..tab",
+ "$..item",
+ "$..anchor",
+ "$..dropdown"
+ ],
+ "transform": {
+ "$..pages[*]": {
+ "match": "^/?(.*)$",
+ "replace": "{locale}/$1"
+ },
+ "$..root": {
+ "match": "^/?(.*)$",
+ "replace": "{locale}/$1"
+ }
+ }
+ }
+ }
+ },
+ "./clickstack/api-reference/hyperdx-openapi.json": {
+ "preset": "openapi"
+ },
+ "./products/cloud/api-reference/cloud-openapi.json": {
+ "preset": "openapi"
+ }
+ },
+ "docsUrlPattern": "/[locale]",
+ "docsImportPattern": "/snippets/[locale]",
+ "generateRedirects": "./docs.json",
+ "experimentalLocalizeStaticImports": true,
+ "experimentalLocalizeStaticUrls": true,
+ "experimentalLocalizeRelativeAssets": true,
+ "docsHideDefaultLocaleImport": true,
+ "experimentalHideDefaultLocale": true,
+ "experimentalAddHeaderAnchorIds": "mintlify"
+ },
+ "files": {
+ "json": {
+ "include": [
+ "./docs.json",
+ "./clickstack/api-reference/hyperdx-openapi.json",
+ "./products/cloud/api-reference/cloud-openapi.json"
+ ],
+ "transform": [
+ {
+ "match": "^serverless-rl/api-reference/openapi.json$",
+ "replace": "{locale}/clickstack/api-reference/hyperdx-openapi.json"
+ },
+ {
+ "match": "^weave/reference/service-api/openapi.json$",
+ "replace": "{locale}/products/cloud/api-reference/cloud-openapi.json"
+ }
+ ]
+ },
+ "mdx": {
+ "include": [
+ "./**/*.mdx"
+ ],
+ "transform": {
+ "match": "^(snippets/)?(.*)$",
+ "replace": "$1{locale}/$2"
+ },
+ "exclude": [
+ "./[locales]/**/*.mdx",
+ "./snippets/[locales]/**/*.mdx",
+ "./[locales]/**/*.md",
+ "./snippets/[locales]/**/*.md",
+ "./**/README.md",
+ "./**/LICENSE.md",
+ "./**/COPYING.md",
+ "./**/NOTICE.md",
+ "./**/CHANGELOG.md",
+ "./**/HISTORY.md",
+ "./**/CODE_OF_CONDUCT.md",
+ "./**/CONTRIBUTING.md",
+ "./**/SECURITY.md",
+ "./**/GOVERNANCE.md",
+ "./**/AGENTS.md",
+ "./**/OWNERS.md",
+ "./**/MAINTAINERS.md"
+ ]
+ }
+ },
+ "locales": [
+ "en",
+ "es",
+ "ja",
+ "ko",
+ "pt-BR",
+ "ru",
+ "zh"
+ ],
+ "defaultLocale": "en",
+ "$schema": "https://assets.gtx.dev/config-schema.json"
+}
\ No newline at end of file
diff --git a/ja/index.mdx b/ja/index.mdx
deleted file mode 100644
index 7b0304490..000000000
--- a/ja/index.mdx
+++ /dev/null
@@ -1,435 +0,0 @@
----
-mode: "custom"
-max-toc-depth: 3
-slug: home
-sidebarTitle: "Home"
-icon: "house"
----
-
-export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false, type = 'default', ...props}) => {
- return (
-
- {options.map(({ value, label, ...buttonProps }) => (
-
- ))}
-
- );
-}
-
-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 }) => {
- const [isDark, setIsDark] = useState(false);
-
- useEffect(() => {
- if (typeof window !== 'undefined') {
- const checkDark = () => {
- setIsDark(document.documentElement.classList.contains('dark'));
- };
- checkDark();
- const observer = new MutationObserver(checkDark);
- observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
- return () => observer.disconnect();
- }
- }, []);
-
- const darkFilename = darkFilenameProp || (filename ? filename.replace('-light.', '-dark.') : null);
-
- const cardStyle = {
- padding: '16px 16px 16px 16px',
- borderRadius: '8px',
- backgroundColor: isDark ? '#1b1b18' : '#f9f9f9',
- 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'
- };
-
- const content = (
- <>
- {icon ? (
-
- {icon}
-
- ) : (
- <>
-
-
- >
- )}
-
- {title}
-
- {body ? body : (
- {description}
- )}
- {links && links.length > 0 && (
-
- )}
- {showArrow && (
-
- )}
- >
- );
-
- if (links && links.length > 0) {
- return {content}
;
- }
-
- return { e.preventDefault(); window.location.href = href; }}>{content};
-};
-
-{/*
- To restore the tab switcher, change MODE to 'switcher'.
- Valid values: 'stacked' (all sections visible) or 'switcher' (tabbed).
-*/}
-export const CONTENT_MODE = 'stacked';
-
-export const ContentSwitcher = () => {
- const [selected, setSelected] = useState(() => {
- if (typeof window !== 'undefined') {
- return localStorage.getItem('contentSwitcherTab') || 'goal';
- }
- return 'goal';
- });
-
- const handleSelection = (value) => {
- setSelected(value);
- if (typeof window !== 'undefined') {
- localStorage.setItem('contentSwitcherTab', value);
- }
- };
-
- const showGoal = CONTENT_MODE === 'stacked' || selected === 'goal';
- const showUsecase = CONTENT_MODE === 'stacked' || selected === 'usecase';
- const showProduct = CONTENT_MODE === 'stacked' || selected === 'product';
-
- return (
- <>
- {CONTENT_MODE === 'switcher' && (
-
-
- {selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
-
-
-
- )}
-
- {showGoal && (
- <>
-
-
-
-
-
- }
- links={[
- { label: "What is ClickHouse?", href: "/get-started/about/intro" },
- { label: "Setup/Install", href: "/get-started/install/quick-start-cloud" },
- { label: "Explore quickstarts", href: "/get-started/quickstarts/home" },
- { label: "Migration guides", href: "/get-started/migration-guides/01_overview" },
- { label: "Core concepts & best practices", href: "/concepts/best-practices/index" },
- { label: "Sample datasets", href: "/get-started/sample-datasets/github" }
- ]}
- />
-
-
-
- }
- links={[
- { label: "Data modelling topics", href: "/guides/data_modelling/schema-design" },
- { label: "Performance & query optimization guides", href: "/guides/performance_and_monitoring/query-optimization" },
- { label: "ClickHouse Cloud topics", href: "/guides/cloud/cloud-compatibility" },
- { label: "Self-managed topics", href: "/guides/oss/deployment_and_scaling/terminology" },
- { label: "Use-case guides", href: "/guides/use_case_guides/time-series/time-series-filling-gaps" },
- ]}
- />
-
-
-
- }
- links={[
- { label: "SQL reference", href: "/reference/statements" },
- { label: "Session settings", href: "/reference/settings/session-settings" },
- { label: "Server settings", href: "/reference/settings/server-settings/settings" },
- { label: "Functions", href: "/reference/functions/regular-functions/overview" },
- { label: "Engines", href: "/reference/engines/engines" },
- { label: "System tables", href: "/reference/system-tables" },
- { label: "Formats", href: "/reference/formats/Arrow/Arrow" },
- { label: "Data types", href: "/reference/data-types/int-uint" }
- ]}
- />
-
- >
- )}
-
- {showUsecase && (
- <>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
-
-
-
-
-
- >
- )}
-
- {showProduct && (
- <>
-
-
-
-
-
-
-
-
- >
- )}
- >
- );
-};
-
-
-
-

-

-
-
-
-
- Start building with ClickHouse
-
-
-
- Documentation for the fastest analytics database
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ja/navigation.json b/ja/navigation.json
deleted file mode 100644
index 0735b279f..000000000
--- a/ja/navigation.json
+++ /dev/null
@@ -1,8 +0,0 @@
-[
- {
- "group": "Home",
- "pages": [
- "ja/index"
- ]
- }
-]
diff --git a/ko/index.mdx b/ko/index.mdx
deleted file mode 100644
index 7b0304490..000000000
--- a/ko/index.mdx
+++ /dev/null
@@ -1,435 +0,0 @@
----
-mode: "custom"
-max-toc-depth: 3
-slug: home
-sidebarTitle: "Home"
-icon: "house"
----
-
-export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false, type = 'default', ...props}) => {
- return (
-
- {options.map(({ value, label, ...buttonProps }) => (
-
- ))}
-
- );
-}
-
-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 }) => {
- const [isDark, setIsDark] = useState(false);
-
- useEffect(() => {
- if (typeof window !== 'undefined') {
- const checkDark = () => {
- setIsDark(document.documentElement.classList.contains('dark'));
- };
- checkDark();
- const observer = new MutationObserver(checkDark);
- observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
- return () => observer.disconnect();
- }
- }, []);
-
- const darkFilename = darkFilenameProp || (filename ? filename.replace('-light.', '-dark.') : null);
-
- const cardStyle = {
- padding: '16px 16px 16px 16px',
- borderRadius: '8px',
- backgroundColor: isDark ? '#1b1b18' : '#f9f9f9',
- 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'
- };
-
- const content = (
- <>
- {icon ? (
-
- {icon}
-
- ) : (
- <>
-
-
- >
- )}
-
- {title}
-
- {body ? body : (
- {description}
- )}
- {links && links.length > 0 && (
-
- )}
- {showArrow && (
-
- )}
- >
- );
-
- if (links && links.length > 0) {
- return {content}
;
- }
-
- return { e.preventDefault(); window.location.href = href; }}>{content};
-};
-
-{/*
- To restore the tab switcher, change MODE to 'switcher'.
- Valid values: 'stacked' (all sections visible) or 'switcher' (tabbed).
-*/}
-export const CONTENT_MODE = 'stacked';
-
-export const ContentSwitcher = () => {
- const [selected, setSelected] = useState(() => {
- if (typeof window !== 'undefined') {
- return localStorage.getItem('contentSwitcherTab') || 'goal';
- }
- return 'goal';
- });
-
- const handleSelection = (value) => {
- setSelected(value);
- if (typeof window !== 'undefined') {
- localStorage.setItem('contentSwitcherTab', value);
- }
- };
-
- const showGoal = CONTENT_MODE === 'stacked' || selected === 'goal';
- const showUsecase = CONTENT_MODE === 'stacked' || selected === 'usecase';
- const showProduct = CONTENT_MODE === 'stacked' || selected === 'product';
-
- return (
- <>
- {CONTENT_MODE === 'switcher' && (
-
-
- {selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
-
-
-
- )}
-
- {showGoal && (
- <>
-
-
-
-
-
- }
- links={[
- { label: "What is ClickHouse?", href: "/get-started/about/intro" },
- { label: "Setup/Install", href: "/get-started/install/quick-start-cloud" },
- { label: "Explore quickstarts", href: "/get-started/quickstarts/home" },
- { label: "Migration guides", href: "/get-started/migration-guides/01_overview" },
- { label: "Core concepts & best practices", href: "/concepts/best-practices/index" },
- { label: "Sample datasets", href: "/get-started/sample-datasets/github" }
- ]}
- />
-
-
-
- }
- links={[
- { label: "Data modelling topics", href: "/guides/data_modelling/schema-design" },
- { label: "Performance & query optimization guides", href: "/guides/performance_and_monitoring/query-optimization" },
- { label: "ClickHouse Cloud topics", href: "/guides/cloud/cloud-compatibility" },
- { label: "Self-managed topics", href: "/guides/oss/deployment_and_scaling/terminology" },
- { label: "Use-case guides", href: "/guides/use_case_guides/time-series/time-series-filling-gaps" },
- ]}
- />
-
-
-
- }
- links={[
- { label: "SQL reference", href: "/reference/statements" },
- { label: "Session settings", href: "/reference/settings/session-settings" },
- { label: "Server settings", href: "/reference/settings/server-settings/settings" },
- { label: "Functions", href: "/reference/functions/regular-functions/overview" },
- { label: "Engines", href: "/reference/engines/engines" },
- { label: "System tables", href: "/reference/system-tables" },
- { label: "Formats", href: "/reference/formats/Arrow/Arrow" },
- { label: "Data types", href: "/reference/data-types/int-uint" }
- ]}
- />
-
- >
- )}
-
- {showUsecase && (
- <>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
-
-
-
-
-
- >
- )}
-
- {showProduct && (
- <>
-
-
-
-
-
-
-
-
- >
- )}
- >
- );
-};
-
-
-
-

-

-
-
-
-
- Start building with ClickHouse
-
-
-
- Documentation for the fastest analytics database
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ko/navigation.json b/ko/navigation.json
deleted file mode 100644
index cf4e816a0..000000000
--- a/ko/navigation.json
+++ /dev/null
@@ -1,8 +0,0 @@
-[
- {
- "group": "Home",
- "pages": [
- "ko/index"
- ]
- }
-]
diff --git a/pt-br/index.mdx b/pt-br/index.mdx
deleted file mode 100644
index 7b0304490..000000000
--- a/pt-br/index.mdx
+++ /dev/null
@@ -1,435 +0,0 @@
----
-mode: "custom"
-max-toc-depth: 3
-slug: home
-sidebarTitle: "Home"
-icon: "house"
----
-
-export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false, type = 'default', ...props}) => {
- return (
-
- {options.map(({ value, label, ...buttonProps }) => (
-
- ))}
-
- );
-}
-
-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 }) => {
- const [isDark, setIsDark] = useState(false);
-
- useEffect(() => {
- if (typeof window !== 'undefined') {
- const checkDark = () => {
- setIsDark(document.documentElement.classList.contains('dark'));
- };
- checkDark();
- const observer = new MutationObserver(checkDark);
- observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
- return () => observer.disconnect();
- }
- }, []);
-
- const darkFilename = darkFilenameProp || (filename ? filename.replace('-light.', '-dark.') : null);
-
- const cardStyle = {
- padding: '16px 16px 16px 16px',
- borderRadius: '8px',
- backgroundColor: isDark ? '#1b1b18' : '#f9f9f9',
- 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'
- };
-
- const content = (
- <>
- {icon ? (
-
- {icon}
-
- ) : (
- <>
-
-
- >
- )}
-
- {title}
-
- {body ? body : (
- {description}
- )}
- {links && links.length > 0 && (
-
- )}
- {showArrow && (
-
- )}
- >
- );
-
- if (links && links.length > 0) {
- return {content}
;
- }
-
- return { e.preventDefault(); window.location.href = href; }}>{content};
-};
-
-{/*
- To restore the tab switcher, change MODE to 'switcher'.
- Valid values: 'stacked' (all sections visible) or 'switcher' (tabbed).
-*/}
-export const CONTENT_MODE = 'stacked';
-
-export const ContentSwitcher = () => {
- const [selected, setSelected] = useState(() => {
- if (typeof window !== 'undefined') {
- return localStorage.getItem('contentSwitcherTab') || 'goal';
- }
- return 'goal';
- });
-
- const handleSelection = (value) => {
- setSelected(value);
- if (typeof window !== 'undefined') {
- localStorage.setItem('contentSwitcherTab', value);
- }
- };
-
- const showGoal = CONTENT_MODE === 'stacked' || selected === 'goal';
- const showUsecase = CONTENT_MODE === 'stacked' || selected === 'usecase';
- const showProduct = CONTENT_MODE === 'stacked' || selected === 'product';
-
- return (
- <>
- {CONTENT_MODE === 'switcher' && (
-
-
- {selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
-
-
-
- )}
-
- {showGoal && (
- <>
-
-
-
-
-
- }
- links={[
- { label: "What is ClickHouse?", href: "/get-started/about/intro" },
- { label: "Setup/Install", href: "/get-started/install/quick-start-cloud" },
- { label: "Explore quickstarts", href: "/get-started/quickstarts/home" },
- { label: "Migration guides", href: "/get-started/migration-guides/01_overview" },
- { label: "Core concepts & best practices", href: "/concepts/best-practices/index" },
- { label: "Sample datasets", href: "/get-started/sample-datasets/github" }
- ]}
- />
-
-
-
- }
- links={[
- { label: "Data modelling topics", href: "/guides/data_modelling/schema-design" },
- { label: "Performance & query optimization guides", href: "/guides/performance_and_monitoring/query-optimization" },
- { label: "ClickHouse Cloud topics", href: "/guides/cloud/cloud-compatibility" },
- { label: "Self-managed topics", href: "/guides/oss/deployment_and_scaling/terminology" },
- { label: "Use-case guides", href: "/guides/use_case_guides/time-series/time-series-filling-gaps" },
- ]}
- />
-
-
-
- }
- links={[
- { label: "SQL reference", href: "/reference/statements" },
- { label: "Session settings", href: "/reference/settings/session-settings" },
- { label: "Server settings", href: "/reference/settings/server-settings/settings" },
- { label: "Functions", href: "/reference/functions/regular-functions/overview" },
- { label: "Engines", href: "/reference/engines/engines" },
- { label: "System tables", href: "/reference/system-tables" },
- { label: "Formats", href: "/reference/formats/Arrow/Arrow" },
- { label: "Data types", href: "/reference/data-types/int-uint" }
- ]}
- />
-
- >
- )}
-
- {showUsecase && (
- <>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
-
-
-
-
-
- >
- )}
-
- {showProduct && (
- <>
-
-
-
-
-
-
-
-
- >
- )}
- >
- );
-};
-
-
-
-

-

-
-
-
-
- Start building with ClickHouse
-
-
-
- Documentation for the fastest analytics database
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pt-br/navigation.json b/pt-br/navigation.json
deleted file mode 100644
index 8821bdd86..000000000
--- a/pt-br/navigation.json
+++ /dev/null
@@ -1,8 +0,0 @@
-[
- {
- "group": "Home",
- "pages": [
- "pt-br/index"
- ]
- }
-]
diff --git a/ru/index.mdx b/ru/index.mdx
deleted file mode 100644
index 7b0304490..000000000
--- a/ru/index.mdx
+++ /dev/null
@@ -1,435 +0,0 @@
----
-mode: "custom"
-max-toc-depth: 3
-slug: home
-sidebarTitle: "Home"
-icon: "house"
----
-
-export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false, type = 'default', ...props}) => {
- return (
-
- {options.map(({ value, label, ...buttonProps }) => (
-
- ))}
-
- );
-}
-
-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 }) => {
- const [isDark, setIsDark] = useState(false);
-
- useEffect(() => {
- if (typeof window !== 'undefined') {
- const checkDark = () => {
- setIsDark(document.documentElement.classList.contains('dark'));
- };
- checkDark();
- const observer = new MutationObserver(checkDark);
- observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
- return () => observer.disconnect();
- }
- }, []);
-
- const darkFilename = darkFilenameProp || (filename ? filename.replace('-light.', '-dark.') : null);
-
- const cardStyle = {
- padding: '16px 16px 16px 16px',
- borderRadius: '8px',
- backgroundColor: isDark ? '#1b1b18' : '#f9f9f9',
- 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'
- };
-
- const content = (
- <>
- {icon ? (
-
- {icon}
-
- ) : (
- <>
-
-
- >
- )}
-
- {title}
-
- {body ? body : (
- {description}
- )}
- {links && links.length > 0 && (
-
- )}
- {showArrow && (
-
- )}
- >
- );
-
- if (links && links.length > 0) {
- return {content}
;
- }
-
- return { e.preventDefault(); window.location.href = href; }}>{content};
-};
-
-{/*
- To restore the tab switcher, change MODE to 'switcher'.
- Valid values: 'stacked' (all sections visible) or 'switcher' (tabbed).
-*/}
-export const CONTENT_MODE = 'stacked';
-
-export const ContentSwitcher = () => {
- const [selected, setSelected] = useState(() => {
- if (typeof window !== 'undefined') {
- return localStorage.getItem('contentSwitcherTab') || 'goal';
- }
- return 'goal';
- });
-
- const handleSelection = (value) => {
- setSelected(value);
- if (typeof window !== 'undefined') {
- localStorage.setItem('contentSwitcherTab', value);
- }
- };
-
- const showGoal = CONTENT_MODE === 'stacked' || selected === 'goal';
- const showUsecase = CONTENT_MODE === 'stacked' || selected === 'usecase';
- const showProduct = CONTENT_MODE === 'stacked' || selected === 'product';
-
- return (
- <>
- {CONTENT_MODE === 'switcher' && (
-
-
- {selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
-
-
-
- )}
-
- {showGoal && (
- <>
-
-
-
-
-
- }
- links={[
- { label: "What is ClickHouse?", href: "/get-started/about/intro" },
- { label: "Setup/Install", href: "/get-started/install/quick-start-cloud" },
- { label: "Explore quickstarts", href: "/get-started/quickstarts/home" },
- { label: "Migration guides", href: "/get-started/migration-guides/01_overview" },
- { label: "Core concepts & best practices", href: "/concepts/best-practices/index" },
- { label: "Sample datasets", href: "/get-started/sample-datasets/github" }
- ]}
- />
-
-
-
- }
- links={[
- { label: "Data modelling topics", href: "/guides/data_modelling/schema-design" },
- { label: "Performance & query optimization guides", href: "/guides/performance_and_monitoring/query-optimization" },
- { label: "ClickHouse Cloud topics", href: "/guides/cloud/cloud-compatibility" },
- { label: "Self-managed topics", href: "/guides/oss/deployment_and_scaling/terminology" },
- { label: "Use-case guides", href: "/guides/use_case_guides/time-series/time-series-filling-gaps" },
- ]}
- />
-
-
-
- }
- links={[
- { label: "SQL reference", href: "/reference/statements" },
- { label: "Session settings", href: "/reference/settings/session-settings" },
- { label: "Server settings", href: "/reference/settings/server-settings/settings" },
- { label: "Functions", href: "/reference/functions/regular-functions/overview" },
- { label: "Engines", href: "/reference/engines/engines" },
- { label: "System tables", href: "/reference/system-tables" },
- { label: "Formats", href: "/reference/formats/Arrow/Arrow" },
- { label: "Data types", href: "/reference/data-types/int-uint" }
- ]}
- />
-
- >
- )}
-
- {showUsecase && (
- <>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
-
-
-
-
-
- >
- )}
-
- {showProduct && (
- <>
-
-
-
-
-
-
-
-
- >
- )}
- >
- );
-};
-
-
-
-

-

-
-
-
-
- Start building with ClickHouse
-
-
-
- Documentation for the fastest analytics database
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ru/navigation.json b/ru/navigation.json
deleted file mode 100644
index b4df07ada..000000000
--- a/ru/navigation.json
+++ /dev/null
@@ -1,8 +0,0 @@
-[
- {
- "group": "Home",
- "pages": [
- "ru/index"
- ]
- }
-]
diff --git a/zh/index.mdx b/zh/index.mdx
deleted file mode 100644
index 7b0304490..000000000
--- a/zh/index.mdx
+++ /dev/null
@@ -1,435 +0,0 @@
----
-mode: "custom"
-max-toc-depth: 3
-slug: home
-sidebarTitle: "Home"
-icon: "house"
----
-
-export const ButtonGroup = ({options = [], selected, onClick, fillWidth = false, type = 'default', ...props}) => {
- return (
-
- {options.map(({ value, label, ...buttonProps }) => (
-
- ))}
-
- );
-}
-
-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 }) => {
- const [isDark, setIsDark] = useState(false);
-
- useEffect(() => {
- if (typeof window !== 'undefined') {
- const checkDark = () => {
- setIsDark(document.documentElement.classList.contains('dark'));
- };
- checkDark();
- const observer = new MutationObserver(checkDark);
- observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
- return () => observer.disconnect();
- }
- }, []);
-
- const darkFilename = darkFilenameProp || (filename ? filename.replace('-light.', '-dark.') : null);
-
- const cardStyle = {
- padding: '16px 16px 16px 16px',
- borderRadius: '8px',
- backgroundColor: isDark ? '#1b1b18' : '#f9f9f9',
- 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'
- };
-
- const content = (
- <>
- {icon ? (
-
- {icon}
-
- ) : (
- <>
-
-
- >
- )}
-
- {title}
-
- {body ? body : (
- {description}
- )}
- {links && links.length > 0 && (
-
- )}
- {showArrow && (
-
- )}
- >
- );
-
- if (links && links.length > 0) {
- return {content}
;
- }
-
- return { e.preventDefault(); window.location.href = href; }}>{content};
-};
-
-{/*
- To restore the tab switcher, change MODE to 'switcher'.
- Valid values: 'stacked' (all sections visible) or 'switcher' (tabbed).
-*/}
-export const CONTENT_MODE = 'stacked';
-
-export const ContentSwitcher = () => {
- const [selected, setSelected] = useState(() => {
- if (typeof window !== 'undefined') {
- return localStorage.getItem('contentSwitcherTab') || 'goal';
- }
- return 'goal';
- });
-
- const handleSelection = (value) => {
- setSelected(value);
- if (typeof window !== 'undefined') {
- localStorage.setItem('contentSwitcherTab', value);
- }
- };
-
- const showGoal = CONTENT_MODE === 'stacked' || selected === 'goal';
- const showUsecase = CONTENT_MODE === 'stacked' || selected === 'usecase';
- const showProduct = CONTENT_MODE === 'stacked' || selected === 'product';
-
- return (
- <>
- {CONTENT_MODE === 'switcher' && (
-
-
- {selected === 'goal' && 'Explore by goal'}
- {selected === 'product' && 'Explore by product area'}
-
-
-
- )}
-
- {showGoal && (
- <>
-
-
-
-
-
- }
- links={[
- { label: "What is ClickHouse?", href: "/get-started/about/intro" },
- { label: "Setup/Install", href: "/get-started/install/quick-start-cloud" },
- { label: "Explore quickstarts", href: "/get-started/quickstarts/home" },
- { label: "Migration guides", href: "/get-started/migration-guides/01_overview" },
- { label: "Core concepts & best practices", href: "/concepts/best-practices/index" },
- { label: "Sample datasets", href: "/get-started/sample-datasets/github" }
- ]}
- />
-
-
-
- }
- links={[
- { label: "Data modelling topics", href: "/guides/data_modelling/schema-design" },
- { label: "Performance & query optimization guides", href: "/guides/performance_and_monitoring/query-optimization" },
- { label: "ClickHouse Cloud topics", href: "/guides/cloud/cloud-compatibility" },
- { label: "Self-managed topics", href: "/guides/oss/deployment_and_scaling/terminology" },
- { label: "Use-case guides", href: "/guides/use_case_guides/time-series/time-series-filling-gaps" },
- ]}
- />
-
-
-
- }
- links={[
- { label: "SQL reference", href: "/reference/statements" },
- { label: "Session settings", href: "/reference/settings/session-settings" },
- { label: "Server settings", href: "/reference/settings/server-settings/settings" },
- { label: "Functions", href: "/reference/functions/regular-functions/overview" },
- { label: "Engines", href: "/reference/engines/engines" },
- { label: "System tables", href: "/reference/system-tables" },
- { label: "Formats", href: "/reference/formats/Arrow/Arrow" },
- { label: "Data types", href: "/reference/data-types/int-uint" }
- ]}
- />
-
- >
- )}
-
- {showUsecase && (
- <>
-
- Explore by use case
- Discover how ClickHouse powers real-time analytics, observability, data warehousing, and agentic AI at any scale.
-
-
-
-
-
-
- >
- )}
-
- {showProduct && (
- <>
-
-
-
-
-
-
-
-
- >
- )}
- >
- );
-};
-
-
-
-

-

-
-
-
-
- Start building with ClickHouse
-
-
-
- Documentation for the fastest analytics database
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/zh/navigation.json b/zh/navigation.json
deleted file mode 100644
index 12a40dda9..000000000
--- a/zh/navigation.json
+++ /dev/null
@@ -1,8 +0,0 @@
-[
- {
- "group": "Home",
- "pages": [
- "zh/index"
- ]
- }
-]