1
- import makeStyles from "@mui/styles/makeStyles" ;
2
1
import { watchAgentMetadata } from "api/api" ;
3
- import { WorkspaceAgent , WorkspaceAgentMetadata } from "api/typesGenerated" ;
2
+ import type {
3
+ WorkspaceAgent ,
4
+ WorkspaceAgentMetadata ,
5
+ } from "api/typesGenerated" ;
4
6
import { Stack } from "components/Stack/Stack" ;
5
7
import dayjs from "dayjs" ;
6
8
import {
@@ -13,17 +15,15 @@ import {
13
15
} from "react" ;
14
16
import Skeleton from "@mui/material/Skeleton" ;
15
17
import { MONOSPACE_FONT_FAMILY } from "theme/constants" ;
16
- import { combineClasses } from "utils/combineClasses" ;
17
18
import Tooltip from "@mui/material/Tooltip" ;
18
19
import Box , { BoxProps } from "@mui/material/Box" ;
20
+ import { type Interpolation , type Theme } from "@emotion/react" ;
19
21
20
22
type ItemStatus = "stale" | "valid" | "loading" ;
21
23
22
24
export const WatchAgentMetadataContext = createContext ( watchAgentMetadata ) ;
23
25
24
26
const MetadataItem : FC < { item : WorkspaceAgentMetadata } > = ( { item } ) => {
25
- const styles = useStyles ( ) ;
26
-
27
27
if ( item . result === undefined ) {
28
28
throw new Error ( "Metadata item result is undefined" ) ;
29
29
}
@@ -56,41 +56,29 @@ const MetadataItem: FC<{ item: WorkspaceAgentMetadata }> = ({ item }) => {
56
56
// could be buggy. But, how common is that anyways?
57
57
const value =
58
58
status === "loading" ? (
59
- < Skeleton
60
- width = { 65 }
61
- height = { 12 }
62
- variant = "text"
63
- className = { styles . skeleton }
64
- />
59
+ < Skeleton width = { 65 } height = { 12 } variant = "text" css = { styles . skeleton } />
65
60
) : status === "stale" ? (
66
61
< Tooltip title = "This data is stale and no longer up to date" >
67
- < StaticWidth
68
- className = { combineClasses ( [
69
- styles . metadataValue ,
70
- styles . metadataStale ,
71
- ] ) }
72
- >
62
+ < StaticWidth css = { [ styles . metadataValue , styles . metadataStale ] } >
73
63
{ item . result . value }
74
64
</ StaticWidth >
75
65
</ Tooltip >
76
66
) : (
77
67
< StaticWidth
78
- className = { combineClasses ( [
68
+ css = { [
79
69
styles . metadataValue ,
80
70
item . result . error . length === 0
81
71
? styles . metadataValueSuccess
82
72
: styles . metadataValueError ,
83
- ] ) }
73
+ ] }
84
74
>
85
75
{ item . result . value }
86
76
</ StaticWidth >
87
77
) ;
88
78
89
79
return (
90
- < div className = { styles . metadata } >
91
- < div className = { styles . metadataLabel } >
92
- { item . description . display_name }
93
- </ div >
80
+ < div css = { styles . metadata } >
81
+ < div css = { styles . metadataLabel } > { item . description . display_name } </ div >
94
82
< Box > { value } </ Box >
95
83
</ div >
96
84
) ;
@@ -101,12 +89,11 @@ export interface AgentMetadataViewProps {
101
89
}
102
90
103
91
export const AgentMetadataView : FC < AgentMetadataViewProps > = ( { metadata } ) => {
104
- const styles = useStyles ( ) ;
105
92
if ( metadata . length === 0 ) {
106
93
return < > </ > ;
107
94
}
108
95
return (
109
- < div className = { styles . root } >
96
+ < div css = { styles . root } >
110
97
< Stack alignItems = "baseline" direction = "row" spacing = { 6 } >
111
98
{ metadata . map ( ( m ) => {
112
99
if ( m . description === undefined ) {
@@ -127,7 +114,6 @@ export const AgentMetadata: FC<{
127
114
WorkspaceAgentMetadata [ ] | undefined
128
115
> ( undefined ) ;
129
116
const watchAgentMetadata = useContext ( WatchAgentMetadataContext ) ;
130
- const styles = useStyles ( ) ;
131
117
132
118
useEffect ( ( ) => {
133
119
if ( storybookMetadata !== undefined ) {
@@ -166,7 +152,7 @@ export const AgentMetadata: FC<{
166
152
167
153
if ( metadata === undefined ) {
168
154
return (
169
- < div className = { styles . root } >
155
+ < div css = { styles . root } >
170
156
< AgentMetadataSkeleton />
171
157
</ div >
172
158
) ;
@@ -176,21 +162,19 @@ export const AgentMetadata: FC<{
176
162
} ;
177
163
178
164
export const AgentMetadataSkeleton : FC = ( ) => {
179
- const styles = useStyles ( ) ;
180
-
181
165
return (
182
166
< Stack alignItems = "baseline" direction = "row" spacing = { 6 } >
183
- < div className = { styles . metadata } >
167
+ < div css = { styles . metadata } >
184
168
< Skeleton width = { 40 } height = { 12 } variant = "text" />
185
169
< Skeleton width = { 65 } height = { 14 } variant = "text" />
186
170
</ div >
187
171
188
- < div className = { styles . metadata } >
172
+ < div css = { styles . metadata } >
189
173
< Skeleton width = { 40 } height = { 12 } variant = "text" />
190
174
< Skeleton width = { 65 } height = { 14 } variant = "text" />
191
175
</ div >
192
176
193
- < div className = { styles . metadata } >
177
+ < div css = { styles . metadata } >
194
178
< Skeleton width = { 40 } height = { 12 } variant = "text" />
195
179
< Skeleton width = { 65 } height = { 14 } variant = "text" />
196
180
</ div >
@@ -219,16 +203,16 @@ const StaticWidth = (props: BoxProps) => {
219
203
220
204
// These are more or less copied from
221
205
// site/src/components/Resources/ResourceCard.tsx
222
- const useStyles = makeStyles ( ( theme ) => ( {
223
- root : {
206
+ const styles = {
207
+ root : ( theme ) => ( {
224
208
padding : theme . spacing ( 2.5 , 4 ) ,
225
209
borderTop : `1px solid ${ theme . palette . divider } ` ,
226
210
background : theme . palette . background . paper ,
227
211
overflowX : "auto" ,
228
212
scrollPadding : theme . spacing ( 0 , 4 ) ,
229
- } ,
213
+ } ) ,
230
214
231
- metadata : {
215
+ metadata : ( theme ) => ( {
232
216
fontSize : 12 ,
233
217
lineHeight : "normal" ,
234
218
display : "flex" ,
@@ -240,15 +224,15 @@ const useStyles = makeStyles((theme) => ({
240
224
"&:last-child" : {
241
225
paddingRight : theme . spacing ( 4 ) ,
242
226
} ,
243
- } ,
227
+ } ) ,
244
228
245
- metadataLabel : {
229
+ metadataLabel : ( theme ) => ( {
246
230
color : theme . palette . text . secondary ,
247
231
textOverflow : "ellipsis" ,
248
232
overflow : "hidden" ,
249
233
whiteSpace : "nowrap" ,
250
234
fontWeight : 500 ,
251
- } ,
235
+ } ) ,
252
236
253
237
metadataValue : {
254
238
textOverflow : "ellipsis" ,
@@ -258,29 +242,29 @@ const useStyles = makeStyles((theme) => ({
258
242
fontSize : 14 ,
259
243
} ,
260
244
261
- metadataValueSuccess : {
245
+ metadataValueSuccess : ( theme ) => ( {
262
246
color : theme . palette . success . light ,
263
- } ,
247
+ } ) ,
264
248
265
- metadataValueError : {
249
+ metadataValueError : ( theme ) => ( {
266
250
color : theme . palette . error . main ,
267
- } ,
251
+ } ) ,
268
252
269
- metadataStale : {
253
+ metadataStale : ( theme ) => ( {
270
254
color : theme . palette . text . disabled ,
271
255
cursor : "pointer" ,
272
- } ,
256
+ } ) ,
273
257
274
- skeleton : {
258
+ skeleton : ( theme ) => ( {
275
259
marginTop : theme . spacing ( 0.5 ) ,
276
- } ,
260
+ } ) ,
277
261
278
- inlineCommand : {
262
+ inlineCommand : ( theme ) => ( {
279
263
fontFamily : MONOSPACE_FONT_FAMILY ,
280
264
display : "inline-block" ,
281
265
fontWeight : 600 ,
282
266
margin : 0 ,
283
267
borderRadius : 4 ,
284
268
color : theme . palette . text . primary ,
285
- } ,
286
- } ) ) ;
269
+ } ) ,
270
+ } satisfies Record < string , Interpolation < Theme > > ;
0 commit comments