Skip to content

Commit de3945c

Browse files
authored
chore: add help tooltips explaining provisioner types (#14625)
* work * do the stuff * 🧹 * feat: show more detailed provisioner version info * 🧹 * descriptive lil help guys :) * 🧹 * hook up to api * :) * v2.99.99
1 parent bbc7b50 commit de3945c

File tree

1 file changed

+71
-18
lines changed

1 file changed

+71
-18
lines changed

site/src/modules/provisioners/ProvisionerGroup.tsx

+71-18
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,20 @@ import Link from "@mui/material/Link";
66
import Tooltip from "@mui/material/Tooltip";
77
import type { BuildInfoResponse, ProvisionerDaemon } from "api/typesGenerated";
88
import { DropdownArrow } from "components/DropdownArrow/DropdownArrow";
9+
import {
10+
HelpTooltip,
11+
HelpTooltipContent,
12+
HelpTooltipText,
13+
HelpTooltipTitle,
14+
HelpTooltipTrigger,
15+
} from "components/HelpTooltip/HelpTooltip";
916
import { Pill } from "components/Pill/Pill";
1017
import {
1118
Popover,
1219
PopoverContent,
1320
PopoverTrigger,
1421
} from "components/Popover/Popover";
22+
import { Stack } from "components/Stack/Stack";
1523
import { type FC, useState } from "react";
1624
import { createDayString } from "utils/createDayString";
1725
import { 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} &mdash; 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} &mdash;{" "}
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 &ndash; {keyName}
110-
</h4>
114+
<h4 css={styles.groupTitle}>Key group &ndash; {keyName}</h4>
111115
<span css={{ color: theme.palette.text.secondary }}>
112116
{provisionerCount} &mdash;{" "}
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
172176
css={{ 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 }]}>
204211
This provisioner is out of date. You may
205212
experience issues when using a provisioner version
206-
that doesnt match your Coder deployment. Please
207-
upgrade to a newer version.{" "}
208-
<Link href={docs("/")}>Learn more</Link>
213+
that doesn&apos;t match your Coder deployment.
214+
Please upgrade to a newer version.{" "}
215+
<Link href={docs("/")}>Learn more&hellip;</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&hellip;</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&hellip;</Link>
299+
</HelpTooltipText>
300+
</HelpTooltipContent>
301+
</HelpTooltip>
302+
</Stack>
303+
</h4>
304+
);
305+
};
306+
259307
const styles = {
260-
title: (theme) => ({
308+
groupTitle: {
309+
fontWeight: 500,
310+
margin: 0,
311+
},
312+
313+
versionPopoverTitle: (theme) => ({
261314
marginTop: 0,
262315
marginBottom: 0,
263316
color: theme.palette.text.primary,
@@ -266,8 +319,8 @@ const styles = {
266319
fontWeight: 600,
267320
}),
268321

269-
text: (theme) => ({
322+
text: {
270323
marginTop: 0,
271324
marginBottom: 12,
272-
}),
325+
},
273326
} satisfies Record<string, Interpolation<Theme>>;

0 commit comments

Comments
 (0)