From bf20ac5007b88623760d05f8f6aecbf7e1f34791 Mon Sep 17 00:00:00 2001 From: Fernando Aviles Date: Tue, 9 Jun 2026 18:15:36 -0700 Subject: [PATCH] feat: set up docs of Locadex --- es/index.mdx | 435 ------------------------------------------ es/navigation.json | 8 - gt.config.json | 121 ++++++++++++ ja/index.mdx | 435 ------------------------------------------ ja/navigation.json | 8 - ko/index.mdx | 435 ------------------------------------------ ko/navigation.json | 8 - pt-br/index.mdx | 435 ------------------------------------------ pt-br/navigation.json | 8 - ru/index.mdx | 435 ------------------------------------------ ru/navigation.json | 8 - zh/index.mdx | 435 ------------------------------------------ zh/navigation.json | 8 - 13 files changed, 121 insertions(+), 2658 deletions(-) delete mode 100644 es/index.mdx delete mode 100644 es/navigation.json create mode 100644 gt.config.json delete mode 100644 ja/index.mdx delete mode 100644 ja/navigation.json delete mode 100644 ko/index.mdx delete mode 100644 ko/navigation.json delete mode 100644 pt-br/index.mdx delete mode 100644 pt-br/navigation.json delete mode 100644 ru/index.mdx delete mode 100644 ru/navigation.json delete mode 100644 zh/index.mdx delete mode 100644 zh/navigation.json 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} - {title} - - )} -

- {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 && ( - <> -
- - - - - - -
- - )} - - ); -}; - -
-
- Decorative background image. - Decorative background image. -
- -
-

- Start building with ClickHouse -

- -
- Documentation for the fastest analytics database -
- -
- - -
- -
- Get started with ClickHouse Cloud → -

Cannot find what you are searching for? Check out our support center.

-
- -
-
- 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} - {title} - - )} -

- {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 && ( - <> -
- - - - - - -
- - )} - - ); -}; - -
-
- Decorative background image. - Decorative background image. -
- -
-

- Start building with ClickHouse -

- -
- Documentation for the fastest analytics database -
- -
- - -
- -
- Get started with ClickHouse Cloud → -

Cannot find what you are searching for? Check out our support center.

-
- -
-
- 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} - {title} - - )} -

- {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 && ( - <> -
- - - - - - -
- - )} - - ); -}; - -
-
- Decorative background image. - Decorative background image. -
- -
-

- Start building with ClickHouse -

- -
- Documentation for the fastest analytics database -
- -
- - -
- -
- Get started with ClickHouse Cloud → -

Cannot find what you are searching for? Check out our support center.

-
- -
-
- 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} - {title} - - )} -

- {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 && ( - <> -
- - - - - - -
- - )} - - ); -}; - -
-
- Decorative background image. - Decorative background image. -
- -
-

- Start building with ClickHouse -

- -
- Documentation for the fastest analytics database -
- -
- - -
- -
- Get started with ClickHouse Cloud → -

Cannot find what you are searching for? Check out our support center.

-
- -
-
- 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} - {title} - - )} -

- {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 && ( - <> -
- - - - - - -
- - )} - - ); -}; - -
-
- Decorative background image. - Decorative background image. -
- -
-

- Start building with ClickHouse -

- -
- Documentation for the fastest analytics database -
- -
- - -
- -
- Get started with ClickHouse Cloud → -

Cannot find what you are searching for? Check out our support center.

-
- -
-
- 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} - {title} - - )} -

- {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 && ( - <> -
- - - - - - -
- - )} - - ); -}; - -
-
- Decorative background image. - Decorative background image. -
- -
-

- Start building with ClickHouse -

- -
- Documentation for the fastest analytics database -
- -
- - -
- -
- Get started with ClickHouse Cloud → -

Cannot find what you are searching for? Check out our support center.

-
- -
-
- 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" - ] - } -]