Skip to content

Commit 337bfeb

Browse files
Merge pull request #669 from kavishkafernando/main
Add Ecosystem Blade
2 parents 47137fc + 263a775 commit 337bfeb

20 files changed

Lines changed: 502 additions & 60 deletions

docs/reference/helm/observability-plane.mdx

Lines changed: 28 additions & 28 deletions
Large diffs are not rendered by default.

src/components/Ecosystem/index.tsx

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
import React, { JSX } from "react";
2+
import styles from "./styles.module.css";
3+
import SectionHeader from "../common/SectionHeader";
4+
import Button from "@site/src/components/common/Button";
5+
6+
type StackLogo = {
7+
name: string;
8+
logos: string[];
9+
x: number;
10+
y: number;
11+
lineX?: number;
12+
lineY?: number;
13+
};
14+
15+
const stackLogos: StackLogo[] = [
16+
{
17+
name: "Identity providers",
18+
logos: [
19+
"/img/logos/ecosystem-logo-okta.webp",
20+
"/img/logos/ecosystem-logo-keycloak.webp",
21+
"/img/logos/ecosystem-logo-ory.webp",
22+
],
23+
x: 50,
24+
y: 6,
25+
lineX: 50,
26+
lineY: 13,
27+
},
28+
{
29+
name: "CI systems",
30+
logos: [
31+
"/img/logos/tech-logo-argo.webp",
32+
"/img/logos/ecosystem-logo-githubactions.webp",
33+
"/img/logos/ecosystem-logo-jenkins.webp",
34+
],
35+
x: 76,
36+
y: 18,
37+
},
38+
{
39+
name: "GitOps integrations",
40+
logos: [
41+
"/img/logos/tech-logo-flux.svg",
42+
"/img/logos/ecosystem-logo-weave.webp",
43+
"/img/logos/tech-logo-argo.webp",
44+
],
45+
x: 91,
46+
y: 47,
47+
},
48+
{
49+
name: "API gateways",
50+
logos: [
51+
"/img/logos/ecosystem-logo-wso2.webp",
52+
"/img/logos/tech-logo-kgateway.svg",
53+
"/img/logos/ecosystem-logo-apisix.webp",
54+
],
55+
x: 76,
56+
y: 78,
57+
},
58+
{
59+
name: "AI gateways",
60+
logos: [
61+
"/img/logos/ecosystem-logo-agentgateway.webp",
62+
"/img/logos/ecosystem-logo-wso2.webp",
63+
"/img/logos/ecosystem-logo-envoy.webp",
64+
],
65+
x: 50,
66+
y: 92,
67+
},
68+
{
69+
name: "Observability",
70+
logos: [
71+
"/img/logos/tech-logo-opensearch.webp",
72+
"/img/logos/tech-logo-prometheus.webp",
73+
"/img/logos/tech-logo-opentelemetry.svg",
74+
],
75+
x: 24,
76+
y: 78,
77+
},
78+
{
79+
name: "Network & Security",
80+
logos: [
81+
"/img/logos/tech-logo-cilium.webp",
82+
"/img/logos/ecosystem-logo-istio.webp",
83+
"/img/logos/ecosystem-logo-linkerd.webp",
84+
],
85+
x: 9,
86+
y: 47,
87+
},
88+
{
89+
name: "Infrastructure provisioners",
90+
logos: [
91+
"/img/logos/ecosystem-logo-crossplane.webp",
92+
"/img/logos/ecosystem-logo-opentofu.webp",
93+
"/img/logos/ecosystem-logo-pulumi.webp",
94+
],
95+
x: 24,
96+
y: 18,
97+
},
98+
];
99+
100+
export default function Ecosystem(): JSX.Element {
101+
return (
102+
<section className={styles.blade}>
103+
<div className={styles.inner}>
104+
<SectionHeader title="Built to Integrate With Your Stack">
105+
<p>
106+
OpenChoreo’s modular architecture lets you integrate, extend, and
107+
customize platform services without rebuilding your foundation.
108+
</p>
109+
110+
<div className={styles.actions}>
111+
<Button to="/ecosystem/">Explore the Ecosystem</Button>
112+
</div>
113+
</SectionHeader>
114+
115+
<div
116+
className={styles.graphic}
117+
aria-label="OpenChoreo ecosystem integrations"
118+
>
119+
<div className={styles.orbitOuter} />
120+
<div className={styles.orbitInner} />
121+
122+
<svg
123+
className={styles.lines}
124+
viewBox="0 0 100 100"
125+
aria-hidden="true"
126+
>
127+
{stackLogos.map((item) => (
128+
<line
129+
key={item.name}
130+
x1="50"
131+
y1="50"
132+
x2={item.lineX ?? item.x}
133+
y2={item.lineY ?? item.y}
134+
/>
135+
))}
136+
</svg>
137+
138+
<div className={styles.center}>
139+
<img src="/img/openchoreo-logo.svg" alt="OpenChoreo" />
140+
</div>
141+
142+
{stackLogos.map((item) => (
143+
<div
144+
key={item.name}
145+
className={styles.node}
146+
style={
147+
{
148+
"--x": `${item.x}%`,
149+
"--y": `${item.y}%`,
150+
} as React.CSSProperties
151+
}
152+
>
153+
<span className={styles.logoCluster}>
154+
{item.logos.map((logo) => (
155+
<span key={logo} className={styles.logo}>
156+
<img src={logo} alt="" loading="lazy" />
157+
</span>
158+
))}
159+
</span>
160+
<span className={styles.label}>{item.name}</span>
161+
</div>
162+
))}
163+
</div>
164+
</div>
165+
</section>
166+
);
167+
}

0 commit comments

Comments
 (0)