import { AnimatePresence, motion } from 'framer-motion' import { Box, Clock, Database, File, ListOrdered, User2, Zap } from 'lucide-react' import { memo } from 'react' import { SchemaVisualizer } from 'components/interfaces/SchemaVisualizer' import { BASE_PATH } from 'lib/constants' import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from 'ui' interface SupabaseService { name: 'Auth' | 'Storage' | 'Database' | 'Edge Function' | 'Cron' | 'Queues' | 'Vector' reason: string } interface ProjectVisualProps { sqlStatements: string[] showInfo: boolean services: SupabaseService[] selectedRegion: { name: string location: { latitude: number; longitude: number } code: string displayName: string } | null projectDetails: { dbRegion: string cloudProvider: string postgresVersion: string } } const arePropsEqual = (prevProps: ProjectVisualProps, nextProps: ProjectVisualProps) => { return ( prevProps.sqlStatements.length === nextProps.sqlStatements.length && prevProps.showInfo === nextProps.showInfo && prevProps.services.length === nextProps.services.length && prevProps.selectedRegion?.name === nextProps.selectedRegion?.name && prevProps.projectDetails.dbRegion === nextProps.projectDetails.dbRegion && prevProps.projectDetails.cloudProvider === nextProps.projectDetails.cloudProvider && prevProps.projectDetails.postgresVersion === nextProps.projectDetails.postgresVersion ) } export const ProjectVisual = memo( ({ sqlStatements, showInfo = true, services, selectedRegion, projectDetails, }: ProjectVisualProps) => { const variants = { center: { scale: 1, opacity: 1, top: '50%', right: '50%', x: '50%', y: '-70%', }, corner: { scale: 1, opacity: 1, top: '3%', right: '3%', x: '0%', y: '0%', }, } const currentVariant = showInfo ? (sqlStatements.length > 0 ? 'corner' : 'center') : 'hidden' return (
Primary Database
{projectDetails.dbRegion}
{projectDetails.cloudProvider} • {projectDetails.postgresVersion}