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

Lines changed: 71 additions & 18 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy