@@ -6,12 +6,20 @@ import Link from "@mui/material/Link";
6
6
import Tooltip from "@mui/material/Tooltip" ;
7
7
import type { BuildInfoResponse , ProvisionerDaemon } from "api/typesGenerated" ;
8
8
import { DropdownArrow } from "components/DropdownArrow/DropdownArrow" ;
9
+ import {
10
+ HelpTooltip ,
11
+ HelpTooltipContent ,
12
+ HelpTooltipText ,
13
+ HelpTooltipTitle ,
14
+ HelpTooltipTrigger ,
15
+ } from "components/HelpTooltip/HelpTooltip" ;
9
16
import { Pill } from "components/Pill/Pill" ;
10
17
import {
11
18
Popover ,
12
19
PopoverContent ,
13
20
PopoverTrigger ,
14
21
} from "components/Popover/Popover" ;
22
+ import { Stack } from "components/Stack/Stack" ;
15
23
import { type FC , useState } from "react" ;
16
24
import { createDayString } from "utils/createDayString" ;
17
25
import { docs } from "utils/docs" ;
@@ -82,17 +90,15 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
82
90
>
83
91
{ type === "builtin" && (
84
92
< div css = { { lineHeight : "160%" } } >
85
- < h4 css = { { fontWeight : 500 , margin : 0 } } >
86
- Built-in provisioners
87
- </ h4 >
93
+ < BuiltinProvisionerTitle />
88
94
< span css = { { color : theme . palette . text . secondary } } >
89
95
{ provisionerCount } — Built-in
90
96
</ span >
91
97
</ div >
92
98
) }
93
99
{ type === "psk" && (
94
100
< div css = { { lineHeight : "160%" } } >
95
- < h4 css = { { fontWeight : 500 , margin : 0 } } > PSK provisioners </ h4 >
101
+ < PskProvisionerTitle / >
96
102
< span css = { { color : theme . palette . text . secondary } } >
97
103
{ provisionerCount } —{ " " }
98
104
{ allProvisionersAreSameVersion ? (
@@ -105,9 +111,7 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
105
111
) }
106
112
{ type === "key" && (
107
113
< div css = { { lineHeight : "160%" } } >
108
- < h4 css = { { fontWeight : 500 , margin : 0 } } >
109
- Key group – { keyName }
110
- </ h4 >
114
+ < h4 css = { styles . groupTitle } > Key group – { keyName } </ h4 >
111
115
< span css = { { color : theme . palette . text . secondary } } >
112
116
{ provisionerCount } —{ " " }
113
117
{ allProvisionersAreSameVersion ? (
@@ -167,7 +171,7 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
167
171
} }
168
172
>
169
173
< div css = { { lineHeight : 1.6 } } >
170
- < h4 css = { { fontWeight : 500 , margin : 0 } } > { provisioner . name } </ h4 >
174
+ < h4 css = { styles . groupTitle } > { provisioner . name } </ h4 >
171
175
< span
172
176
css = { { color : theme . palette . text . secondary , fontSize : 13 } }
173
177
>
@@ -194,18 +198,21 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
194
198
} ,
195
199
} }
196
200
>
197
- < h4 css = { styles . title } > Release version</ h4 >
201
+ < h4 css = { styles . versionPopoverTitle } >
202
+ Release version
203
+ </ h4 >
198
204
< p css = { styles . text } > { provisioner . version } </ p >
199
- < h4 css = { styles . title } > Protocol version</ h4 >
205
+ < h4 css = { styles . versionPopoverTitle } >
206
+ Protocol version
207
+ </ h4 >
200
208
< p css = { styles . text } > { provisioner . api_version } </ p >
201
- { provisioner . api_version !==
202
- buildInfo ?. provisioner_api_version && (
209
+ { provisioner . version !== buildInfo ?. version && (
203
210
< p css = { [ styles . text , { fontSize : 13 } ] } >
204
211
This provisioner is out of date. You may
205
212
experience issues when using a provisioner version
206
- that doesn’ t match your Coder deployment. Please
207
- upgrade to a newer version.{ " " }
208
- < Link href = { docs ( "/" ) } > Learn more… </ Link >
213
+ that doesn' t match your Coder deployment.
214
+ Please upgrade to a newer version.{ " " }
215
+ < Link href = { docs ( "/" ) } > Learn more… </ Link >
209
216
</ p >
210
217
) }
211
218
</ PopoverContent >
@@ -256,8 +263,54 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
256
263
) ;
257
264
} ;
258
265
266
+ const BuiltinProvisionerTitle : FC = ( ) => {
267
+ return (
268
+ < h4 css = { styles . groupTitle } >
269
+ < Stack direction = "row" alignItems = "end" spacing = { 1 } >
270
+ < span > Built-in provisioners</ span >
271
+ < HelpTooltip >
272
+ < HelpTooltipTrigger />
273
+ < HelpTooltipContent >
274
+ < HelpTooltipTitle > Built-in provisioners</ HelpTooltipTitle >
275
+ < HelpTooltipText >
276
+ These provisioners are running as part of a coderd instance.
277
+ Built-in provisioners are only available for the default
278
+ organization. < Link href = { docs ( "/" ) } > Learn more…</ Link >
279
+ </ HelpTooltipText >
280
+ </ HelpTooltipContent >
281
+ </ HelpTooltip >
282
+ </ Stack >
283
+ </ h4 >
284
+ ) ;
285
+ } ;
286
+ const PskProvisionerTitle : FC = ( ) => {
287
+ return (
288
+ < h4 css = { styles . groupTitle } >
289
+ < Stack direction = "row" alignItems = "end" spacing = { 1 } >
290
+ < span > PSK provisioners</ span >
291
+ < HelpTooltip >
292
+ < HelpTooltipTrigger />
293
+ < HelpTooltipContent >
294
+ < HelpTooltipTitle > PSK provisioners</ HelpTooltipTitle >
295
+ < HelpTooltipText >
296
+ These provisioners all use pre-shared key authentication. PSK
297
+ provisioners are only available for the default organization.{ " " }
298
+ < Link href = { docs ( "/" ) } > Learn more…</ Link >
299
+ </ HelpTooltipText >
300
+ </ HelpTooltipContent >
301
+ </ HelpTooltip >
302
+ </ Stack >
303
+ </ h4 >
304
+ ) ;
305
+ } ;
306
+
259
307
const styles = {
260
- title : ( theme ) => ( {
308
+ groupTitle : {
309
+ fontWeight : 500 ,
310
+ margin : 0 ,
311
+ } ,
312
+
313
+ versionPopoverTitle : ( theme ) => ( {
261
314
marginTop : 0 ,
262
315
marginBottom : 0 ,
263
316
color : theme . palette . text . primary ,
@@ -266,8 +319,8 @@ const styles = {
266
319
fontWeight : 600 ,
267
320
} ) ,
268
321
269
- text : ( theme ) => ( {
322
+ text : {
270
323
marginTop : 0 ,
271
324
marginBottom : 12 ,
272
- } ) ,
325
+ } ,
273
326
} satisfies Record < string , Interpolation < Theme > > ;
0 commit comments