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