@@ -3,18 +3,27 @@ import Codebrowser from "@/assets/icons/code-browser.svg?react";
33import ConnectorAdd from "@/assets/icons/connector-add.svg?react" ;
44import Help from "@/assets/icons/help.svg?react" ;
55import { routes } from "@/router/routes" ;
6+ import { Skeleton } from "@zenml-io/react-component-library" ;
67import {
78 Tooltip ,
89 TooltipContent ,
910 TooltipProvider ,
1011 TooltipTrigger
1112} from "@zenml-io/react-component-library/components/client" ;
12- import * as OptionsCard from "./OptionCard" ;
1313import { Link , useSearchParams } from "react-router-dom" ;
14+ import { useServerInfo } from "../../../data/server/info-query" ;
15+ import { checkIsLocalServer } from "../../../lib/server" ;
16+ import { LocalOverlay } from "./LocalOverlay" ;
17+ import * as OptionsCard from "./OptionCard" ;
1418
1519const learnMoreLink = "https://docs.zenml.io/how-to/stack-deployment/deploy-a-cloud-stack" ;
1620
1721export function NewInfrastructure ( ) {
22+ const { isError, isPending, data } = useServerInfo ( ) ;
23+ if ( isPending ) return < Skeleton className = "h-[200px] w-full" /> ;
24+ if ( isError ) return < div > Failed to load server info</ div > ;
25+
26+ const isLocalServer = checkIsLocalServer ( data . deployment_type || "other" ) ;
1827 return (
1928 < section className = "w-full space-y-5" >
2029 < div >
@@ -24,19 +33,24 @@ export function NewInfrastructure() {
2433 </ p >
2534 </ div >
2635 < div className = "grid w-full grid-cols-1 gap-6 md:grid-cols-2" >
27- < InBrowserCard />
28- < TerraformCard />
36+ < InBrowserCard isLocalDeployment = { isLocalServer } />
37+ < TerraformCard isLocalDeployment = { isLocalServer } />
2938 </ div >
3039 </ section >
3140 ) ;
3241}
3342
34- function InBrowserCard ( ) {
43+ type Props = {
44+ isLocalDeployment : boolean ;
45+ } ;
46+
47+ function InBrowserCard ( { isLocalDeployment } : Props ) {
3548 const [ searchParams ] = useSearchParams ( ) ;
3649 const link =
3750 routes . stacks . create . newInfra + ( searchParams . size >= 1 ? `?${ searchParams . toString ( ) } ` : "" ) ;
3851 return (
3952 < div className = "relative" >
53+ { isLocalDeployment && < LocalOverlay /> }
4054 < Link to = { link } >
4155 < OptionsCard . Root >
4256 < OptionsCard . Header >
@@ -101,13 +115,14 @@ function InBrowserCard() {
101115 ) ;
102116}
103117
104- function TerraformCard ( ) {
118+ function TerraformCard ( { isLocalDeployment } : Props ) {
105119 const [ searchParams ] = useSearchParams ( ) ;
106120 const link =
107121 routes . stacks . create . terraform + ( searchParams . size >= 1 ? `?${ searchParams . toString ( ) } ` : "" ) ;
108122
109123 return (
110124 < div className = "relative" >
125+ { isLocalDeployment && < LocalOverlay /> }
111126 < Link to = { link } >
112127 < OptionsCard . Root className = "flex flex-col justify-between space-y-0" >
113128 < div className = "space-y-1" >
0 commit comments