1+ import { ArrowRightIcon } from "@heroicons/react/20/solid" ;
12import { Form } from "@remix-run/react" ;
23import { type ActionFunctionArgs , type LoaderFunctionArgs } from "@remix-run/server-runtime" ;
34import { tryCatch } from "@trigger.dev/core" ;
@@ -225,7 +226,7 @@ export default function Page() {
225226 Default
226227 </ Badge >
227228 ) : (
228- < SetDefaultDialog region = { region } />
229+ < SetDefaultDialog regions = { regions } newDefaultRegion = { region } />
229230 )
230231 }
231232 />
@@ -244,8 +245,15 @@ export default function Page() {
244245 ) ;
245246}
246247
247- function SetDefaultDialog ( { region } : { region : Region } ) {
248+ function SetDefaultDialog ( {
249+ regions,
250+ newDefaultRegion,
251+ } : {
252+ regions : Region [ ] ;
253+ newDefaultRegion : Region ;
254+ } ) {
248255 const [ isOpen , setIsOpen ] = useState ( false ) ;
256+ const currentDefaultRegion = regions . find ( ( r ) => r . isDefault ) ;
249257
250258 return (
251259 < Dialog open = { isOpen } onOpenChange = { setIsOpen } >
@@ -254,21 +262,104 @@ function SetDefaultDialog({ region }: { region: Region }) {
254262 </ DialogTrigger >
255263 < DialogContent >
256264 < DialogHeader >
257- < DialogTitle > Set as default</ DialogTitle >
265+ < DialogTitle > Set as default region </ DialogTitle >
258266 </ DialogHeader >
259267 < DialogDescription >
260268 < Paragraph >
261- When you trigger a run it will execute in your default region, unless you{ " " }
262- < TextLink to = { docsPath ( "triggering#region" ) } > specify a region when triggering</ TextLink >
263- .
269+ Are you sure you want to set { newDefaultRegion . name } as your default region?
270+ </ Paragraph >
271+
272+ < div className = "my-4 flex" >
273+ < div className = "flex flex-1 flex-col rounded-md border border-grid-dimmed" >
274+ < div className = "border-b border-grid-dimmed bg-charcoal-800 p-3 font-medium" >
275+ < Paragraph variant = "small/bright" > Current default</ Paragraph >
276+ </ div >
277+ < div className = "border-b border-grid-dimmed p-3" >
278+ < Paragraph variant = "small" > { currentDefaultRegion ?. name ?? "–" } </ Paragraph >
279+ </ div >
280+ < div className = "border-b border-grid-dimmed p-3" >
281+ < Paragraph variant = "small" className = "flex items-center gap-2" >
282+ { currentDefaultRegion ?. cloudProvider ? (
283+ < >
284+ < CloudProviderIcon
285+ provider = { currentDefaultRegion . cloudProvider }
286+ className = "size-6"
287+ />
288+ { cloudProviderTitle ( currentDefaultRegion . cloudProvider ) }
289+ </ >
290+ ) : (
291+ "–"
292+ ) }
293+ </ Paragraph >
294+ </ div >
295+ < div className = "p-3" >
296+ < Paragraph variant = "small" className = "flex items-center gap-2" >
297+ { currentDefaultRegion ?. location ? (
298+ < FlagIcon region = { currentDefaultRegion . location } className = "size-5" />
299+ ) : null }
300+ { currentDefaultRegion ?. description ?? "–" }
301+ </ Paragraph >
302+ </ div >
303+ </ div >
304+
305+ { /* Middle column with arrow */ }
306+ < div className = "flex items-center justify-center px-3" >
307+ < div className = "flex size-10 items-center justify-center rounded-full border border-grid-dimmed bg-charcoal-800 p-2" >
308+ < ArrowRightIcon className = "size-4 text-text-dimmed" />
309+ </ div >
310+ </ div >
311+
312+ { /* Right column */ }
313+ < div className = "flex flex-1 flex-col rounded-md border border-grid-dimmed" >
314+ < div className = "border-b border-grid-dimmed bg-charcoal-800 p-3 font-medium" >
315+ < Paragraph variant = "small/bright" > New default</ Paragraph >
316+ </ div >
317+ < div className = "border-b border-grid-dimmed p-3" >
318+ < Paragraph variant = "small" > { newDefaultRegion . name } </ Paragraph >
319+ </ div >
320+ < div className = "border-b border-grid-dimmed p-3" >
321+ < Paragraph variant = "small" className = "flex items-center gap-2" >
322+ { newDefaultRegion . cloudProvider ? (
323+ < >
324+ < CloudProviderIcon
325+ provider = { newDefaultRegion . cloudProvider }
326+ className = "size-6"
327+ />
328+ { cloudProviderTitle ( newDefaultRegion . cloudProvider ) }
329+ </ >
330+ ) : (
331+ "–"
332+ ) }
333+ </ Paragraph >
334+ </ div >
335+ < div className = "p-3" >
336+ < Paragraph variant = "small" className = "flex items-center gap-2" >
337+ { newDefaultRegion . location ? (
338+ < FlagIcon region = { newDefaultRegion . location } className = "size-5" />
339+ ) : null }
340+ { newDefaultRegion . description ?? "–" }
341+ </ Paragraph >
342+ </ div >
343+ </ div >
344+ </ div >
345+
346+ < Paragraph >
347+ Runs triggered from now on will execute in "{ newDefaultRegion . name } ", unless you{ " " }
348+ < TextLink to = { docsPath ( "triggering#region" ) } > override when triggering</ TextLink > .
264349 </ Paragraph >
265350 </ DialogDescription >
266351 < DialogFooter >
267- < Button variant = "secondary/small " onClick = { ( ) => setIsOpen ( false ) } >
352+ < Button variant = "secondary/medium " onClick = { ( ) => setIsOpen ( false ) } >
268353 Cancel
269354 </ Button >
270355 < Form method = "post" >
271- < Button variant = "secondary/small" type = "submit" name = "regionId" value = { region . id } >
356+ < Button
357+ variant = "primary/medium"
358+ type = "submit"
359+ name = "regionId"
360+ shortcut = { { modifiers : [ "mod" ] , key : "enter" } }
361+ value = { newDefaultRegion . id }
362+ >
272363 Set as default
273364 </ Button >
274365 </ Form >
0 commit comments