@@ -34,6 +34,8 @@ import { RectangleStackIcon } from "@heroicons/react/20/solid";
3434import  {  Badge  }  from  "~/components/primitives/Badge" ; 
3535import  {  RunTagInput  }  from  "./RunTagInput" ; 
3636import  {  MachinePresetName  }  from  "@trigger.dev/core/v3" ; 
37+ import  {  InfoIconTooltip  }  from  "~/components/primitives/Tooltip" ; 
38+ import  {  divide  }  from  "effect/Duration" ; 
3739
3840type  ReplayRunDialogProps  =  { 
3941  runFriendlyId : string ; 
@@ -165,7 +167,7 @@ function ReplayForm({
165167    replayData . payloadType  ===  "application/json"  || 
166168    replayData . payloadType  ===  "application/super+json" ; 
167169
168-   const  [ tab ,  setTab ]  =  useState < "payload"  |  "metadata" > ( "payload" ) ; 
170+   const  [ tab ,  setTab ]  =  useState < "payload"  |  "metadata" > ( editablePayload  ?  "payload"   :  "metadata ") ; 
169171
170172  const  {  defaultTaskQueue }  =  replayData ; 
171173
@@ -257,15 +259,30 @@ function ReplayForm({
257259              additionalActions = { 
258260                < TabContainer  className = "flex grow items-baseline justify-between self-end border-none" > 
259261                  < div  className = "flex gap-5" > 
260-                     < TabButton 
261-                       isActive = { tab  ===  "payload" } 
262-                       layoutId = "replay-editor" 
263-                       onClick = { ( )  =>  { 
264-                         setTab ( "payload" ) ; 
265-                       } } 
266-                     > 
267-                       Payload
268-                     </ TabButton > 
262+                     < div  className = "flex items-center gap-1.5" > 
263+                       < TabButton 
264+                         disabled = { ! editablePayload } 
265+                         isActive = { tab  ===  "payload" } 
266+                         layoutId = "replay-editor" 
267+                         onClick = { ( )  =>  { 
268+                           setTab ( "payload" ) ; 
269+                         } } 
270+                       > 
271+                         Payload
272+                       </ TabButton > 
273+                       { ! editablePayload  &&  ( 
274+                         < InfoIconTooltip 
275+                           content = { 
276+                             < span  className = "text-sm" > 
277+                               Payload is not editable for runs with{ " " } 
278+                               < TextLink  to = { docsPath ( "triggering#large-payloads" ) } > 
279+                                 large payloads.
280+                               </ TextLink > 
281+                             </ span > 
282+                           } 
283+                         /> 
284+                       ) } 
285+                     </ div > 
269286                    < TabButton 
270287                      isActive = { tab  ===  "metadata" } 
271288                      layoutId = "replay-editor" 
0 commit comments