From 30fa2b9b7d3ba623d7d1fb5a0e2f229f6fe1c8a6 Mon Sep 17 00:00:00 2001 From: Evan Rusackas Date: Wed, 25 Feb 2026 20:50:20 -0800 Subject: [PATCH] docs: dynamically render database logos on overview page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the static 61-logo HTML block in the overview page with a DatabaseLogoWall component that reads from databases.json — the same data source used by the homepage and README generator. Logos stay in sync automatically without manual updates. Co-Authored-By: Claude Opus 4.6 --- docs/docs/{index.md => index.mdx} | 16 ++++- .../components/databases/DatabaseLogoWall.tsx | 71 +++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) rename docs/docs/{index.md => index.mdx} (98%) create mode 100644 docs/src/components/databases/DatabaseLogoWall.tsx diff --git a/docs/docs/index.md b/docs/docs/index.mdx similarity index 98% rename from docs/docs/index.md rename to docs/docs/index.mdx index 7c480fd476d..681acd6d2d5 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.mdx @@ -2,6 +2,9 @@ hide_title: true sidebar_position: 1 --- + +import DatabaseLogoWall from '@site/src/components/databases/DatabaseLogoWall'; + + + + + + +SUPPORTED_DATABASES_END --> **A more comprehensive list of supported databases** along with the configuration instructions can be found [here](/user-docs/databases/). diff --git a/docs/src/components/databases/DatabaseLogoWall.tsx b/docs/src/components/databases/DatabaseLogoWall.tsx new file mode 100644 index 00000000000..cef72892f47 --- /dev/null +++ b/docs/src/components/databases/DatabaseLogoWall.tsx @@ -0,0 +1,71 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React from 'react'; +import databaseData from '../../data/databases.json'; +import type { DatabaseData } from './types'; + +const typedData = databaseData as DatabaseData; + +const seenLogos = new Set(); +const databases = Object.entries(typedData.databases) + .filter(([, db]) => db.documentation?.logo && db.documentation?.homepage_url) + .sort(([a], [b]) => a.localeCompare(b)) + .filter(([, db]) => { + const logo = db.documentation.logo!; + if (seenLogos.has(logo)) return false; + seenLogos.add(logo); + return true; + }) + .map(([name, db]) => ({ + name, + logo: db.documentation.logo!, + docPath: `/user-docs/databases/supported/${name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '')}`, + })); + +export default function DatabaseLogoWall(): JSX.Element { + return ( +
+ {databases.map(({ name, logo, docPath }) => ( + + {name} + + ))} +
+ ); +}