diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationLogo.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationLogo.tsx index c595dd9fcb9..54cf3019961 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationLogo.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationLogo.tsx @@ -4,13 +4,13 @@ import { DestinationIcon } from './DestinationIcon' import type { DestinationType } from './DestinationPanel/DestinationPanel.types' import { BASE_PATH } from '@/lib/constants' -// Destinations with a brand mark. Anything absent falls back to the line icon in the same frame, -// so a new destination type never renders an empty square. -const BRAND_MARK_BY_TYPE: Partial> = { - BigQuery: `${BASE_PATH}/img/icons/bigquery-icon.svg`, - ClickHouse: `${BASE_PATH}/img/icons/clickhouse-icon.svg`, - DuckLake: `${BASE_PATH}/img/icons/ducklake-icon.svg`, - Snowflake: `${BASE_PATH}/img/icons/snowflake-icon.svg`, +type DestinationBrand = { type: 'mark'; src: string } | { type: 'monogram'; label: string } + +const BRAND_BY_TYPE: Partial> = { + BigQuery: { type: 'mark', src: `${BASE_PATH}/img/icons/bigquery-icon.svg` }, + ClickHouse: { type: 'monogram', label: 'CH' }, + DuckLake: { type: 'mark', src: `${BASE_PATH}/img/icons/ducklake-icon.svg` }, + Snowflake: { type: 'monogram', label: 'SF' }, } const SIZE_CLASS_NAME = { @@ -37,15 +37,27 @@ export const DestinationLogo = ({ hasErrors = false, }: DestinationLogoProps) => { const sizing = SIZE_CLASS_NAME[size] - const brandMark = BRAND_MARK_BY_TYPE[type] + const brand = BRAND_BY_TYPE[type] return ( - {brandMark === undefined ? ( + {brand === undefined && ( - ) : ( - + )} + {brand?.type === 'mark' && ( + + )} + {brand?.type === 'monogram' && ( + + {brand.label} + )} {hasErrors && (