@@ -6,12 +6,20 @@ import Link from "@mui/material/Link";
66import Tooltip from "@mui/material/Tooltip" ;
77import type { BuildInfoResponse , ProvisionerDaemon } from "api/typesGenerated" ;
88import { DropdownArrow } from "components/DropdownArrow/DropdownArrow" ;
9+ import {
10+ HelpTooltip ,
11+ HelpTooltipContent ,
12+ HelpTooltipText ,
13+ HelpTooltipTitle ,
14+ HelpTooltipTrigger ,
15+ } from "components/HelpTooltip/HelpTooltip" ;
916import { Pill } from "components/Pill/Pill" ;
1017import {
1118Popover ,
1219PopoverContent ,
1320PopoverTrigger ,
1421} from "components/Popover/Popover" ;
22+ import { Stack } from "components/Stack/Stack" ;
1523import { type FC , useState } from "react" ;
1624import { createDayString } from "utils/createDayString" ;
1725import { docs } from "utils/docs" ;
@@ -82,17 +90,15 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
8290>
8391{ type === "builtin" && (
8492< div css = { { lineHeight :"160%" } } >
85- < h4 css = { { fontWeight :500 , margin :0 } } >
86- Built-in provisioners
87- </ h4 >
93+ < BuiltinProvisionerTitle />
8894< span css = { { color :theme . palette . text . secondary } } >
8995{ provisionerCount } — Built-in
9096</ span >
9197</ div >
9298) }
9399{ type === "psk" && (
94100< div css = { { lineHeight :"160%" } } >
95- < h4 css = { { fontWeight : 500 , margin : 0 } } > PSK provisioners </ h4 >
101+ < PskProvisionerTitle / >
96102< span css = { { color :theme . palette . text . secondary } } >
97103{ provisionerCount } —{ " " }
98104{ allProvisionersAreSameVersion ?(
@@ -105,9 +111,7 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
105111) }
106112{ type === "key" && (
107113< 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 >
111115< span css = { { color :theme . palette . text . secondary } } >
112116{ provisionerCount } —{ " " }
113117{ allProvisionersAreSameVersion ?(
@@ -167,7 +171,7 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
167171} }
168172>
169173< div css = { { lineHeight :1.6 } } >
170- < h4 css = { { fontWeight : 500 , margin : 0 } } > { provisioner . name } </ h4 >
174+ < h4 css = { styles . groupTitle } > { provisioner . name } </ h4 >
171175< span
172176css = { { color :theme . palette . text . secondary , fontSize :13 } }
173177>
@@ -194,18 +198,21 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
194198} ,
195199} }
196200>
197- < h4 css = { styles . title } > Release version</ h4 >
201+ < h4 css = { styles . versionPopoverTitle } >
202+ Release version
203+ </ h4 >
198204< 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 >
200208< p css = { styles . text } > { provisioner . api_version } </ p >
201- { provisioner . api_version !==
202- buildInfo ?. provisioner_api_version && (
209+ { provisioner . version !== buildInfo ?. version && (
203210< p css = { [ styles . text , { fontSize :13 } ] } >
204211This provisioner is out of date. You may
205212experience 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 >
209216</ p >
210217) }
211218</ PopoverContent >
@@ -256,8 +263,54 @@ export const ProvisionerGroup: FC<ProvisionerGroupProps> = ({
256263) ;
257264} ;
258265
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+
259307const styles = {
260- title :( theme ) => ( {
308+ groupTitle :{
309+ fontWeight :500 ,
310+ margin :0 ,
311+ } ,
312+
313+ versionPopoverTitle :( theme ) => ( {
261314marginTop :0 ,
262315marginBottom :0 ,
263316color :theme . palette . text . primary ,
@@ -266,8 +319,8 @@ const styles = {
266319fontWeight :600 ,
267320} ) ,
268321
269- text :( theme ) => ( {
322+ text :{
270323marginTop :0 ,
271324marginBottom :12 ,
272- } ) ,
325+ } ,
273326} satisfies Record < string , Interpolation < Theme > > ;