@@ -2,6 +2,7 @@ import { faVercel, Icon } from "@rivet-gg/icons";
22import {
33 useMutation ,
44 usePrefetchInfiniteQuery ,
5+ useQuery ,
56 useSuspenseInfiniteQuery ,
67} from "@tanstack/react-query" ;
78import confetti from "canvas-confetti" ;
@@ -19,7 +20,8 @@ import { type Region, useEngineCompatDataProvider } from "@/components/actors";
1920import { queryClient } from "@/queries/global" ;
2021import { StepperForm } from "../forms/stepper-form" ;
2122import { VERCEL_SERVERLESS_MAX_DURATION } from "./connect-vercel-frame" ;
22- import { EnvVariablesStep } from "./connect-railway-frame" ;
23+ import { EnvVariablesStep , useSelectedDatacenter } from "./connect-railway-frame" ;
24+ import { useMemo } from "react" ;
2325
2426const { stepper } = ConnectVercelForm ;
2527
@@ -134,15 +136,45 @@ function FormStepper({
134136 ) ;
135137}
136138
139+ const useVercelTemplateLink = ( ) => {
140+ const dataProvider = useEngineCompatDataProvider ( ) ;
141+ const { data : token } = useQuery (
142+ dataProvider . engineAdminTokenQueryOptions ( ) ,
143+ ) ;
144+ const endpoint = useSelectedDatacenter ( ) ;
145+
146+
147+ return useMemo ( ( ) => {
148+ const repositoryUrl = "https://github.com/rivet-dev/template-vercel" ;
149+ const env = [
150+ "NEXT_PUBLIC_RIVET_ENDPOINT" ,
151+ "NEXT_PUBLIC_RIVET_TOKEN" ,
152+ "NEXT_PUBLIC_RIVET_NAMESPACE" ,
153+ ] . join ( "," ) ;
154+ const projectName = "rivetkit-vercel" ;
155+ const envDefaults = {
156+ NEXT_PUBLIC_RIVET_ENDPOINT : endpoint ,
157+ NEXT_PUBLIC_RIVET_TOKEN : token ,
158+ NEXT_PUBLIC_RIVET_NAMESPACE : dataProvider . engineNamespace ,
159+ } ;
160+
161+ return (
162+ `https://vercel.com/new/clone?repository-url=${ encodeURIComponent ( repositoryUrl ) } &env=${ env } &project-name=${ projectName } &repository-name=${ projectName } &envDefaults=${ encodeURIComponent ( JSON . stringify ( envDefaults ) ) } `
163+ ) ;
164+ } , [ dataProvider . engineNamespace , endpoint , token ] ) ;
165+
166+ } ;
167+
137168function StepInitialInfo ( ) {
169+ const vercelTemplateLink = useVercelTemplateLink ( ) ;
138170 return (
139171 < >
140172 < div className = "space-y-4" >
141173 < p >
142174 Deploy the Rivet Vercel template to get started quickly.
143175 </ p >
144176 < ExternalLinkCard
145- href = "https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Frivet-dev%2Ftemplate-vercel & env = NEXT_PUBLIC_RIVET_ENDPOINT , NEXT_PUBLIC_RIVET_TOKEN , NEXT_PUBLIC_RIVET_NAMESPACE & project-name = rivetkit-vercel & repository-name = rivetkit-vercel "
177+ href = { vercelTemplateLink }
146178 icon = { faVercel }
147179 title = "Deploy Template to Vercel"
148180 />
0 commit comments