@eventcatalog/core 2.65.0 → 3.0.0-beta.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/README.md +1 -26
- package/dist/analytics/analytics.cjs +1 -1
- package/dist/analytics/analytics.js +2 -2
- package/dist/analytics/log-build.cjs +1 -1
- package/dist/analytics/log-build.js +3 -3
- package/dist/{chunk-NK6OYMRD.js → chunk-JB4YT5JY.js} +1 -1
- package/dist/{chunk-BMDTX5IN.js → chunk-TQ4HZREX.js} +1 -1
- package/dist/{chunk-IJRFYF4B.js → chunk-X4W4YC3U.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog.cjs +1 -21
- package/dist/eventcatalog.config.d.cts +10 -0
- package/dist/eventcatalog.config.d.ts +10 -0
- package/dist/eventcatalog.js +3 -20
- package/eventcatalog/src/components/CopyAsMarkdown.tsx +19 -1
- package/eventcatalog/src/components/FavoriteButton.tsx +54 -0
- package/eventcatalog/src/components/Grids/DomainGrid.tsx +386 -362
- package/eventcatalog/src/components/Grids/MessageGrid.tsx +166 -518
- package/eventcatalog/src/components/Header.astro +48 -23
- package/eventcatalog/src/components/Lists/VersionList.astro +2 -2
- package/eventcatalog/src/components/MDX/Design/Design.astro +4 -1
- package/eventcatalog/src/components/MDX/Flow/Flow.astro +2 -1
- package/eventcatalog/src/components/MDX/NodeGraph/NodeGraph.astro +3 -3
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsPanel.tsx +8 -2
- package/eventcatalog/src/components/SchemaExplorer/SchemaPageViewer.tsx +37 -0
- package/eventcatalog/src/components/Search/Search.astro +48 -28
- package/eventcatalog/src/components/Search/SearchModal.tsx +393 -702
- package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +298 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/builders/container.ts +66 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/builders/domain.ts +101 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/builders/flow.ts +29 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/builders/message.ts +84 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/builders/service.ts +147 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/builders/shared.ts +146 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +1073 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/sidebar-builder.ts +365 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/storage.ts +90 -0
- package/eventcatalog/src/components/SideNav/SideNav.astro +18 -28
- package/eventcatalog/src/content.config.ts +2 -0
- package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/index.astro +10 -4
- package/eventcatalog/src/enterprise/eventcatalog-chat/pages/chat/index.astro +3 -3
- package/eventcatalog/src/layouts/DirectoryLayout.astro +2 -2
- package/eventcatalog/src/layouts/DiscoverLayout.astro +3 -3
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +85 -63
- package/eventcatalog/src/layouts/VisualiserLayout.astro +3 -3
- package/eventcatalog/src/pages/_index.astro +530 -110
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.ts +64 -0
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +29 -0
- package/eventcatalog/src/pages/directory/[type]/_index.data.ts +4 -4
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/_index.data.ts +1 -4
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/_index.data.ts +3 -3
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -5
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +362 -190
- package/eventcatalog/src/pages/docs/[type]/[id]/[version].md.ts +1 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/index.astro +4 -4
- package/eventcatalog/src/pages/docs/[type]/[id]/language/_index.data.ts +1 -4
- package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +3 -27
- package/eventcatalog/src/pages/docs/teams/[id]/_index.data.ts +2 -2
- package/eventcatalog/src/pages/docs/users/[id]/_index.data.ts +2 -2
- package/eventcatalog/src/pages/index.astro +14 -5
- package/eventcatalog/src/pages/nav-index.json.ts +30 -0
- package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/_index.data.ts +77 -0
- package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/index.astro +90 -0
- package/eventcatalog/src/pages/schemas/{index.astro → explorer/index.astro} +3 -3
- package/eventcatalog/src/pages/studio.astro +3 -3
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/_index.data.ts +4 -3
- package/eventcatalog/src/pages/visualiser/[type]/[id]/index.astro +2 -2
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/_index.data.ts +4 -3
- package/eventcatalog/src/stores/favorites-store.ts +83 -0
- package/eventcatalog/src/stores/sidebar-store.ts +8 -0
- package/eventcatalog/src/utils/collections/changelogs.ts +7 -4
- package/eventcatalog/src/utils/{channels.ts → collections/channels.ts} +81 -31
- package/eventcatalog/src/utils/collections/commands.ts +134 -0
- package/eventcatalog/src/utils/collections/containers.ts +44 -33
- package/eventcatalog/src/utils/collections/domains.ts +204 -62
- package/eventcatalog/src/utils/{entities.ts → collections/entities.ts} +44 -24
- package/eventcatalog/src/utils/collections/events.ts +136 -0
- package/eventcatalog/src/utils/collections/flows.ts +59 -25
- package/eventcatalog/src/utils/{messages.ts → collections/messages.ts} +13 -4
- package/eventcatalog/src/utils/{queries.ts → collections/queries.ts} +49 -28
- package/eventcatalog/src/utils/collections/services.ts +100 -68
- package/eventcatalog/src/utils/collections/teams.ts +94 -0
- package/eventcatalog/src/utils/collections/users.ts +122 -0
- package/eventcatalog/src/utils/collections/util.ts +57 -1
- package/eventcatalog/src/utils/feature.ts +3 -1
- package/eventcatalog/src/utils/{collections/file-diffs.ts → file-diffs.ts} +1 -1
- package/eventcatalog/src/utils/node-graphs/container-node-graph.ts +2 -0
- package/eventcatalog/src/utils/node-graphs/domain-entity-map.ts +16 -6
- package/eventcatalog/src/utils/node-graphs/domains-canvas.ts +14 -10
- package/eventcatalog/src/utils/node-graphs/domains-node-graph.ts +36 -64
- package/eventcatalog/src/utils/node-graphs/flows-node-graph.ts +23 -19
- package/eventcatalog/src/utils/node-graphs/message-node-graph.ts +36 -49
- package/eventcatalog/src/utils/node-graphs/services-node-graph.ts +22 -18
- package/eventcatalog/src/utils/page-loaders/page-data-loader.ts +4 -4
- package/eventcatalog/tailwind.config.mjs +14 -0
- package/eventcatalog/tsconfig.json +2 -1
- package/package.json +7 -4
- package/eventcatalog/public/logo_old.png +0 -0
- package/eventcatalog/src/components/DiscoverInsight.astro +0 -61
- package/eventcatalog/src/components/Grids/ServiceGrid.tsx +0 -534
- package/eventcatalog/src/components/Lists/CustomSideBarSectionList.astro +0 -55
- package/eventcatalog/src/components/Lists/ProtocolList.tsx +0 -74
- package/eventcatalog/src/components/Lists/RepositoryList.astro +0 -37
- package/eventcatalog/src/components/Lists/SpecificationsList.astro +0 -67
- package/eventcatalog/src/components/SideBars/ChannelSideBar.astro +0 -204
- package/eventcatalog/src/components/SideBars/ContainerSideBar.astro +0 -180
- package/eventcatalog/src/components/SideBars/DomainSideBar.astro +0 -273
- package/eventcatalog/src/components/SideBars/EntitySideBar.astro +0 -139
- package/eventcatalog/src/components/SideBars/FlowSideBar.astro +0 -128
- package/eventcatalog/src/components/SideBars/MessageSideBar.astro +0 -248
- package/eventcatalog/src/components/SideBars/ServiceSideBar.astro +0 -294
- package/eventcatalog/src/components/SideNav/ListViewSideBar/components/CollapsibleGroup.tsx +0 -46
- package/eventcatalog/src/components/SideNav/ListViewSideBar/components/MessageList.tsx +0 -78
- package/eventcatalog/src/components/SideNav/ListViewSideBar/components/SpecificationList.tsx +0 -83
- package/eventcatalog/src/components/SideNav/ListViewSideBar/index.tsx +0 -1250
- package/eventcatalog/src/components/SideNav/ListViewSideBar/types.ts +0 -91
- package/eventcatalog/src/components/SideNav/ListViewSideBar/utils.ts +0 -201
- package/eventcatalog/src/components/SideNav/TreeView/getTreeView.ts +0 -190
- package/eventcatalog/src/components/SideNav/TreeView/index.tsx +0 -94
- package/eventcatalog/src/components/TreeView/index.tsx +0 -328
- package/eventcatalog/src/components/TreeView/styles.module.css +0 -264
- package/eventcatalog/src/components/TreeView/useSlots.ts +0 -95
- package/eventcatalog/src/pages/architecture/[type]/index.astro +0 -14
- package/eventcatalog/src/pages/architecture/architecture.astro +0 -101
- package/eventcatalog/src/pages/architecture/docs/[type]/index.astro +0 -14
- package/eventcatalog/src/utils/commands.ts +0 -112
- package/eventcatalog/src/utils/events.ts +0 -108
- package/eventcatalog/src/utils/generators/index.ts +0 -10
- package/eventcatalog/src/utils/teams.ts +0 -72
- package/eventcatalog/src/utils/users.ts +0 -72
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
import OwnersList from '@components/Lists/OwnersList';
|
|
3
|
-
import PillListFlat from '@components/Lists/PillListFlat';
|
|
4
|
-
import RepositoryList from '@components/Lists/RepositoryList.astro';
|
|
5
|
-
import VersionList from '@components/Lists/VersionList.astro';
|
|
6
|
-
import { getUbiquitousLanguage, getMessagesForDomain, getParentDomains } from '@utils/collections/domains';
|
|
7
|
-
import CustomSideBarSectionList from '@components/Lists/CustomSideBarSectionList.astro';
|
|
8
|
-
import { getOwner } from '@utils/collections/owners';
|
|
9
|
-
import { buildUrl } from '@utils/url-builder';
|
|
10
|
-
import type { CollectionEntry } from 'astro:content';
|
|
11
|
-
import { ScrollText, Workflow } from 'lucide-react';
|
|
12
|
-
import { isChangelogEnabled } from '@utils/feature';
|
|
13
|
-
|
|
14
|
-
interface Props {
|
|
15
|
-
domain: CollectionEntry<'domains'>;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const { domain } = Astro.props;
|
|
19
|
-
|
|
20
|
-
// @ts-ignore
|
|
21
|
-
const services = (domain.data.services as CollectionEntry<'services'>[]) || [];
|
|
22
|
-
// @ts-ignore
|
|
23
|
-
const subDomains = (domain.data.domains as CollectionEntry<'domains'>[]) || [];
|
|
24
|
-
|
|
25
|
-
// @ts-ignore
|
|
26
|
-
const entities = (domain.data.entities as CollectionEntry<'entities'>[]) || [];
|
|
27
|
-
|
|
28
|
-
const attachments = domain.data.attachments || [];
|
|
29
|
-
|
|
30
|
-
const ubiquitousLanguage = await getUbiquitousLanguage(domain);
|
|
31
|
-
const hasUbiquitousLanguage = ubiquitousLanguage.length > 0;
|
|
32
|
-
const ubiquitousLanguageDictionary = hasUbiquitousLanguage ? ubiquitousLanguage[0].data.dictionary : [];
|
|
33
|
-
|
|
34
|
-
const ownersRaw = domain.data?.owners || [];
|
|
35
|
-
const owners = await Promise.all<ReturnType<typeof getOwner>>(ownersRaw.map(getOwner));
|
|
36
|
-
const filteredOwners = owners.filter((o) => o !== undefined);
|
|
37
|
-
|
|
38
|
-
const messagesForDomain = await getMessagesForDomain(domain);
|
|
39
|
-
|
|
40
|
-
const resourceGroups = domain.data?.resourceGroups || [];
|
|
41
|
-
|
|
42
|
-
const parentDomains = await getParentDomains(domain);
|
|
43
|
-
|
|
44
|
-
const serviceList = services.map((p) => ({
|
|
45
|
-
label: p.data.name,
|
|
46
|
-
badge: p.collection,
|
|
47
|
-
tag: `v${p.data.version}`,
|
|
48
|
-
collection: p.collection,
|
|
49
|
-
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
50
|
-
}));
|
|
51
|
-
|
|
52
|
-
const subDomainList = subDomains.map((p) => ({
|
|
53
|
-
label: p.data.name,
|
|
54
|
-
badge: p.collection,
|
|
55
|
-
tag: `v${p.data.version}`,
|
|
56
|
-
collection: p.collection,
|
|
57
|
-
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
58
|
-
}));
|
|
59
|
-
|
|
60
|
-
const parentDomainList = parentDomains.map((p) => ({
|
|
61
|
-
label: p.data.name,
|
|
62
|
-
badge: p.collection,
|
|
63
|
-
tag: `v${p.data.version}`,
|
|
64
|
-
collection: p.collection,
|
|
65
|
-
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
66
|
-
}));
|
|
67
|
-
|
|
68
|
-
const sendsList = messagesForDomain.sends
|
|
69
|
-
.sort((a, b) => a.collection.localeCompare(b.collection))
|
|
70
|
-
.map((p) => ({
|
|
71
|
-
label: p.data.name,
|
|
72
|
-
badge: p.collection,
|
|
73
|
-
tag: `v${p.data.version}`,
|
|
74
|
-
collection: p.collection,
|
|
75
|
-
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
76
|
-
}));
|
|
77
|
-
|
|
78
|
-
const receivesList = messagesForDomain.receives
|
|
79
|
-
.sort((a, b) => a.collection.localeCompare(b.collection))
|
|
80
|
-
.map((p) => ({
|
|
81
|
-
label: p.data.name,
|
|
82
|
-
badge: p.collection,
|
|
83
|
-
tag: `v${p.data.version}`,
|
|
84
|
-
collection: p.collection,
|
|
85
|
-
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
86
|
-
}));
|
|
87
|
-
|
|
88
|
-
const ubiquitousLanguageList = ubiquitousLanguageDictionary?.map((l) => ({
|
|
89
|
-
label: l.name,
|
|
90
|
-
badge: 'Ubiquitous Language',
|
|
91
|
-
collection: 'ubiquitousLanguages',
|
|
92
|
-
href: buildUrl(`/docs/${domain.collection}/${domain.data.id}/language?id=${l.id}`),
|
|
93
|
-
}));
|
|
94
|
-
|
|
95
|
-
const entityList = entities.map((p) => ({
|
|
96
|
-
label: p.data.name,
|
|
97
|
-
badge: p.collection,
|
|
98
|
-
tag: `v${p.data.version}`,
|
|
99
|
-
collection: p.collection,
|
|
100
|
-
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
101
|
-
}));
|
|
102
|
-
|
|
103
|
-
const ownersList = filteredOwners.map((o) => ({
|
|
104
|
-
label: o.data.name,
|
|
105
|
-
type: o.collection,
|
|
106
|
-
badge: o.collection === 'users' ? o.data.role : 'Team',
|
|
107
|
-
avatarUrl: o.collection === 'users' ? o.data.avatarUrl : '',
|
|
108
|
-
href: buildUrl(`/docs/${o.collection}/${o.data.id}`),
|
|
109
|
-
}));
|
|
110
|
-
|
|
111
|
-
const attachmentsList = attachments.map((a) => {
|
|
112
|
-
const attachmentIsURL = typeof a === 'string';
|
|
113
|
-
|
|
114
|
-
return {
|
|
115
|
-
label: attachmentIsURL ? a : (a.title ?? a.url),
|
|
116
|
-
href: attachmentIsURL ? a : a.url,
|
|
117
|
-
icon: attachmentIsURL ? 'ExternalLinkIcon' : (a.icon ?? 'ExternalLinkIcon'),
|
|
118
|
-
target: '_blank' as const,
|
|
119
|
-
subgroup: attachmentIsURL ? undefined : (a.type ?? ''),
|
|
120
|
-
};
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
const shouldRenderSideBarSection = (section: string) => {
|
|
124
|
-
if (!domain.data.detailsPanel) {
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
// @ts-ignore
|
|
128
|
-
return domain.data.detailsPanel[section]?.visible ?? true;
|
|
129
|
-
};
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
<aside class="sticky top-28 left-0 space-y-8 h-full overflow-y-auto py-4">
|
|
133
|
-
<div>
|
|
134
|
-
{
|
|
135
|
-
parentDomains.length > 0 && shouldRenderSideBarSection('parentDomains') && (
|
|
136
|
-
<PillListFlat
|
|
137
|
-
title={`Parent domains (${parentDomains.length})`}
|
|
138
|
-
pills={parentDomainList}
|
|
139
|
-
emptyMessage={`This domain does not have any parent domains.`}
|
|
140
|
-
color="pink"
|
|
141
|
-
icon="ServerIcon"
|
|
142
|
-
client:load
|
|
143
|
-
/>
|
|
144
|
-
)
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
{
|
|
148
|
-
subDomains.length > 0 && shouldRenderSideBarSection('subdomains') && (
|
|
149
|
-
<PillListFlat
|
|
150
|
-
title={`Subdomains (${subDomains.length})`}
|
|
151
|
-
pills={subDomainList}
|
|
152
|
-
emptyMessage={`This domain does not contain any subdomains.`}
|
|
153
|
-
color="pink"
|
|
154
|
-
icon="ServerIcon"
|
|
155
|
-
client:load
|
|
156
|
-
/>
|
|
157
|
-
)
|
|
158
|
-
}
|
|
159
|
-
{
|
|
160
|
-
resourceGroups
|
|
161
|
-
.filter((section) => section.items.length > 0 && section.sidebar)
|
|
162
|
-
.map((section) => <CustomSideBarSectionList section={section} />)
|
|
163
|
-
}
|
|
164
|
-
{
|
|
165
|
-
shouldRenderSideBarSection('services') && (
|
|
166
|
-
<PillListFlat
|
|
167
|
-
title={`Services (${services.length})`}
|
|
168
|
-
pills={serviceList}
|
|
169
|
-
emptyMessage={`This domain does not contain any services.`}
|
|
170
|
-
color="pink"
|
|
171
|
-
client:load
|
|
172
|
-
/>
|
|
173
|
-
)
|
|
174
|
-
}
|
|
175
|
-
{
|
|
176
|
-
shouldRenderSideBarSection('messages') && (
|
|
177
|
-
<PillListFlat
|
|
178
|
-
title={`Sends messages (${sendsList.length})`}
|
|
179
|
-
pills={sendsList}
|
|
180
|
-
emptyMessage={`This domain does not send any messages.`}
|
|
181
|
-
color="orange"
|
|
182
|
-
client:load
|
|
183
|
-
/>
|
|
184
|
-
)
|
|
185
|
-
}
|
|
186
|
-
{
|
|
187
|
-
shouldRenderSideBarSection('messages') && (
|
|
188
|
-
<PillListFlat
|
|
189
|
-
title={`Receives messages (${receivesList.length})`}
|
|
190
|
-
pills={receivesList}
|
|
191
|
-
emptyMessage={`This domain does not receive any messages.`}
|
|
192
|
-
color="orange"
|
|
193
|
-
client:load
|
|
194
|
-
/>
|
|
195
|
-
)
|
|
196
|
-
}
|
|
197
|
-
{
|
|
198
|
-
ubiquitousLanguageList && hasUbiquitousLanguage && shouldRenderSideBarSection('ubiquitousLanguage') && (
|
|
199
|
-
<PillListFlat
|
|
200
|
-
title={`Ubiquitous Language Dictionary (${ubiquitousLanguageDictionary?.length})`}
|
|
201
|
-
pills={ubiquitousLanguageList}
|
|
202
|
-
color="pink"
|
|
203
|
-
limit={4}
|
|
204
|
-
emptyMessage={`This domain does not have any documented ubiquitous language.`}
|
|
205
|
-
client:load
|
|
206
|
-
/>
|
|
207
|
-
)
|
|
208
|
-
}
|
|
209
|
-
{
|
|
210
|
-
entities.length > 0 && shouldRenderSideBarSection('entities') && (
|
|
211
|
-
<PillListFlat
|
|
212
|
-
title={`Entities (${entities.length})`}
|
|
213
|
-
pills={entityList}
|
|
214
|
-
emptyMessage={`This domain does not contain any entities.`}
|
|
215
|
-
color="pink"
|
|
216
|
-
client:load
|
|
217
|
-
/>
|
|
218
|
-
)
|
|
219
|
-
}
|
|
220
|
-
{
|
|
221
|
-
domain.data.versions && shouldRenderSideBarSection('versions') && (
|
|
222
|
-
<VersionList versions={domain.data.versions} collectionItem={domain} />
|
|
223
|
-
)
|
|
224
|
-
}
|
|
225
|
-
{
|
|
226
|
-
domain.data.attachments && shouldRenderSideBarSection('attachments') && (
|
|
227
|
-
<PillListFlat
|
|
228
|
-
title={`Attachments (${attachmentsList.length})`}
|
|
229
|
-
pills={attachmentsList}
|
|
230
|
-
emptyMessage={`This domain does not have any attachments.`}
|
|
231
|
-
color="pink"
|
|
232
|
-
client:load
|
|
233
|
-
/>
|
|
234
|
-
)
|
|
235
|
-
}
|
|
236
|
-
{
|
|
237
|
-
domain.data.repository && shouldRenderSideBarSection('repository') && (
|
|
238
|
-
<RepositoryList repository={domain.data.repository?.url} language={domain.data.repository?.language} />
|
|
239
|
-
)
|
|
240
|
-
}
|
|
241
|
-
{
|
|
242
|
-
shouldRenderSideBarSection('owners') && (
|
|
243
|
-
<OwnersList
|
|
244
|
-
title={`Owners (${ownersList.length})`}
|
|
245
|
-
owners={ownersList}
|
|
246
|
-
emptyMessage={`This domain does not have any documented owners.`}
|
|
247
|
-
client:load
|
|
248
|
-
/>
|
|
249
|
-
)
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
<div class="space-y-2">
|
|
253
|
-
<a
|
|
254
|
-
href={buildUrl(`/visualiser/${domain.collection}/${domain.data.id}/${domain.data.version}`)}
|
|
255
|
-
class="flex items-center justify-center space-x-2 text-center rounded-md w-full bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100/60 hover:text-primary"
|
|
256
|
-
>
|
|
257
|
-
<Workflow strokeWidth={2} size={16} />
|
|
258
|
-
<span class="block">View in visualiser</span>
|
|
259
|
-
</a>
|
|
260
|
-
{
|
|
261
|
-
isChangelogEnabled() && shouldRenderSideBarSection('changelog') && (
|
|
262
|
-
<a
|
|
263
|
-
href={buildUrl(`/docs/${domain.collection}/${domain.data.id}/${domain.data.latestVersion}/changelog`)}
|
|
264
|
-
class="flex items-center space-x-2 justify-center text-center rounded-md w-full bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100/60 hover:text-primary"
|
|
265
|
-
>
|
|
266
|
-
<ScrollText strokeWidth={2} size={16} />
|
|
267
|
-
<span class="block">Read changelog</span>
|
|
268
|
-
</a>
|
|
269
|
-
)
|
|
270
|
-
}
|
|
271
|
-
</div>
|
|
272
|
-
</div>
|
|
273
|
-
</aside>
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
import type { CollectionEntry } from 'astro:content';
|
|
3
|
-
import PillListFlat from '@components/Lists/PillListFlat';
|
|
4
|
-
import OwnersList from '@components/Lists/OwnersList';
|
|
5
|
-
import VersionList from '@components/Lists/VersionList.astro';
|
|
6
|
-
import { buildUrl } from '@utils/url-builder';
|
|
7
|
-
import { ScrollText } from 'lucide-react';
|
|
8
|
-
import { getOwner } from '@utils/collections/owners';
|
|
9
|
-
import { isChangelogEnabled } from '@utils/feature';
|
|
10
|
-
|
|
11
|
-
interface Props {
|
|
12
|
-
entity: CollectionEntry<'entities'>;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const { entity } = Astro.props;
|
|
16
|
-
|
|
17
|
-
const ownersRaw = entity.data?.owners || [];
|
|
18
|
-
const owners = await Promise.all<ReturnType<typeof getOwner>>(ownersRaw.map(getOwner));
|
|
19
|
-
const filteredOwners = owners.filter((o) => o !== undefined);
|
|
20
|
-
|
|
21
|
-
// @ts-ignore
|
|
22
|
-
const services = (entity.data.services as CollectionEntry<'services'>[]) || [];
|
|
23
|
-
// @ts-ignore
|
|
24
|
-
const domains = (entity.data.domains as CollectionEntry<'domains'>[]) || [];
|
|
25
|
-
|
|
26
|
-
const attachments = entity.data.attachments || [];
|
|
27
|
-
|
|
28
|
-
const attachmentsList = attachments.map((a) => {
|
|
29
|
-
const attachmentIsURL = typeof a === 'string';
|
|
30
|
-
return {
|
|
31
|
-
label: attachmentIsURL ? a : (a.title ?? a.url),
|
|
32
|
-
href: attachmentIsURL ? a : a.url,
|
|
33
|
-
icon: attachmentIsURL ? 'ExternalLinkIcon' : (a.icon ?? 'ExternalLinkIcon'),
|
|
34
|
-
target: '_blank' as const,
|
|
35
|
-
subgroup: attachmentIsURL ? undefined : (a.type ?? ''),
|
|
36
|
-
};
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
const ownersList = filteredOwners.map((o) => ({
|
|
40
|
-
label: o.data.name,
|
|
41
|
-
type: o.collection,
|
|
42
|
-
badge: o.collection === 'users' ? o.data.role : 'Team',
|
|
43
|
-
avatarUrl: o.collection === 'users' ? o.data.avatarUrl : '',
|
|
44
|
-
href: buildUrl(`/docs/${o.collection}/${o.data.id}`),
|
|
45
|
-
}));
|
|
46
|
-
|
|
47
|
-
const servicesList = services.map((p) => ({
|
|
48
|
-
label: p.data.name,
|
|
49
|
-
badge: p.collection,
|
|
50
|
-
color: 'pink',
|
|
51
|
-
collection: p.collection,
|
|
52
|
-
tag: `v${p.data.version}`,
|
|
53
|
-
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
54
|
-
}));
|
|
55
|
-
|
|
56
|
-
const domainsList = domains.map((p) => ({
|
|
57
|
-
label: p.data.name,
|
|
58
|
-
badge: p.collection,
|
|
59
|
-
color: 'blue',
|
|
60
|
-
collection: p.collection,
|
|
61
|
-
tag: `v${p.data.version}`,
|
|
62
|
-
href: buildUrl(`/docs/${p.collection}/${p.data.id}/${p.data.version}`),
|
|
63
|
-
}));
|
|
64
|
-
|
|
65
|
-
const shouldRenderSideBarSection = (section: string) => {
|
|
66
|
-
if (!entity.data.detailsPanel) {
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
// @ts-ignore
|
|
70
|
-
return entity.data.detailsPanel[section]?.visible ?? true;
|
|
71
|
-
};
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
<aside class="sticky top-28 left-0 space-y-8 h-full overflow-y-auto py-4">
|
|
75
|
-
<div class="">
|
|
76
|
-
{
|
|
77
|
-
shouldRenderSideBarSection('domains') && (
|
|
78
|
-
<PillListFlat
|
|
79
|
-
title={`Domains (${domainsList.length})`}
|
|
80
|
-
pills={domainsList}
|
|
81
|
-
emptyMessage={`This entity is not used in any domains.`}
|
|
82
|
-
color="blue"
|
|
83
|
-
client:load
|
|
84
|
-
/>
|
|
85
|
-
)
|
|
86
|
-
}
|
|
87
|
-
{
|
|
88
|
-
servicesList.length > 0 && shouldRenderSideBarSection('services') && (
|
|
89
|
-
<PillListFlat
|
|
90
|
-
title={`Services (${servicesList.length})`}
|
|
91
|
-
pills={servicesList}
|
|
92
|
-
emptyMessage={`This entity is not used in any services.`}
|
|
93
|
-
color="pink"
|
|
94
|
-
client:load
|
|
95
|
-
/>
|
|
96
|
-
)
|
|
97
|
-
}
|
|
98
|
-
{
|
|
99
|
-
entity.data.versions && shouldRenderSideBarSection('versions') && (
|
|
100
|
-
<VersionList versions={entity.data.versions} collectionItem={entity} />
|
|
101
|
-
)
|
|
102
|
-
}
|
|
103
|
-
{
|
|
104
|
-
entity.data.attachments && shouldRenderSideBarSection('attachments') && (
|
|
105
|
-
<PillListFlat
|
|
106
|
-
title={`Attachments (${attachmentsList.length})`}
|
|
107
|
-
pills={attachmentsList}
|
|
108
|
-
emptyMessage={`This entity does not have any attachments.`}
|
|
109
|
-
color="pink"
|
|
110
|
-
client:load
|
|
111
|
-
/>
|
|
112
|
-
)
|
|
113
|
-
}
|
|
114
|
-
{
|
|
115
|
-
filteredOwners.length > 0 && shouldRenderSideBarSection('owners') && (
|
|
116
|
-
<OwnersList
|
|
117
|
-
title={`Owners (${filteredOwners.length})`}
|
|
118
|
-
owners={ownersList}
|
|
119
|
-
emptyMessage={`This entity does not have any documented owners.`}
|
|
120
|
-
client:load
|
|
121
|
-
/>
|
|
122
|
-
)
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
{
|
|
126
|
-
isChangelogEnabled() && shouldRenderSideBarSection('changelog') && (
|
|
127
|
-
<div class="space-y-2">
|
|
128
|
-
<a
|
|
129
|
-
href={buildUrl(`/docs/${entity.collection}/${entity.data.id}/${entity.data.latestVersion}/changelog`)}
|
|
130
|
-
class="flex items-center space-x-2 justify-center text-center rounded-md w-full bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100/60 hover:text-primary"
|
|
131
|
-
>
|
|
132
|
-
<ScrollText strokeWidth={2} size={16} />
|
|
133
|
-
<span class="block">Read changelog</span>
|
|
134
|
-
</a>
|
|
135
|
-
</div>
|
|
136
|
-
)
|
|
137
|
-
}
|
|
138
|
-
</div>
|
|
139
|
-
</aside>
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
import OwnersList from '@components/Lists/OwnersList';
|
|
3
|
-
import VersionList from '@components/Lists/VersionList.astro';
|
|
4
|
-
import PillListFlat from '@components/Lists/PillListFlat';
|
|
5
|
-
import { buildUrl } from '@utils/url-builder';
|
|
6
|
-
import { getOwner } from '@utils/collections/owners';
|
|
7
|
-
import type { CollectionEntry } from 'astro:content';
|
|
8
|
-
import { ScrollText, Workflow, RssIcon } from 'lucide-react';
|
|
9
|
-
import config from '@config';
|
|
10
|
-
import { isChangelogEnabled } from '@utils/feature';
|
|
11
|
-
import CustomSideBarSectionList from '@components/Lists/CustomSideBarSectionList.astro';
|
|
12
|
-
interface Props {
|
|
13
|
-
flow: CollectionEntry<'flows'>;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const { flow } = Astro.props;
|
|
17
|
-
|
|
18
|
-
const ownersRaw = flow.data?.owners || [];
|
|
19
|
-
const owners = await Promise.all<ReturnType<typeof getOwner>>(ownersRaw.map(getOwner));
|
|
20
|
-
const filteredOwners = owners.filter((o) => o !== undefined);
|
|
21
|
-
|
|
22
|
-
const resourceGroups = flow.data?.resourceGroups || [];
|
|
23
|
-
|
|
24
|
-
const ownersList = filteredOwners.map((o) => ({
|
|
25
|
-
label: o.data.name,
|
|
26
|
-
type: o.collection,
|
|
27
|
-
badge: o.collection === 'users' ? o.data.role : 'Team',
|
|
28
|
-
avatarUrl: o.collection === 'users' ? o.data.avatarUrl : '',
|
|
29
|
-
href: buildUrl(`/docs/${o.collection}/${o.data.id}`),
|
|
30
|
-
}));
|
|
31
|
-
|
|
32
|
-
const isRSSEnabled = config.rss?.enabled;
|
|
33
|
-
|
|
34
|
-
const attachments = flow.data.attachments || [];
|
|
35
|
-
|
|
36
|
-
const attachmentsList = attachments.map((a) => {
|
|
37
|
-
const attachmentIsURL = typeof a === 'string';
|
|
38
|
-
return {
|
|
39
|
-
label: attachmentIsURL ? a : (a.title ?? a.url),
|
|
40
|
-
href: attachmentIsURL ? a : a.url,
|
|
41
|
-
icon: attachmentIsURL ? 'ExternalLinkIcon' : (a.icon ?? 'ExternalLinkIcon'),
|
|
42
|
-
target: '_blank' as const,
|
|
43
|
-
subgroup: attachmentIsURL ? undefined : (a.type ?? ''),
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
const shouldRenderSideBarSection = (section: string) => {
|
|
48
|
-
if (!flow.data.detailsPanel) {
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
// @ts-ignore
|
|
52
|
-
return flow.data.detailsPanel[section]?.visible ?? true;
|
|
53
|
-
};
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
<aside class="sticky top-28 left-0 h-full overflow-y-auto pr-6 py-4">
|
|
57
|
-
<div id="sidebar-cta-portal" class="">
|
|
58
|
-
{
|
|
59
|
-
resourceGroups
|
|
60
|
-
.filter((section) => section.items.length > 0 && section.sidebar)
|
|
61
|
-
.map((section) => <CustomSideBarSectionList section={section} />)
|
|
62
|
-
}
|
|
63
|
-
{
|
|
64
|
-
flow.data.versions && shouldRenderSideBarSection('versions') && (
|
|
65
|
-
<VersionList versions={flow.data.versions} collectionItem={flow} />
|
|
66
|
-
)
|
|
67
|
-
}
|
|
68
|
-
{
|
|
69
|
-
flow.data.attachments && shouldRenderSideBarSection('attachments') && (
|
|
70
|
-
<PillListFlat
|
|
71
|
-
title={`Attachments (${attachmentsList.length})`}
|
|
72
|
-
pills={attachmentsList}
|
|
73
|
-
emptyMessage={`This flow does not have any attachments.`}
|
|
74
|
-
color="pink"
|
|
75
|
-
client:load
|
|
76
|
-
/>
|
|
77
|
-
)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
{
|
|
81
|
-
shouldRenderSideBarSection('owners') && (
|
|
82
|
-
<OwnersList
|
|
83
|
-
title={`Owners (${ownersList.length})`}
|
|
84
|
-
owners={ownersList}
|
|
85
|
-
emptyMessage={`This flow does not have any documented owners.`}
|
|
86
|
-
client:load
|
|
87
|
-
/>
|
|
88
|
-
)
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
{
|
|
92
|
-
isRSSEnabled && (
|
|
93
|
-
<div class="mx-auto pb-4 w-full max-w-lg divide-y divide-white/5 rounded-xl bg-white/5 border-b border-gray-100 mb-4">
|
|
94
|
-
<span class="text-sm text-black font-semibold group-data-[hover]:text-black/80 capitalize">Flow RSS Feed</span>
|
|
95
|
-
<ul role="list" class="space-y-2 mt-2">
|
|
96
|
-
<li class="has-tooltip rounded-md text-gray-600 group px-1 w-full hover:bg-gradient-to-l hover:from-purple-500 hover:to-purple-700 hover:text-white hover:font-normal ">
|
|
97
|
-
<a class={`flex items-center space-x-2`} target="_blank" href={buildUrl(`/rss/flows/rss.xml`)}>
|
|
98
|
-
<RssIcon className="h-4 w-4 text-gray-800 group-hover:text-white" strokeWidth={1} />
|
|
99
|
-
<span class="font-light text-sm truncate">RSS</span>
|
|
100
|
-
</a>
|
|
101
|
-
</li>
|
|
102
|
-
</ul>
|
|
103
|
-
</div>
|
|
104
|
-
)
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
<div class="space-y-2">
|
|
108
|
-
<a
|
|
109
|
-
href={buildUrl(`/visualiser/${flow.collection}/${flow.data.id}/${flow.data.version}`)}
|
|
110
|
-
class="flex items-center justify-center space-x-2 text-center rounded-md w-full bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100/60 hover:text-primary"
|
|
111
|
-
>
|
|
112
|
-
<Workflow strokeWidth={2} size={16} />
|
|
113
|
-
<span class="block">View in visualiser</span>
|
|
114
|
-
</a>
|
|
115
|
-
{
|
|
116
|
-
isChangelogEnabled() && shouldRenderSideBarSection('changelog') && (
|
|
117
|
-
<a
|
|
118
|
-
href={buildUrl(`/docs/${flow.collection}/${flow.data.id}/${flow.data.latestVersion}/changelog`)}
|
|
119
|
-
class="flex items-center space-x-2 justify-center text-center rounded-md w-full bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100/60 hover:text-primary"
|
|
120
|
-
>
|
|
121
|
-
<ScrollText strokeWidth={2} size={16} />
|
|
122
|
-
<span class="block">Read changelog</span>
|
|
123
|
-
</a>
|
|
124
|
-
)
|
|
125
|
-
}
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
128
|
-
</aside>
|