@@ -25,20 +25,8 @@ export const WorkspacesEmpty: FC<WorkspacesEmptyProps> = ({
25
25
const defaultMessage =
26
26
"A workspace is your personal, customizable development environment." ;
27
27
const defaultImage = (
28
- < div
29
- css = { {
30
- maxWidth :"50%" ,
31
- height :272 ,
32
- overflow :"hidden" ,
33
- marginTop :48 ,
34
- opacity :0.85 ,
35
-
36
- "& img" :{
37
- maxWidth :"100%" ,
38
- } ,
39
- } }
40
- >
41
- < img src = "/featured/workspaces.webp" alt = "" />
28
+ < div className = "max-w-[50%] h-[272px] overflow-hidden mt-12 opacity-85" >
29
+ < img src = "/featured/workspaces.webp" alt = "" className = "max-w-full" />
42
30
</ div >
43
31
) ;
44
32
@@ -56,9 +44,7 @@ export const WorkspacesEmpty: FC<WorkspacesEmptyProps> = ({
56
44
< Link to = "/templates" > Go to templates</ Link >
57
45
</ Button >
58
46
}
59
- css = { {
60
- paddingBottom :0 ,
61
- } }
47
+ className = "pb-0"
62
48
image = { defaultImage }
63
49
/>
64
50
) ;
@@ -69,9 +55,7 @@ export const WorkspacesEmpty: FC<WorkspacesEmptyProps> = ({
69
55
< TableEmpty
70
56
message = { defaultTitle }
71
57
description = { `${ defaultMessage } There are no templates available, but you will see them here once your admin adds them.` }
72
- css = { {
73
- paddingBottom :0 ,
74
- } }
58
+ className = "pb-0"
75
59
image = { defaultImage }
76
60
/>
77
61
) ;
@@ -83,70 +67,30 @@ export const WorkspacesEmpty: FC<WorkspacesEmptyProps> = ({
83
67
description = { `${ defaultMessage } Select one template below to start.` }
84
68
cta = {
85
69
< div >
86
- < div
87
- css = { {
88
- display :"flex" ,
89
- flexWrap :"wrap" ,
90
- gap :16 ,
91
- marginBottom :24 ,
92
- justifyContent :"center" ,
93
- maxWidth :"800px" ,
94
- } }
95
- >
70
+ < div className = "flex flex-wrap gap-4 mb-6 justify-center max-w-[800px]" >
96
71
{ featuredTemplates ?. map ( ( t ) => (
97
72
< Link
98
73
key = { t . id }
99
74
to = { `${ getLink (
100
75
linkToTemplate ( t . organization_name , t . name ) ,
101
76
) } /workspace`}
102
- css = { ( theme ) => ( {
103
- width :"320px" ,
104
- padding :16 ,
105
- borderRadius :6 ,
106
- border :`1px solid${ theme . palette . divider } ` ,
107
- textAlign :"left" ,
108
- display :"flex" ,
109
- gap :16 ,
110
- textDecoration :"none" ,
111
- color :"inherit" ,
112
-
113
- "&:hover" :{
114
- backgroundColor :theme . palette . background . paper ,
115
- } ,
116
- } ) }
77
+ className = "w-[320px] p-4 rounded-md border border-solid border-surface-quaternary text-left flex gap-4 no-underline text-inherit hover:bg-surface-grey"
117
78
>
118
- < div css = { { flexShrink : 0 , paddingTop : 4 } } >
79
+ < div className = "flex-shrink-0 pt-1" >
119
80
< Avatar variant = "icon" src = { t . icon } fallback = { t . name } />
120
81
</ div >
121
82
122
- < div css = { { width :"100%" , minWidth :"0" } } >
123
- < h4
124
- css = { {
125
- fontSize :14 ,
126
- fontWeight :600 ,
127
- margin :0 ,
128
- overflow :"hidden" ,
129
- textOverflow :"ellipsis" ,
130
- whiteSpace :"nowrap" ,
131
- } }
132
- >
83
+ < div className = "w-full min-w-0" >
84
+ < h4 className = "text-sm font-semibold m-0 overflow-hidden truncate whitespace-nowrap" >
133
85
{ t . display_name || t . name }
134
86
</ h4 >
135
87
136
88
< p
137
- css = { ( theme ) => ( {
138
- fontSize :13 ,
139
- color :theme . palette . text . secondary ,
140
- lineHeight :"1.4" ,
141
- margin :0 ,
142
- paddingTop :"4px" ,
143
-
144
- // We've had users plug URLs directly into the
145
- // descriptions, when those URLS have no hyphens or other
146
- // easy semantic breakpoints. Need to set this to ensure
147
- // those URLs don't break outside their containing boxes
148
- wordBreak :"break-word" ,
149
- } ) }
89
+ // We've had users plug URLs directly into the
90
+ // descriptions, when those URLS have no hyphens or other
91
+ // easy semantic breakpoints. Need to set this to ensure
92
+ // those URLs don't break outside their containing boxes
93
+ className = "text-sm text-gray-400 leading-[1.4] m-0 pt-1 break-words"
150
94
>
151
95
{ t . description }
152
96
</ p >