diff --git a/frontend/src/components/resources/build/config.tsx b/frontend/src/components/resources/build/config.tsx
index b1b7817e3..d5cc2fc81 100644
--- a/frontend/src/components/resources/build/config.tsx
+++ b/frontend/src/components/resources/build/config.tsx
@@ -105,6 +105,7 @@ export const BuildConfig = ({
selected={id}
onSelect={(builder_id) => set({ builder_id })}
disabled={disabled}
+ align="end"
/>
),
diff --git a/frontend/src/components/resources/build/index.tsx b/frontend/src/components/resources/build/index.tsx
index 3cb3715e1..7cde32495 100644
--- a/frontend/src/components/resources/build/index.tsx
+++ b/frontend/src/components/resources/build/index.tsx
@@ -17,6 +17,7 @@ import { Card, CardHeader } from "@ui/card";
import { cn } from "@lib/utils";
import { useState } from "react";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@ui/tabs";
+import { ResourceComponents } from "..";
const useBuild = (id?: string) =>
useRead("ListBuilds", {}).data?.find((d) => d.id === id);
@@ -33,6 +34,20 @@ const ConfigOrDeployments = ({ id }: { id: string }) => {
(deployment) => deployment.info.build_id === id
);
const deploymentsDisabled = (deployments?.length || 0) === 0;
+ const titleOther = (
+
+
+ Config
+
+
+ Deployments
+
+
+ );
return (
{
className="grid gap-4"
>
-
-
- Config
-
-
- Deployments
-
-
- }
- />
+
-
- Config
-
-
- Deployments
-
-
- }
+ titleOther={titleOther}
+ actions={}
>
diff --git a/frontend/src/components/resources/common.tsx b/frontend/src/components/resources/common.tsx
index 8d42e96e1..54be821db 100644
--- a/frontend/src/components/resources/common.tsx
+++ b/frontend/src/components/resources/common.tsx
@@ -108,7 +108,7 @@ export const ResourceSelector = ({
{!disabled && }
-
+
{
+export const NewResource = ({
+ type,
+ server_id,
+ build_id,
+}: {
+ type: UsableResource;
+ server_id?: string;
+ build_id?: string;
+}) => {
const nav = useNavigate();
const { mutateAsync } = useWrite(`Create${type}`);
const [name, setName] = useState("");
const type_display =
type === "ServerTemplate" ? "server-template" : type.toLowerCase();
+ const config =
+ type === "Deployment"
+ ? {
+ server_id,
+ image: build_id ?? { type: "Build", params: { build_id } },
+ }
+ : type === "Repo"
+ ? { server_id }
+ : {};
return (
{
- const id = (await mutateAsync({ name, config: {} }))._id?.$oid!;
+ const id = (await mutateAsync({ name, config }))._id?.$oid!;
nav(`/${usableResourcePath(type)}/${id}`);
}}
enabled={!!name}
diff --git a/frontend/src/components/resources/deployment/index.tsx b/frontend/src/components/resources/deployment/index.tsx
index d38f84cb7..9a481c1f7 100644
--- a/frontend/src/components/resources/deployment/index.tsx
+++ b/frontend/src/components/resources/deployment/index.tsx
@@ -103,7 +103,9 @@ export const DeploymentComponents: RequiredResourceComponents = {
Dashboard: DeploymentsChart,
- New: () => ,
+ New: ({ server_id, build_id }) => (
+
+ ),
Table: ({ search }) => {
const deployments = useRead("ListDeployments", {}).data;
diff --git a/frontend/src/components/resources/deployment/log.tsx b/frontend/src/components/resources/deployment/log.tsx
index 1665a8c5e..53255eed0 100644
--- a/frontend/src/components/resources/deployment/log.tsx
+++ b/frontend/src/components/resources/deployment/log.tsx
@@ -174,12 +174,12 @@ const Log = ({
useEffect(scroll, [_log]);
return (
<>
-
+