| gio | 5f2f100 | 2025-03-20 18:38:48 +0400 | [diff] [blame] | 1 | import { NodeAppDetails } from "./node-app"; |
| 2 | import { NodeGatewayHttpsDetails } from "./node-gateway-https"; |
| gio | 5f2f100 | 2025-03-20 18:38:48 +0400 | [diff] [blame] | 3 | import { NodeVolumeDetails } from "./node-volume"; |
| 4 | import { NodePostgreSQLDetails } from "./node-postgresql"; |
| 5 | import { NodeMongoDBDetails } from "./node-mongodb"; |
| 6 | import { NodeGithubDetails } from "./node-github"; |
| 7 | import { NodeGatewayTCPDetails } from "./node-gateway-tcp"; |
| gio | 3fb133d | 2025-06-13 07:20:24 +0000 | [diff] [blame] | 8 | import { NodeDetailsProps } from "@/lib/types"; |
| gio | 5fa6696 | 2025-06-13 09:30:40 +0000 | [diff] [blame^] | 9 | import { cn } from "@/lib/utils"; |
| gio | 5f2f100 | 2025-03-20 18:38:48 +0400 | [diff] [blame] | 10 | |
| gio | 5fa6696 | 2025-06-13 09:30:40 +0000 | [diff] [blame^] | 11 | export function NodeDetails(props: NodeDetailsProps & { className?: string }) { |
| 12 | const { className, ...rest } = props; |
| gio | fcefd7c | 2025-05-13 08:01:07 +0000 | [diff] [blame] | 13 | return ( |
| gio | 5fa6696 | 2025-06-13 09:30:40 +0000 | [diff] [blame^] | 14 | <div className={cn("px-1 flex flex-col gap-2", className)}> |
| 15 | <NodeDetailsImpl {...rest} /> |
| gio | fcefd7c | 2025-05-13 08:01:07 +0000 | [diff] [blame] | 16 | </div> |
| 17 | ); |
| 18 | } |
| 19 | |
| gio | 3fb133d | 2025-06-13 07:20:24 +0000 | [diff] [blame] | 20 | function NodeDetailsImpl(props: NodeDetailsProps) { |
| 21 | const { node, ...rest } = props; |
| gio | 08acd3a | 2025-06-12 12:15:30 +0000 | [diff] [blame] | 22 | switch (node.type) { |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 23 | case "app": |
| gio | 3fb133d | 2025-06-13 07:20:24 +0000 | [diff] [blame] | 24 | return <NodeAppDetails {...rest} node={node} />; |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 25 | case "gateway-https": |
| gio | 3fb133d | 2025-06-13 07:20:24 +0000 | [diff] [blame] | 26 | return <NodeGatewayHttpsDetails {...rest} node={node} />; |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 27 | case "gateway-tcp": |
| gio | 3fb133d | 2025-06-13 07:20:24 +0000 | [diff] [blame] | 28 | return <NodeGatewayTCPDetails {...rest} node={node} />; |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 29 | case "volume": |
| gio | 3fb133d | 2025-06-13 07:20:24 +0000 | [diff] [blame] | 30 | return <NodeVolumeDetails {...rest} node={node} />; |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 31 | case "postgresql": |
| gio | 3fb133d | 2025-06-13 07:20:24 +0000 | [diff] [blame] | 32 | return <NodePostgreSQLDetails {...rest} node={node} />; |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 33 | case "mongodb": |
| gio | 3fb133d | 2025-06-13 07:20:24 +0000 | [diff] [blame] | 34 | return <NodeMongoDBDetails {...rest} node={node} />; |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 35 | case "github": |
| gio | 3fb133d | 2025-06-13 07:20:24 +0000 | [diff] [blame] | 36 | return <NodeGithubDetails {...rest} node={node} />; |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 37 | default: |
| 38 | return <>nooo</>; |
| 39 | } |
| 40 | } |