diff --git a/apps/webapp/app/components/primitives/UpgradeCallout.tsx b/apps/webapp/app/components/primitives/UpgradeCallout.tsx
index 873cb8355..852efb587 100644
--- a/apps/webapp/app/components/primitives/UpgradeCallout.tsx
+++ b/apps/webapp/app/components/primitives/UpgradeCallout.tsx
@@ -1,8 +1,8 @@
-import { RocketLaunchIcon } from "@heroicons/react/20/solid";
-import { Link } from "@remix-run/react";
+import { LockOpenIcon } from "@heroicons/react/24/solid";
import { useOrganization } from "~/hooks/useOrganizations";
-import { cn } from "~/utils/cn";
import { v3BillingPath } from "~/utils/pathBuilder";
+import { LinkButton } from "./Buttons";
+import { Header3 } from "./Headers";
import { Paragraph } from "./Paragraph";
type Props = {
@@ -17,31 +17,26 @@ export function UpgradeCallout({ title, children, to }: Props) {
to = to || v3BillingPath(organization);
return (
-
-
-
-
-
- {title}
-
- {typeof children === "string" ? (
-
- {children}
-
- ) : (
- children
- )}
-
- Upgrade
-
-
+
+
+
+ Upgrade
+
-
+
+
{title}
+ {typeof children === "string" ? (
+
+ {children}
+
+ ) : (
+ children
+ )}
+
+
);
}
diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx
index 04d79ed4d..f35aa7cee 100644
--- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx
+++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx
@@ -1,4 +1,5 @@
import { BookOpenIcon } from "@heroicons/react/20/solid";
+import { InformationCircleIcon } from "@heroicons/react/24/outline";
import { LoaderFunctionArgs } from "@remix-run/server-runtime";
import { typedjson, useTypedLoaderData } from "remix-typedjson";
import { AdminDebugTooltip } from "~/components/admin/debugTooltip";
@@ -23,11 +24,8 @@ import {
} from "~/components/primitives/Table";
import { TextLink } from "~/components/primitives/TextLink";
import { UpgradeCallout } from "~/components/primitives/UpgradeCallout";
-import { useFeatures } from "~/hooks/useFeatures";
-import { useOrganization } from "~/hooks/useOrganizations";
import { ApiKeysPresenter } from "~/presenters/v3/ApiKeysPresenter.server";
import { requireUserId } from "~/services/session.server";
-import { cn } from "~/utils/cn";
import { ProjectParamSchema, docsPath } from "~/utils/pathBuilder";
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
@@ -84,56 +82,65 @@ export default function Page() {
-
-
Secret keys
-
- Secret keys should be used on your server – they give full API access and allow you to{" "}
- trigger tasks from your backend.
-
-
-
-
-
- Environment
- Secret key
- Key generated
- Latest version
- Env vars
- Actions
+
+
+
+
+ Environment
+ Secret key
+ Key generated
+ Latest version
+ Env vars
+ Actions
+
+
+
+ {environments.map((environment) => (
+
+
+
+
+
+
+
+
+
+
+ {environment.latestVersion ?? "–"}
+ {environment.environmentVariableCount}
+
+
+
-
-
- {environments.map((environment) => (
-
-
-
-
-
-
-
-
-
-
- {environment.latestVersion ?? "–"}
- {environment.environmentVariableCount}
-
-
-
-
- ))}
-
-
+ ))}
+
+
+
+
+
+
+
+
+
+
Secret keys
+
+ Secret keys should be used on your server. They give full API access and allow you
+ to trigger tasks from your
+ backend.
+
+
+
{!hasStaging && (
-
+
Upgrade your plan to add a Staging environment.
)}