Canvas: Center icons on details panel
Change-Id: I8ef607f3bf756e028ddab00f79e4ec17bd4582bd
diff --git a/apps/canvas/back/eslint.config.js b/apps/canvas/back/eslint.config.mjs
similarity index 100%
rename from apps/canvas/back/eslint.config.js
rename to apps/canvas/back/eslint.config.mjs
diff --git a/apps/canvas/back/package.json b/apps/canvas/back/package.json
index 4de4561..16bc055 100644
--- a/apps/canvas/back/package.json
+++ b/apps/canvas/back/package.json
@@ -3,7 +3,7 @@
"version": "1.0.0",
"description": "",
"main": "index.js",
- "type": "module",
+ "type": "commonjs",
"scripts": {
"build": "tsc",
"format": "prettier --write src/**/*.{js,ts,jsx,tsx}",
diff --git a/apps/canvas/back/src/index.ts b/apps/canvas/back/src/index.ts
index 624f8fe..d5c1b2d 100644
--- a/apps/canvas/back/src/index.ts
+++ b/apps/canvas/back/src/index.ts
@@ -202,7 +202,10 @@
if (p.githubToken && r.data.deployKey) {
const stateObj = JSON.parse(JSON.parse(state.toString()));
- const githubNodes = stateObj.nodes.filter((n) => n.type === "github" && n.data?.repository?.id);
+ const githubNodes = stateObj.nodes.filter(
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ (n: any) => n.type === "github" && n.data?.repository?.id,
+ );
const github = new GithubClient(p.githubToken);
for (const node of githubNodes) {
@@ -480,7 +483,8 @@
try {
const updateEndpoint = `${workerAddress}/update`;
await axios.post(updateEndpoint);
- } catch (error) {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ } catch (error: any) {
console.log(`Failed to update worker ${workerAddress}: ${error.message || "Unknown error"}`);
}
}),
diff --git a/apps/canvas/front/src/components/details.tsx b/apps/canvas/front/src/components/details.tsx
index cb7d7fe..b7a0049 100644
--- a/apps/canvas/front/src/components/details.tsx
+++ b/apps/canvas/front/src/components/details.tsx
@@ -48,8 +48,8 @@
{index > 0 && <Separator className="my-2" />}
<AccordionItem key={n.id} value={n.id} className="px-3">
<AccordionTrigger>
- <div className="flex flex-row space-x-2">
- {Icon(n.type)}
+ <div className="flex flex-row space-x-2 items-center">
+ <Icon type={n.type} />
<span>{nodeLabel(n)}</span>
</div>
</AccordionTrigger>
diff --git a/apps/canvas/front/src/components/icon.tsx b/apps/canvas/front/src/components/icon.tsx
index a615d79..c56a69e 100644
--- a/apps/canvas/front/src/components/icon.tsx
+++ b/apps/canvas/front/src/components/icon.tsx
@@ -7,24 +7,29 @@
import { PiNetwork } from "react-icons/pi";
import { AiOutlineGlobal } from "react-icons/ai";
-export function Icon(type: NodeType | undefined): ReactElement {
+type Props = {
+ type: NodeType | undefined;
+ className?: string;
+};
+
+export function Icon({ type, className }: Props): ReactElement {
switch (type) {
case "app":
- return <GrServices />;
+ return <GrServices className={className} />;
case "github":
- return <SiGithub />;
+ return <SiGithub className={className} />;
case "gateway-https":
- return <TbWorldWww />;
+ return <TbWorldWww className={className} />;
case "gateway-tcp":
- return <PiNetwork />;
+ return <PiNetwork className={className} />;
case "mongodb":
- return <SiMongodb />;
+ return <SiMongodb className={className} />;
case "postgresql":
- return <SiPostgresql />;
+ return <SiPostgresql className={className} />;
case "volume":
- return <GoFileDirectoryFill />;
+ return <GoFileDirectoryFill className={className} />;
case "network":
- return <AiOutlineGlobal />;
+ return <AiOutlineGlobal className={className} />;
default:
throw new Error(`MUST NOT REACH! ${type}`);
}
diff --git a/apps/canvas/front/src/components/node-rect.tsx b/apps/canvas/front/src/components/node-rect.tsx
index 257353e..362dc54 100644
--- a/apps/canvas/front/src/components/node-rect.tsx
+++ b/apps/canvas/front/src/components/node-rect.tsx
@@ -47,7 +47,9 @@
}, [selected, hasFatal, hasWarning, state, setClasses, setStateClasses]);
return (
<div className={classes.join(" ")}>
- <div style={{ position: "absolute", top: "5px", left: "5px" }}>{Icon(p.type)}</div>
+ <div style={{ position: "absolute", top: "5px", left: "5px" }}>
+ <Icon type={p.type} />
+ </div>
<div
style={{
position: "absolute",
diff --git a/apps/canvas/front/src/components/resources.tsx b/apps/canvas/front/src/components/resources.tsx
index a07eb86..715f878 100644
--- a/apps/canvas/front/src/components/resources.tsx
+++ b/apps/canvas/front/src/components/resources.tsx
@@ -45,7 +45,7 @@
onClick={onResourceAdd(item)}
style={{ justifyContent: "flex-start" }}
>
- {Icon(item.type)}
+ <Icon type={item.type} />
{item.title}
</Button>
))}