@eventcatalog/core 2.10.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +10 -2
- package/images/sponsors/gravitee-logo-black.svg +54 -0
- package/package.json +7 -3
- package/public/icons/discord.svg +1 -0
- package/public/icons/github-purple.svg +1 -0
- package/scripts/eventcatalog-config-file-utils.js +3 -14
- package/src/components/DocsNavigation.astro +12 -12
- package/src/components/Header.astro +18 -18
- package/src/components/Lists/OwnersList.tsx +21 -58
- package/src/components/Lists/PillList.tsx +20 -16
- package/src/components/Lists/PillListFlat.styles.css +8 -0
- package/src/components/Lists/PillListFlat.tsx +69 -0
- package/src/components/Lists/SpecificationsList.astro +4 -4
- package/src/components/Lists/VersionList.astro +33 -13
- package/src/components/Search.astro +5 -2
- package/src/components/SideBars/CatalogResourcesSideBar/index.tsx +120 -0
- package/src/components/SideBars/CatalogResourcesSideBar/styles.css +8 -0
- package/src/components/SideBars/DomainSideBar.astro +15 -8
- package/src/components/SideBars/MessageSideBar.astro +51 -43
- package/src/components/SideBars/ServiceSideBar.astro +23 -31
- package/src/components/Tables/Table.tsx +2 -2
- package/src/components/Tables/columns/MessageTableColumns.tsx +4 -4
- package/src/components/Tables/columns/ServiceTableColumns.tsx +4 -4
- package/src/layouts/DiscoverLayout.astro +7 -7
- package/src/layouts/Footer.astro +1 -1
- package/src/layouts/VerticalSideBarLayout.astro +312 -0
- package/src/layouts/VisualiserLayout.astro +6 -10
- package/src/pages/docs/[type]/[id]/[version]/asyncapi/index.astro +3 -2
- package/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +40 -5
- package/src/pages/docs/[type]/[id]/[version]/index.astro +149 -144
- package/src/pages/docs/[type]/[id]/[version]/spec/index.astro +13 -3
- package/src/pages/docs/[type]/[id]/[version]/spec/styles.css +3 -0
- package/src/pages/docs/index.astro +4 -4
- package/src/pages/docs/teams/[id]/index.astro +13 -10
- package/src/pages/docs/users/[id]/index.astro +115 -91
- package/src/pages/index.astro +83 -63
- package/src/pages/visualiser/[type]/[id]/[version]/index.astro +3 -1
- package/src/utils/collections/icons.ts +33 -0
- package/tailwind.config.mjs +2 -1
- package/src/components/Lists/BasicList.tsx +0 -59
- package/src/layouts/DocsLayout.astro +0 -62
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
import
|
|
2
|
+
import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
|
|
3
3
|
import Footer from '@layouts/Footer.astro';
|
|
4
4
|
|
|
5
5
|
import components from '@components/MDX/components';
|
|
@@ -17,6 +17,7 @@ import type { PageTypes } from '@types';
|
|
|
17
17
|
import { buildUrl } from '@utils/url-builder';
|
|
18
18
|
import { getFlows } from '@utils/flows/flows';
|
|
19
19
|
import { pageDataLoader } from '@utils/pages/pages';
|
|
20
|
+
import { ViewTransitions } from 'astro:transitions';
|
|
20
21
|
|
|
21
22
|
type PageTypesWithFlows = PageTypes | 'flows';
|
|
22
23
|
|
|
@@ -114,164 +115,168 @@ const getSpecificationBadges = () => {
|
|
|
114
115
|
const badges = [getBadge(), ...contentBadges, ...getSpecificationBadges()];
|
|
115
116
|
---
|
|
116
117
|
|
|
117
|
-
<
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
<VerticalSideBarLayout title={pageTitle} description={props.data.summary}>
|
|
119
|
+
<main class="flex sm:px-8 docs-layout h-full">
|
|
120
|
+
<div class="flex docs-layout w-full">
|
|
121
|
+
<div class="w-full lg:mr-2 pr-8 overflow-y-auto py-8">
|
|
122
|
+
<div class="border-b border-gray-200 flex justify-between items-start md:pb-2">
|
|
123
|
+
<div>
|
|
124
|
+
<h2 class="text-2xl md:text-4xl font-bold text-black">
|
|
125
|
+
{props.data.name}
|
|
126
|
+
<span class="">(v{props.data.version})</span>
|
|
127
|
+
</h2>
|
|
128
|
+
<h2 class="text-lg pt-2 text-gray-500 font-light">{props.data.summary}</h2>
|
|
129
|
+
{
|
|
130
|
+
badges && (
|
|
131
|
+
<div class="flex flex-wrap py-2 pt-4">
|
|
132
|
+
{badges.map((badge: any) => {
|
|
133
|
+
return (
|
|
134
|
+
<a href={badge.url || '#'} class="pb-2">
|
|
135
|
+
<span
|
|
136
|
+
id={badge.id || ''}
|
|
137
|
+
class={`text-sm font-light text-gray-500 px-2 py-1 rounded-md mr-2 bg-gradient-to-b from-${badge.backgroundColor}-100 to-${badge.backgroundColor}-200 space-x-1 border border-${badge.backgroundColor}-200 text-${badge.textColor}-800 flex items-center ${badge.class ? badge.class : ''} `}
|
|
138
|
+
>
|
|
139
|
+
{badge.icon && <badge.icon className="w-4 h-4 inline-block mr-1 " />}
|
|
140
|
+
{badge.iconURL && <img src={badge.iconURL} class="w-5 h-5 inline-block " />}
|
|
141
|
+
<span>{badge.content}</span>
|
|
142
|
+
</span>
|
|
143
|
+
</a>
|
|
144
|
+
);
|
|
145
|
+
})}
|
|
146
|
+
</div>
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
122
152
|
<div>
|
|
123
|
-
<h2 class="text-2xl md:text-4xl font-bold">
|
|
124
|
-
{props.data.name}
|
|
125
|
-
<span class="text-gray-300">(v{props.data.version})</span>
|
|
126
|
-
</h2>
|
|
127
|
-
<h2 class="text-lg pt-2 text-gray-500 font-light">{props.data.summary}</h2>
|
|
128
153
|
{
|
|
129
|
-
|
|
130
|
-
<div class="
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
<
|
|
134
|
-
<
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
</
|
|
143
|
-
|
|
144
|
-
|
|
154
|
+
props.data.version !== props.data.latestVersion && (
|
|
155
|
+
<div class="rounded-md bg-gradient-to-r from-purple-50 to-purple-100 p-4 not-prose my-4">
|
|
156
|
+
<div class="flex">
|
|
157
|
+
<div class="flex-shrink-0">
|
|
158
|
+
<svg class="h-5 w-5 text-purple-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
|
159
|
+
<path
|
|
160
|
+
fill-rule="evenodd"
|
|
161
|
+
d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z"
|
|
162
|
+
clip-rule="evenodd"
|
|
163
|
+
/>
|
|
164
|
+
</svg>
|
|
165
|
+
</div>
|
|
166
|
+
<div class="ml-3">
|
|
167
|
+
<h3 class="text-sm font-medium text-purple-800">New version found</h3>
|
|
168
|
+
<div class="mt-2 text-sm text-purple-700">
|
|
169
|
+
<p>
|
|
170
|
+
You are looking at a previous version of the {props.collection.slice(0, props.collection.length - 1)}{' '}
|
|
171
|
+
<strong>{props.data.name}</strong>.{' '}
|
|
172
|
+
<a
|
|
173
|
+
class="underline hover:text-primary block pt-2"
|
|
174
|
+
href={buildUrl(`/docs/${props.collection}/${props.data.id}/${props.data.latestVersion}`)}
|
|
175
|
+
>
|
|
176
|
+
The latest version of this {props.collection.slice(0, props.collection.length - 1)} is v
|
|
177
|
+
{props.data.latestVersion} →
|
|
178
|
+
</a>
|
|
179
|
+
</p>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
145
183
|
</div>
|
|
146
184
|
)
|
|
147
185
|
}
|
|
148
186
|
</div>
|
|
149
|
-
</div>
|
|
150
187
|
|
|
151
|
-
|
|
188
|
+
<div class="prose prose-md py-4 w-full">
|
|
189
|
+
<Content components={components(props)} />
|
|
190
|
+
</div>
|
|
191
|
+
<div>
|
|
192
|
+
<!-- @ts-ignore -->
|
|
193
|
+
<SchemaViewer id={props.data.id} catalog={props.catalog} />
|
|
194
|
+
<NodeGraph
|
|
195
|
+
id={props.data.id}
|
|
196
|
+
collection={props.collection}
|
|
197
|
+
version={props.data.version}
|
|
198
|
+
mode="simple"
|
|
199
|
+
linksToVisualiser={true}
|
|
200
|
+
href={{
|
|
201
|
+
label: 'Open in Visualiser',
|
|
202
|
+
url: buildUrl(`/visualiser/${props.collection}/${props.data.id}/${props.data.version}`),
|
|
203
|
+
}}
|
|
204
|
+
/>
|
|
205
|
+
</div>
|
|
206
|
+
<Footer />
|
|
207
|
+
</div>
|
|
208
|
+
<aside class="hidden lg:block sticky top-0 pb-10 w-96 overflow-y-auto py-2">
|
|
209
|
+
<!-- @ts-ignore -->
|
|
152
210
|
{
|
|
153
|
-
props.
|
|
154
|
-
<
|
|
155
|
-
<div class="flex">
|
|
156
|
-
<div class="flex-shrink-0">
|
|
157
|
-
<svg class="h-5 w-5 text-yellow-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
|
158
|
-
<path
|
|
159
|
-
fill-rule="evenodd"
|
|
160
|
-
d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z"
|
|
161
|
-
clip-rule="evenodd"
|
|
162
|
-
/>
|
|
163
|
-
</svg>
|
|
164
|
-
</div>
|
|
165
|
-
<div class="ml-3">
|
|
166
|
-
<h3 class="text-sm font-medium text-yellow-800">New version found</h3>
|
|
167
|
-
<div class="mt-2 text-sm text-yellow-700">
|
|
168
|
-
<p>
|
|
169
|
-
You are looking at a previous version of the {props.collection.slice(0, props.collection.length - 1)}{' '}
|
|
170
|
-
<strong>{props.data.name}</strong>.{' '}
|
|
171
|
-
<a
|
|
172
|
-
class="underline hover:text-primary block pt-2"
|
|
173
|
-
href={buildUrl(`/docs/${props.collection}/${props.data.id}/${props.data.latestVersion}`)}
|
|
174
|
-
>
|
|
175
|
-
The latest version of this {props.collection.slice(0, props.collection.length - 1)} is v
|
|
176
|
-
{props.data.latestVersion} →
|
|
177
|
-
</a>
|
|
178
|
-
</p>
|
|
179
|
-
</div>
|
|
180
|
-
</div>
|
|
181
|
-
</div>
|
|
182
|
-
</div>
|
|
211
|
+
(props?.collection === 'events' || props.collection === 'commands' || props.collection === 'queries') && (
|
|
212
|
+
<MessageSideBar message={props} />
|
|
183
213
|
)
|
|
184
214
|
}
|
|
185
|
-
|
|
215
|
+
{props?.collection === 'services' && <ServiceSideBar service={props} />}
|
|
216
|
+
{props?.collection === 'domains' && <DomainSideBar domain={props} />}
|
|
217
|
+
</aside>
|
|
218
|
+
</div>
|
|
219
|
+
<ViewTransitions />
|
|
220
|
+
</main>
|
|
186
221
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
<NodeGraph
|
|
194
|
-
id={props.data.id}
|
|
195
|
-
collection={props.collection}
|
|
196
|
-
version={props.data.version}
|
|
197
|
-
mode="simple"
|
|
198
|
-
linksToVisualiser={true}
|
|
199
|
-
href={{
|
|
200
|
-
label: 'Open in Visualiser',
|
|
201
|
-
url: buildUrl(`/visualiser/${props.collection}/${props.data.id}/${props.data.version}`),
|
|
202
|
-
}}
|
|
203
|
-
/>
|
|
204
|
-
</div>
|
|
205
|
-
<Footer />
|
|
206
|
-
</main>
|
|
207
|
-
<aside class="hidden lg:block sticky top-20 h-[calc(100vh-theme(spacing.16))] w-56 overflow-y-auto">
|
|
208
|
-
<!-- @ts-ignore -->
|
|
209
|
-
{
|
|
210
|
-
(props?.collection === 'events' || props.collection === 'commands' || props.collection === 'queries') && (
|
|
211
|
-
<MessageSideBar message={props} />
|
|
212
|
-
)
|
|
213
|
-
}
|
|
214
|
-
{props?.collection === 'services' && <ServiceSideBar service={props} />}
|
|
215
|
-
{props?.collection === 'domains' && <DomainSideBar domain={props} />}
|
|
216
|
-
</aside>
|
|
217
|
-
</div>
|
|
218
|
-
</DocsLayout>
|
|
219
|
-
|
|
220
|
-
<style is:global>
|
|
221
|
-
.docs-layout .prose {
|
|
222
|
-
max-width: none;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
.mermaid svg {
|
|
226
|
-
margin: 1em auto 2em;
|
|
227
|
-
}
|
|
222
|
+
<style is:global>
|
|
223
|
+
.docs-layout .prose {
|
|
224
|
+
max-width: none;
|
|
225
|
+
/* max-height: 80vh; */
|
|
226
|
+
overflow: auto;
|
|
227
|
+
}
|
|
228
228
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
</style>
|
|
229
|
+
.mermaid svg {
|
|
230
|
+
margin: 1em auto 2em;
|
|
231
|
+
}
|
|
233
232
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
// @ts-ignore
|
|
239
|
-
window.eventcatalog[`${props.collection}-${props.data.id}`] = props.catalog;
|
|
240
|
-
</script>
|
|
233
|
+
.mermaid tspan {
|
|
234
|
+
font-size: 8em;
|
|
235
|
+
}
|
|
236
|
+
</style>
|
|
241
237
|
|
|
242
|
-
<script>
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
fontSize: 2,
|
|
250
|
-
flowchart: {
|
|
251
|
-
curve: 'linear',
|
|
252
|
-
rankSpacing: 0,
|
|
253
|
-
nodeSpacing: 0,
|
|
254
|
-
},
|
|
255
|
-
startOnLoad: false,
|
|
256
|
-
fontFamily: 'var(--sans-font)',
|
|
257
|
-
// @ts-ignore This works, but TS expects a enum for some reason
|
|
258
|
-
theme: window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'default',
|
|
259
|
-
});
|
|
238
|
+
<script define:vars={{ props }}>
|
|
239
|
+
// Fix to pass information to componets that are client side only
|
|
240
|
+
// and require catalog information
|
|
241
|
+
window.eventcatalog = {};
|
|
242
|
+
// @ts-ignore
|
|
243
|
+
window.eventcatalog[`${props.collection}-${props.data.id}`] = props.catalog;
|
|
244
|
+
</script>
|
|
260
245
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
mermaid.
|
|
268
|
-
|
|
246
|
+
<script>
|
|
247
|
+
/**
|
|
248
|
+
* @params {HTMLCollectionOf<HTMLElement>} graphs
|
|
249
|
+
*/
|
|
250
|
+
async function renderDiagrams(graphs: any) {
|
|
251
|
+
const { default: mermaid } = await import('mermaid');
|
|
252
|
+
mermaid.initialize({
|
|
253
|
+
fontSize: 2,
|
|
254
|
+
flowchart: {
|
|
255
|
+
curve: 'linear',
|
|
256
|
+
rankSpacing: 0,
|
|
257
|
+
nodeSpacing: 0,
|
|
258
|
+
},
|
|
259
|
+
startOnLoad: false,
|
|
260
|
+
fontFamily: 'var(--sans-font)',
|
|
261
|
+
// @ts-ignore This works, but TS expects a enum for some reason
|
|
262
|
+
theme: window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'default',
|
|
269
263
|
});
|
|
264
|
+
|
|
265
|
+
for (const graph of graphs) {
|
|
266
|
+
const content = graph.getAttribute('data-content');
|
|
267
|
+
if (!content) continue;
|
|
268
|
+
let svg = document.createElement('svg');
|
|
269
|
+
const id = (svg.id = 'mermaid-' + Math.round(Math.random() * 100000));
|
|
270
|
+
graph.appendChild(svg);
|
|
271
|
+
mermaid.render(id, content).then((result) => {
|
|
272
|
+
graph.innerHTML = result.svg;
|
|
273
|
+
});
|
|
274
|
+
}
|
|
270
275
|
}
|
|
271
|
-
}
|
|
272
276
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
</script>
|
|
277
|
+
const graphs = document.getElementsByClassName('mermaid');
|
|
278
|
+
if (document.getElementsByClassName('mermaid').length > 0) {
|
|
279
|
+
renderDiagrams(graphs);
|
|
280
|
+
}
|
|
281
|
+
</script>
|
|
282
|
+
</VerticalSideBarLayout>
|
|
@@ -8,6 +8,8 @@ import PlainPage from '@layouts/PlainPage.astro';
|
|
|
8
8
|
import { DocumentMinusIcon } from '@heroicons/react/24/outline';
|
|
9
9
|
import { buildUrl } from '@utils/url-builder';
|
|
10
10
|
import { pageDataLoader } from '@utils/pages/pages';
|
|
11
|
+
import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
|
|
12
|
+
import './styles.css';
|
|
11
13
|
|
|
12
14
|
export async function getStaticPaths() {
|
|
13
15
|
const itemTypes: PageTypes[] = ['events', 'commands', 'queries', 'services', 'domains'];
|
|
@@ -40,7 +42,7 @@ const pathOnDisk = path.join(process.cwd(), 'public', pathToSpec);
|
|
|
40
42
|
const fileExists = fs.existsSync(pathOnDisk);
|
|
41
43
|
---
|
|
42
44
|
|
|
43
|
-
<
|
|
45
|
+
<VerticalSideBarLayout title="OpenAPI Spec" }>
|
|
44
46
|
{
|
|
45
47
|
!fileExists ? (
|
|
46
48
|
<div class="text-center h-screen flex flex-col justify-center ">
|
|
@@ -75,7 +77,7 @@ const fileExists = fs.existsSync(pathOnDisk);
|
|
|
75
77
|
/>
|
|
76
78
|
)
|
|
77
79
|
}
|
|
78
|
-
</
|
|
80
|
+
</VerticalSideBarLayout>
|
|
79
81
|
|
|
80
82
|
<script>
|
|
81
83
|
// @ts-ignore
|
|
@@ -97,10 +99,18 @@ const fileExists = fs.existsSync(pathOnDisk);
|
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
rapi-doc::part(section-navbar-search) {
|
|
100
|
-
margin: 0;
|
|
102
|
+
margin: 0 10px;
|
|
101
103
|
padding: 0;
|
|
102
104
|
margin-bottom: 1em;
|
|
103
105
|
}
|
|
106
|
+
rapi-doc::part(section-navbar) {
|
|
107
|
+
margin: 0;
|
|
108
|
+
padding: 10px important;
|
|
109
|
+
margin-bottom: 1em;
|
|
110
|
+
background-image: linear-gradient(to bottom, rgb(255, 255, 255), rgb(243, 244, 246));
|
|
111
|
+
border-right-width: 1px;
|
|
112
|
+
border-right-color: rgb(229, 231, 235);
|
|
113
|
+
}
|
|
104
114
|
rapi-doc::part(section-overview) {
|
|
105
115
|
margin: 0 2em 0 2em;
|
|
106
116
|
padding: 1em 0 1em;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
import Layout from '@layouts/DocsLayout.astro';
|
|
3
2
|
import Footer from '@layouts/Footer.astro';
|
|
4
3
|
import DefaultDocsLandingPage from '@layouts/CustomDocsPageLayout.astro';
|
|
5
4
|
import components from '@components/MDX/page-components';
|
|
6
5
|
import { getIndexPage } from '@utils/pages';
|
|
6
|
+
import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
|
|
7
7
|
|
|
8
8
|
const page = await getIndexPage();
|
|
9
9
|
let CustomContent = null;
|
|
@@ -16,14 +16,14 @@ if (page) {
|
|
|
16
16
|
|
|
17
17
|
{
|
|
18
18
|
CustomContent && (
|
|
19
|
-
<
|
|
20
|
-
<main class="py-8">
|
|
19
|
+
<VerticalSideBarLayout title="EventCatalog">
|
|
20
|
+
<main class="py-8 px-8">
|
|
21
21
|
<div class="prose prose-md w-full !max-w-none">
|
|
22
22
|
<CustomContent components={components} />
|
|
23
23
|
</div>
|
|
24
24
|
<Footer />
|
|
25
25
|
</main>
|
|
26
|
-
</
|
|
26
|
+
</VerticalSideBarLayout>
|
|
27
27
|
)
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
---
|
|
2
|
-
import DocsLayout from '@layouts/DocsLayout.astro';
|
|
3
|
-
|
|
4
2
|
import components from '@components/MDX/components';
|
|
5
3
|
|
|
6
4
|
// SideBars
|
|
@@ -8,9 +6,10 @@ import { getTeams } from '@utils/teams';
|
|
|
8
6
|
import { getEntry } from 'astro:content';
|
|
9
7
|
import type { CollectionEntry } from 'astro:content';
|
|
10
8
|
import OwnersList from '@components/Lists/OwnersList';
|
|
11
|
-
import
|
|
9
|
+
import PillListFlat from '@components/Lists/PillListFlat';
|
|
12
10
|
import EnvelopeIcon from '@heroicons/react/16/solid/EnvelopeIcon';
|
|
13
11
|
import { buildUrl } from '@utils/url-builder';
|
|
12
|
+
import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
|
|
14
13
|
|
|
15
14
|
export async function getStaticPaths() {
|
|
16
15
|
const teams = await getTeams();
|
|
@@ -43,12 +42,14 @@ const membersList = members.map((o) => ({
|
|
|
43
42
|
label: o.data.name,
|
|
44
43
|
type: o.collection,
|
|
45
44
|
badge: o.collection === 'users' ? o.data.role : 'Team',
|
|
45
|
+
collection: o.collection,
|
|
46
46
|
avatarUrl: o.collection === 'users' ? o.data.avatarUrl : '',
|
|
47
47
|
href: buildUrl(`/docs/${o.collection}/${o.data.id}`),
|
|
48
48
|
}));
|
|
49
49
|
|
|
50
50
|
const ownedDomainsList = domains.map((p) => ({
|
|
51
51
|
label: `${p.data.name}`,
|
|
52
|
+
collection: p.collection,
|
|
52
53
|
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
53
54
|
tag: `v${p.data.version}`,
|
|
54
55
|
}));
|
|
@@ -56,6 +57,7 @@ const ownedDomainsList = domains.map((p) => ({
|
|
|
56
57
|
const ownedServicesList = services.map((p) => ({
|
|
57
58
|
label: `${p.data.name} (service)`,
|
|
58
59
|
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
60
|
+
collection: p.collection,
|
|
59
61
|
tag: `v${p.data.version}`,
|
|
60
62
|
}));
|
|
61
63
|
|
|
@@ -63,12 +65,13 @@ const ownedEventsList = [...events, ...commands].map((p) => ({
|
|
|
63
65
|
label: `${p.data.name} (${p.collection.slice(0, -1)})`,
|
|
64
66
|
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
65
67
|
color: p.collection === 'events' ? 'orange' : 'blue',
|
|
68
|
+
collection: p.collection,
|
|
66
69
|
tag: `v${p.data.version}`,
|
|
67
70
|
}));
|
|
68
71
|
---
|
|
69
72
|
|
|
70
|
-
<
|
|
71
|
-
<div class="flex min-h-screen docs-layout">
|
|
73
|
+
<VerticalSideBarLayout title={`Team | ${props.data.name}`} description={props.data.summary}>
|
|
74
|
+
<div class="flex min-h-screen docs-layout sm:px-8">
|
|
72
75
|
<main class="flex-1 w-full pr-10 pt-4">
|
|
73
76
|
<!-- <span class="text-purple-500 bg-purple-100 px-2 py-1 rounded-md">v{props.data.version}</span> -->
|
|
74
77
|
|
|
@@ -117,23 +120,23 @@ const ownedEventsList = [...events, ...commands].map((p) => ({
|
|
|
117
120
|
<NodeGraph id={props.data.id} type={props?.catalog?.type} nodes={props.nodes} masterNode={{ name: props.data.name, id: props.data.id }} client:load />
|
|
118
121
|
</div> -->
|
|
119
122
|
</main>
|
|
120
|
-
<aside class="sticky top-20 h-[calc(100vh-theme(spacing.16))] w-
|
|
123
|
+
<aside class="sticky top-20 h-[calc(100vh-theme(spacing.16))] w-72 overflow-y-auto">
|
|
121
124
|
<div class="divide-y-2 divide-gray-100">
|
|
122
|
-
<
|
|
125
|
+
<PillListFlat
|
|
123
126
|
color="pink"
|
|
124
127
|
title={`Owned domains (${ownedDomainsList.length})`}
|
|
125
128
|
pills={ownedDomainsList}
|
|
126
129
|
emptyMessage={`${props.data.name} does not own any domains.`}
|
|
127
130
|
client:load
|
|
128
131
|
/>
|
|
129
|
-
<
|
|
132
|
+
<PillListFlat
|
|
130
133
|
color="blue"
|
|
131
134
|
title={`Owned services (${ownedServicesList.length})`}
|
|
132
135
|
pills={ownedServicesList}
|
|
133
136
|
emptyMessage={`This team does not own any services .`}
|
|
134
137
|
client:load
|
|
135
138
|
/>
|
|
136
|
-
<
|
|
139
|
+
<PillListFlat
|
|
137
140
|
color="red"
|
|
138
141
|
title={`Owned messages (${ownedEventsList.length})`}
|
|
139
142
|
pills={ownedEventsList}
|
|
@@ -150,7 +153,7 @@ const ownedEventsList = [...events, ...commands].map((p) => ({
|
|
|
150
153
|
<!-- {props?.collection === 'events' && <MessageSideBar message={props} />} -->
|
|
151
154
|
</aside>
|
|
152
155
|
</div>
|
|
153
|
-
</
|
|
156
|
+
</VerticalSideBarLayout>
|
|
154
157
|
|
|
155
158
|
<style>
|
|
156
159
|
.docs-layout .prose {
|