1
- import BlockIcon from "@mui/icons-material/Block" ;
2
- import OutlinedBlockIcon from "@mui/icons-material/BlockOutlined" ;
3
- import CloudQueueIcon from "@mui/icons-material/CloudQueue" ;
4
- import CropSquareIcon from "@mui/icons-material/CropSquare" ;
5
- import PlayCircleOutlineIcon from "@mui/icons-material/PlayCircleOutline" ;
6
- import PowerSettingsNewIcon from "@mui/icons-material/PowerSettingsNew" ;
7
- import ReplayIcon from "@mui/icons-material/Replay" ;
8
- import Star from "@mui/icons-material/Star" ;
9
- import StarBorder from "@mui/icons-material/StarBorder" ;
10
- import ButtonGroup from "@mui/material/ButtonGroup" ;
11
1
import Tooltip from "@mui/material/Tooltip" ;
12
2
import type { Workspace , WorkspaceBuildParameter } from "api/typesGenerated" ;
13
3
import { TopbarButton } from "components/FullPageLayout/Topbar" ;
4
+ import {
5
+ BanIcon ,
6
+ CirclePlayIcon ,
7
+ CircleStopIcon ,
8
+ CloudIcon ,
9
+ PowerIcon ,
10
+ RotateCcwIcon ,
11
+ StarIcon ,
12
+ StarOffIcon ,
13
+ } from "lucide-react" ;
14
14
import type { FC } from "react" ;
15
15
import { BuildParametersPopover } from "./BuildParametersPopover" ;
16
16
@@ -29,9 +29,9 @@ export const UpdateButton: FC<ActionButtonProps> = ({
29
29
< TopbarButton
30
30
disabled = { loading }
31
31
data-testid = "workspace-update-button"
32
- startIcon = { < CloudQueueIcon /> }
33
32
onClick = { ( ) => handleAction ( ) }
34
33
>
34
+ < CloudIcon />
35
35
{ loading ? < > Updating…</ > : < > Update…</ > }
36
36
</ TopbarButton >
37
37
) ;
@@ -42,11 +42,8 @@ export const ActivateButton: FC<ActionButtonProps> = ({
42
42
loading,
43
43
} ) => {
44
44
return (
45
- < TopbarButton
46
- disabled = { loading }
47
- startIcon = { < PowerSettingsNewIcon /> }
48
- onClick = { ( ) => handleAction ( ) }
49
- >
45
+ < TopbarButton disabled = { loading } onClick = { ( ) => handleAction ( ) } >
46
+ < PowerIcon />
50
47
{ loading ? < > Activating…</ > : "Activate" }
51
48
</ TopbarButton >
52
49
) ;
@@ -64,11 +61,8 @@ export const StartButton: FC<ActionButtonPropsWithWorkspace> = ({
64
61
tooltipText,
65
62
} ) => {
66
63
let mainButton = (
67
- < TopbarButton
68
- startIcon = { < PlayCircleOutlineIcon /> }
69
- onClick = { ( ) => handleAction ( ) }
70
- disabled = { disabled || loading }
71
- >
64
+ < TopbarButton onClick = { ( ) => handleAction ( ) } disabled = { disabled || loading } >
65
+ < CirclePlayIcon />
72
66
{ loading ? < > Starting…</ > : "Start" }
73
67
</ TopbarButton >
74
68
) ;
@@ -78,24 +72,15 @@ export const StartButton: FC<ActionButtonPropsWithWorkspace> = ({
78
72
}
79
73
80
74
return (
81
- < ButtonGroup
82
- variant = "outlined"
83
- sx = { {
84
- // Workaround to make the border transitions smoothly on button groups
85
- "& > button:hover + button" : {
86
- borderLeft : "1px solid #FFF" ,
87
- } ,
88
- } }
89
- disabled = { disabled }
90
- >
75
+ < div className = "flex gap-1 items-center" >
91
76
{ mainButton }
92
77
< BuildParametersPopover
93
78
label = "Start with build parameters"
94
79
workspace = { workspace }
95
80
disabled = { loading }
96
81
onSubmit = { handleAction }
97
82
/>
98
- </ ButtonGroup >
83
+ </ div >
99
84
) ;
100
85
} ;
101
86
@@ -104,10 +89,8 @@ export const UpdateAndStartButton: FC<ActionButtonProps> = ({
104
89
} ) => {
105
90
return (
106
91
< Tooltip title = "This template requires automatic updates on workspace startup. Contact your administrator if you want to preserve the template version." >
107
- < TopbarButton
108
- startIcon = { < PlayCircleOutlineIcon /> }
109
- onClick = { ( ) => handleAction ( ) }
110
- >
92
+ < TopbarButton onClick = { ( ) => handleAction ( ) } >
93
+ < CirclePlayIcon />
111
94
Update and start…
112
95
</ TopbarButton >
113
96
</ Tooltip >
@@ -121,10 +104,10 @@ export const StopButton: FC<ActionButtonProps> = ({
121
104
return (
122
105
< TopbarButton
123
106
disabled = { loading }
124
- startIcon = { < CropSquareIcon /> }
125
107
onClick = { ( ) => handleAction ( ) }
126
108
data-testid = "workspace-stop-button"
127
109
>
110
+ < CircleStopIcon />
128
111
{ loading ? < > Stopping…</ > : "Stop" }
129
112
</ TopbarButton >
130
113
) ;
@@ -136,21 +119,13 @@ export const RestartButton: FC<ActionButtonPropsWithWorkspace> = ({
136
119
workspace,
137
120
} ) => {
138
121
return (
139
- < ButtonGroup
140
- variant = "outlined"
141
- css = { {
142
- // Workaround to make the border transitions smoothly on button groups
143
- "& > button:hover + button" : {
144
- borderLeft : "1px solid #FFF" ,
145
- } ,
146
- } }
147
- >
122
+ < div className = "flex gap-1 items-center" >
148
123
< TopbarButton
149
- startIcon = { < ReplayIcon /> }
150
124
onClick = { ( ) => handleAction ( ) }
151
125
data-testid = "workspace-restart-button"
152
126
disabled = { loading }
153
127
>
128
+ < RotateCcwIcon />
154
129
{ loading ? < > Restarting…</ > : < > Restart…</ > }
155
130
</ TopbarButton >
156
131
< BuildParametersPopover
@@ -159,7 +134,7 @@ export const RestartButton: FC<ActionButtonPropsWithWorkspace> = ({
159
134
disabled = { loading }
160
135
onSubmit = { handleAction }
161
136
/>
162
- </ ButtonGroup >
137
+ </ div >
163
138
) ;
164
139
} ;
165
140
@@ -168,7 +143,8 @@ export const UpdateAndRestartButton: FC<ActionButtonProps> = ({
168
143
} ) => {
169
144
return (
170
145
< Tooltip title = "This template requires automatic updates on workspace startup. Contact your administrator if you want to preserve the template version." >
171
- < TopbarButton startIcon = { < ReplayIcon /> } onClick = { ( ) => handleAction ( ) } >
146
+ < TopbarButton onClick = { ( ) => handleAction ( ) } >
147
+ < RotateCcwIcon />
172
148
Update and restart…
173
149
</ TopbarButton >
174
150
</ Tooltip >
@@ -177,7 +153,8 @@ export const UpdateAndRestartButton: FC<ActionButtonProps> = ({
177
153
178
154
export const CancelButton : FC < ActionButtonProps > = ( { handleAction } ) => {
179
155
return (
180
- < TopbarButton startIcon = { < BlockIcon /> } onClick = { ( ) => handleAction ( ) } >
156
+ < TopbarButton onClick = { ( ) => handleAction ( ) } >
157
+ < BanIcon />
181
158
Cancel
182
159
</ TopbarButton >
183
160
) ;
@@ -189,7 +166,8 @@ interface DisabledButtonProps {
189
166
190
167
export const DisabledButton : FC < DisabledButtonProps > = ( { label } ) => {
191
168
return (
192
- < TopbarButton startIcon = { < OutlinedBlockIcon /> } disabled >
169
+ < TopbarButton disabled >
170
+ < BanIcon />
193
171
{ label }
194
172
</ TopbarButton >
195
173
) ;
@@ -207,10 +185,8 @@ export const FavoriteButton: FC<FavoriteButtonProps> = ({
207
185
isFavorite,
208
186
} ) => {
209
187
return (
210
- < TopbarButton
211
- startIcon = { isFavorite ? < Star /> : < StarBorder /> }
212
- onClick = { ( ) => onToggle ( workspaceID ) }
213
- >
188
+ < TopbarButton onClick = { ( ) => onToggle ( workspaceID ) } >
189
+ { isFavorite ? < StarOffIcon /> : < StarIcon /> }
214
190
{ isFavorite ? "Unfavorite" : "Favorite" }
215
191
</ TopbarButton >
216
192
) ;
0 commit comments