@@ -4,6 +4,7 @@ import { memo, type ReactNode, Suspense } from "react";
44import {
55 cn ,
66 Flex ,
7+ ScrollArea ,
78 Tabs ,
89 TabsContent ,
910 TabsList ,
@@ -52,7 +53,7 @@ export const ActorsActorDetails = memo(
5253 return (
5354 < GuardConnectableInspector actorId = { actorId } >
5455 < ActorDetailsSettingsProvider >
55- < div className = "flex flex-col h-full flex-1" >
56+ < div className = "flex flex-col h-full flex-1 @container/actor " >
5657 < ActorTabs
5758 features = { features }
5859 actorId = { actorId }
@@ -133,90 +134,98 @@ export function ActorTabs({
133134 value = { value }
134135 onValueChange = { onTabChange }
135136 defaultValue = { value }
136- className = { cn ( className , "flex-1 min-h-0 min-w-0 flex flex-col " ) }
137+ className = { cn ( className , "flex-1 min-h-0 min-w-0 flex flex-col" ) }
137138 >
138139 < div className = "flex justify-between items-center border-b h-[45px]" >
139- < div className = "flex flex-1 items-center h-full w-full " >
140- < TabsList className = "overflow-auto border-none h-full items-end" >
141- { supportsState ? (
142- < TabsTrigger
143- disabled = { disabled }
144- value = "state"
145- className = "text-xs px-3 py-1 pb-2"
140+ < ScrollArea
141+ className = "h-full items-end"
142+ viewportProps = { {
143+ className : "h-full [&>div]:h-full" ,
144+ } }
145+ >
146+ < div className = "flex flex-1 items-center h-full w-full relative" >
147+ < TabsList className = "border-none h-full items-safe-end w-full flex-nowrap mr-2.5" >
148+ { supportsState ? (
149+ < TabsTrigger
150+ disabled = { disabled }
151+ value = "state"
152+ className = "text-xs px-3 py-1 pb-3"
153+ >
154+ State
155+ </ TabsTrigger >
156+ ) : null }
157+ { supportsConnections ? (
158+ < TabsTrigger
159+ disabled = { disabled }
160+ value = "connections"
161+ className = "text-xs px-3 py-1 pb-3"
162+ >
163+ Connections
164+ </ TabsTrigger >
165+ ) : null }
166+ { supportsEvents ? (
167+ < TabsTrigger
168+ disabled = { disabled }
169+ value = "events"
170+ className = "text-xs px-3 py-1 pb-3"
171+ >
172+ Events
173+ </ TabsTrigger >
174+ ) : null }
175+ { supportsDatabase ? (
176+ < TabsTrigger
177+ disabled = { disabled }
178+ value = "database"
179+ className = "text-xs px-3 py-1 pb-3"
180+ >
181+ Database
182+ </ TabsTrigger >
183+ ) : null }
184+ { supportsLogs ? (
185+ < TabsTrigger
186+ disabled = { disabled }
187+ value = "logs"
188+ className = "text-xs px-3 py-1 pb-3"
189+ >
190+ Logs
191+ </ TabsTrigger >
192+ ) : null }
193+ { supportsMetadata ? (
194+ < TabsTrigger
195+ disabled = { disabled }
196+ value = "metadata"
197+ className = "text-xs px-3 py-1 pb-3"
198+ >
199+ Metadata
200+ </ TabsTrigger >
201+ ) : null }
202+ { supportsMetrics ? (
203+ < TabsTrigger
204+ disabled = { disabled }
205+ value = "metrics"
206+ className = "text-xs px-3 py-1 pb-3"
207+ >
208+ Metrics
209+ </ TabsTrigger >
210+ ) : null }
211+ </ TabsList >
212+ { actorId ? (
213+ < Flex
214+ gap = "2"
215+ justify = "between"
216+ items = "center"
217+ className = "h-full pb-3 pt-2 pr-4 sticky right-0 bg-card"
146218 >
147- State
148- </ TabsTrigger >
219+ < div className = "w-4 bg-gradient-to-r from-transparent to-card absolute inset-y-0 left-0 -translate-x-full" />
220+ < QueriedActorStatus
221+ className = "min-h-7 text-sm h-auto [&_[data-slot=status-label]]:hidden @lg:[&_[data-slot=status-label]]:inline-block"
222+ actorId = { actorId }
223+ />
224+ < ActorStopButton actorId = { actorId } />
225+ </ Flex >
149226 ) : null }
150- { supportsConnections ? (
151- < TabsTrigger
152- disabled = { disabled }
153- value = "connections"
154- className = "text-xs px-3 py-1 pb-2"
155- >
156- Connections
157- </ TabsTrigger >
158- ) : null }
159- { supportsEvents ? (
160- < TabsTrigger
161- disabled = { disabled }
162- value = "events"
163- className = "text-xs px-3 py-1 pb-2"
164- >
165- Events
166- </ TabsTrigger >
167- ) : null }
168- { supportsDatabase ? (
169- < TabsTrigger
170- disabled = { disabled }
171- value = "database"
172- className = "text-xs px-3 py-1 pb-2"
173- >
174- Database
175- </ TabsTrigger >
176- ) : null }
177- { supportsLogs ? (
178- < TabsTrigger
179- disabled = { disabled }
180- value = "logs"
181- className = "text-xs px-3 py-1 pb-2"
182- >
183- Logs
184- </ TabsTrigger >
185- ) : null }
186- { supportsMetadata ? (
187- < TabsTrigger
188- disabled = { disabled }
189- value = "metadata"
190- className = "text-xs px-3 py-1 pb-2"
191- >
192- Metadata
193- </ TabsTrigger >
194- ) : null }
195- { supportsMetrics ? (
196- < TabsTrigger
197- disabled = { disabled }
198- value = "metrics"
199- className = "text-xs px-3 py-1 pb-2"
200- >
201- Metrics
202- </ TabsTrigger >
203- ) : null }
204- </ TabsList >
205- { actorId ? (
206- < Flex
207- gap = "2"
208- justify = "between"
209- items = "center"
210- className = "h-[36px] pb-3 pt-2 pr-4"
211- >
212- < QueriedActorStatus
213- className = "text-sm h-auto"
214- actorId = { actorId }
215- />
216- < ActorStopButton actorId = { actorId } />
217- </ Flex >
218- ) : null }
219- </ div >
227+ </ div >
228+ </ ScrollArea >
220229 </ div >
221230 { actorId ? (
222231 < >
0 commit comments