Skip to content

Commit 8e7741e

Browse files
committed
Add license badges to create org page
I am not sure if there is maybe a better place for this, but maybe this is good enough.
1 parent 043c4d9 commit 8e7741e

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

site/src/pages/ManagementSettingsPage/CreateOrganizationPage.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ import { useMutation, useQueryClient } from "react-query";
33
import { useNavigate } from "react-router-dom";
44
import { createOrganization } from "api/queries/organizations";
55
import { displaySuccess } from "components/GlobalSnackbar/utils";
6+
import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility";
67
import { CreateOrganizationPageView } from "./CreateOrganizationPageView";
78

89
const CreateOrganizationPage: FC = () => {
910
const navigate = useNavigate();
11+
const feats = useFeatureVisibility();
1012

1113
const queryClient = useQueryClient();
1214
const createOrganizationMutation = useMutation(
@@ -18,6 +20,7 @@ const CreateOrganizationPage: FC = () => {
1820
return (
1921
<CreateOrganizationPageView
2022
error={error}
23+
isEntitled={feats.multiple_organizations}
2124
onSubmit={async (values) => {
2225
await createOrganizationMutation.mutateAsync(values);
2326
displaySuccess("Organization created.");

site/src/pages/ManagementSettingsPage/CreateOrganizationPageView.stories.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,22 @@ import { CreateOrganizationPageView } from "./CreateOrganizationPageView";
55
const meta: Meta<typeof CreateOrganizationPageView> = {
66
title: "pages/CreateOrganizationPageView",
77
component: CreateOrganizationPageView,
8+
args: {
9+
isEntitled: true,
10+
},
811
};
912

1013
export default meta;
1114
type Story = StoryObj<typeof CreateOrganizationPageView>;
1215

1316
export const Example: Story = {};
1417

18+
export const NotEntitled: Story = {
19+
args: {
20+
isEntitled: false,
21+
},
22+
};
23+
1524
export const Error: Story = {
1625
args: { error: "Oh no!" },
1726
};

site/src/pages/ManagementSettingsPage/CreateOrganizationPageView.tsx

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,27 @@ import * as Yup from "yup";
55
import { isApiValidationError } from "api/errors";
66
import type { CreateOrganizationRequest } from "api/typesGenerated";
77
import { ErrorAlert } from "components/Alert/ErrorAlert";
8+
import {
9+
Badges,
10+
DisabledBadge,
11+
PremiumBadge,
12+
EntitledBadge,
13+
} from "components/Badges/Badges";
814
import {
915
FormFields,
1016
FormSection,
1117
HorizontalForm,
1218
FormFooter,
1319
} from "components/Form/Form";
1420
import { IconField } from "components/IconField/IconField";
21+
import { PopoverPaywall } from "components/Paywall/PopoverPaywall";
22+
import {
23+
Popover,
24+
PopoverContent,
25+
PopoverTrigger,
26+
} from "components/Popover/Popover";
1527
import { SettingsHeader } from "components/SettingsHeader/SettingsHeader";
28+
import { docs } from "utils/docs";
1629
import {
1730
getFormHelpers,
1831
nameValidator,
@@ -35,11 +48,12 @@ const validationSchema = Yup.object({
3548
interface CreateOrganizationPageViewProps {
3649
error: unknown;
3750
onSubmit: (values: CreateOrganizationRequest) => Promise<void>;
51+
isEntitled: boolean;
3852
}
3953

4054
export const CreateOrganizationPageView: FC<
4155
CreateOrganizationPageViewProps
42-
> = ({ error, onSubmit }) => {
56+
> = ({ error, onSubmit, isEntitled }) => {
4357
const form = useFormik<CreateOrganizationRequest>({
4458
initialValues: {
4559
name: "",
@@ -59,6 +73,26 @@ export const CreateOrganizationPageView: FC<
5973
description="Organize your deployment into multiple platform teams."
6074
/>
6175

76+
<Badges>
77+
{isEntitled ? <EntitledBadge /> : <DisabledBadge />}
78+
<Popover mode="hover">
79+
<PopoverTrigger>
80+
<span>
81+
<PremiumBadge />
82+
</span>
83+
</PopoverTrigger>
84+
<PopoverContent css={{ transform: "translateY(-28px)" }}>
85+
<PopoverPaywall
86+
message="Organizations"
87+
description="Organizations allow you to run a Coder deployment with multiple platform teams, all with unique use cases, templates, and even underlying infrastructure."
88+
// TODO: No documentation link yet.
89+
documentationLink={docs("/admin")}
90+
licenseType="premium"
91+
/>
92+
</PopoverContent>
93+
</Popover>
94+
</Badges>
95+
6296
{Boolean(error) && !isApiValidationError(error) && (
6397
<div css={{ marginBottom: 32 }}>
6498
<ErrorAlert error={error} />

0 commit comments

Comments
 (0)