@eventcatalog/core 3.0.0-beta.9 → 3.1.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 +41 -98
- package/dist/__mocks__/astro-content.cjs +32 -0
- package/dist/__mocks__/astro-content.d.cts +13 -0
- package/dist/__mocks__/astro-content.d.ts +13 -0
- package/dist/__mocks__/astro-content.js +7 -0
- 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/catalog-to-astro-content-directory.cjs +2 -19
- package/dist/catalog-to-astro-content-directory.d.cts +1 -2
- package/dist/catalog-to-astro-content-directory.d.ts +1 -2
- package/dist/catalog-to-astro-content-directory.js +3 -5
- package/dist/{chunk-RAJ7TGWN.js → chunk-2WGZFERB.js} +1 -1
- package/dist/{chunk-R2BJ7MJG.js → chunk-6Z6ARMQS.js} +1 -17
- package/dist/{chunk-TC3R47V6.js → chunk-ESUL7UE6.js} +1 -1
- package/dist/{chunk-2VPX4WIJ.js → chunk-I3CW5KQI.js} +1 -1
- package/dist/{chunk-TT4LZO2Q.js → chunk-KBO4IL2D.js} +1 -1
- package/dist/{chunk-A4MGWK5T.js → chunk-URR33SNK.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog.cjs +20 -64
- package/dist/eventcatalog.config.d.cts +11 -0
- package/dist/eventcatalog.config.d.ts +11 -0
- package/dist/eventcatalog.js +26 -52
- package/dist/generate.cjs +1 -1
- package/dist/generate.js +3 -3
- package/dist/utils/cli-logger.cjs +1 -1
- package/dist/utils/cli-logger.js +2 -2
- package/eventcatalog/astro.config.mjs +4 -1
- package/eventcatalog/integrations/eventcatalog-features.ts +69 -0
- package/eventcatalog/public/icons/asyncapi-black.svg +2 -0
- package/eventcatalog/public/icons/graphql-black.svg +1 -0
- package/eventcatalog/public/icons/openapi-black.svg +1 -0
- package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +1010 -0
- package/eventcatalog/src/components/ChatPanel/ChatPanelButton.tsx +24 -0
- package/eventcatalog/src/components/Checkbox.astro +7 -4
- package/eventcatalog/src/components/CopyAsMarkdown.tsx +15 -15
- package/eventcatalog/src/components/EnvironmentDropdown.tsx +15 -7
- package/eventcatalog/src/components/FavoriteButton.tsx +1 -1
- package/eventcatalog/src/components/Grids/DomainGrid.tsx +322 -173
- package/eventcatalog/src/components/Grids/MessageGrid.tsx +317 -178
- package/eventcatalog/src/components/Grids/specification-utils.ts +106 -0
- package/eventcatalog/src/components/Header.astro +40 -15
- package/eventcatalog/src/components/Lists/OwnersList.tsx +17 -10
- package/eventcatalog/src/components/Lists/PillListFlat.styles.css +12 -0
- package/eventcatalog/src/components/Lists/PillListFlat.tsx +15 -15
- package/eventcatalog/src/components/Lists/VersionList.astro +15 -5
- package/eventcatalog/src/components/MDX/Accordion/Accordion.tsx +3 -3
- package/eventcatalog/src/components/MDX/Admonition.tsx +49 -9
- package/eventcatalog/src/components/MDX/Attachments.astro +15 -11
- package/eventcatalog/src/components/MDX/ChannelInformation/ChannelInformation.tsx +29 -15
- package/eventcatalog/src/components/MDX/EntityPropertiesTable/EntityPropertiesTable.astro +20 -13
- package/eventcatalog/src/components/MDX/Link/Link.astro +1 -1
- package/eventcatalog/src/components/MDX/MessageTable/MessageTable.client.tsx +50 -29
- package/eventcatalog/src/components/MDX/NodeGraph/NodeGraph.tsx +28 -15
- package/eventcatalog/src/components/MDX/NodeGraph/StepWalkthrough.tsx +4 -4
- package/eventcatalog/src/components/MDX/NodeGraph/StudioModal.tsx +4 -4
- package/eventcatalog/src/components/MDX/NodeGraph/VisualiserSearch.tsx +2 -2
- package/eventcatalog/src/components/MDX/ResourceGroupTable/ResourceGroupTable.client.tsx +54 -33
- package/eventcatalog/src/components/MDX/ResourceLink/ResourceLink.astro +1 -1
- package/eventcatalog/src/components/MDX/Steps/Step.astro +2 -2
- package/eventcatalog/src/components/MDX/Steps/Steps.astro +3 -3
- package/eventcatalog/src/components/MDX/Tabs/Tabs.astro +13 -9
- package/eventcatalog/src/components/MDX/Tiles/Tile.astro +25 -13
- package/eventcatalog/src/components/MDX/Tiles/Tiles.astro +1 -1
- package/eventcatalog/src/components/SchemaExplorer/ApiAccessSection.tsx +95 -90
- package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +144 -0
- package/eventcatalog/src/components/SchemaExplorer/AvroSchemaViewer.tsx +29 -25
- package/eventcatalog/src/components/SchemaExplorer/DiffViewer.tsx +3 -3
- package/eventcatalog/src/components/SchemaExplorer/JSONSchemaViewer.tsx +61 -42
- package/eventcatalog/src/components/SchemaExplorer/OwnersSection.tsx +13 -9
- package/eventcatalog/src/components/SchemaExplorer/Pagination.tsx +36 -8
- package/eventcatalog/src/components/SchemaExplorer/ProducersConsumersSection.tsx +17 -13
- package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +37 -10
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsHeader.tsx +152 -109
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsPanel.tsx +6 -15
- package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +257 -61
- package/eventcatalog/src/components/SchemaExplorer/SchemaFilters.tsx +64 -126
- package/eventcatalog/src/components/SchemaExplorer/SchemaListItem.tsx +53 -43
- package/eventcatalog/src/components/SchemaExplorer/SchemaViewerModal.tsx +8 -8
- package/eventcatalog/src/components/Search/Search.astro +5 -5
- package/eventcatalog/src/components/Search/SearchDataLoader.astro +25 -0
- package/eventcatalog/src/components/Search/SearchModal.tsx +65 -36
- package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +37 -24
- package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +117 -56
- package/eventcatalog/src/components/SideNav/SideNav.astro +0 -15
- package/eventcatalog/src/components/Tables/Table.tsx +97 -77
- package/eventcatalog/src/components/Tables/columns/ContainersTableColumns.tsx +114 -74
- package/eventcatalog/src/components/Tables/columns/DomainTableColumns.tsx +77 -55
- package/eventcatalog/src/components/Tables/columns/FlowTableColumns.tsx +36 -36
- package/eventcatalog/src/components/Tables/columns/MessageTableColumns.tsx +116 -77
- package/eventcatalog/src/components/Tables/columns/ServiceTableColumns.tsx +111 -94
- package/eventcatalog/src/components/Tables/columns/SharedColumns.tsx +31 -26
- package/eventcatalog/src/components/Tables/columns/TeamsTableColumns.tsx +123 -215
- package/eventcatalog/src/components/Tables/columns/UserTableColumns.tsx +156 -243
- package/eventcatalog/src/components/ThemeToggle.tsx +18 -0
- package/eventcatalog/src/content.config.ts +1 -13
- package/eventcatalog/src/enterprise/ai/chat-api.ts +360 -0
- package/eventcatalog/src/enterprise/auth/[...auth].ts +3 -0
- package/eventcatalog/src/enterprise/auth/login.astro +420 -0
- package/eventcatalog/src/enterprise/collections/index.ts +0 -1
- package/eventcatalog/src/enterprise/custom-documentation/components/CustomDocsNav/components/NestedItem.tsx +15 -7
- package/eventcatalog/src/enterprise/custom-documentation/components/CustomDocsNav/components/NoResultsFound.tsx +2 -2
- package/eventcatalog/src/enterprise/custom-documentation/components/CustomDocsNav/index.tsx +19 -15
- package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/index.astro +50 -17
- package/eventcatalog/src/layouts/DirectoryLayout.astro +11 -6
- package/eventcatalog/src/layouts/DiscoverLayout.astro +13 -8
- package/eventcatalog/src/layouts/Footer.astro +14 -11
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +187 -123
- package/eventcatalog/src/pages/_index.astro +213 -573
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.ts +8 -2
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +9 -5
- package/eventcatalog/src/pages/directory/[type]/index.astro +6 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +19 -3
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +7 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +5 -5
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +81 -64
- package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +23 -24
- package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +214 -125
- package/eventcatalog/src/pages/docs/custom/index.astro +2 -2
- package/eventcatalog/src/pages/docs/teams/[id]/index.astro +98 -70
- package/eventcatalog/src/pages/docs/teams/[id].mdx.ts +36 -0
- package/eventcatalog/src/pages/docs/users/[id]/index.astro +60 -45
- package/eventcatalog/src/pages/docs/users/[id].mdx.ts +36 -0
- package/eventcatalog/src/pages/schemas/explorer/_index.data.ts +178 -0
- package/eventcatalog/src/pages/schemas/explorer/index.astro +7 -157
- package/eventcatalog/src/pages/studio.astro +155 -75
- package/eventcatalog/src/remark-plugins/directives.ts +36 -15
- package/eventcatalog/src/remark-plugins/mermaid.ts +2 -2
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/container.ts +10 -1
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/domain.ts +17 -7
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/message.ts +10 -1
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/service.ts +11 -4
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/shared.ts +14 -0
- package/eventcatalog/src/stores/{sidebar-store.ts → sidebar-store/index.ts} +1 -1
- package/eventcatalog/src/stores/theme-store.ts +93 -0
- package/eventcatalog/src/styles/theme.css +255 -0
- package/eventcatalog/src/styles/themes/forest.css +230 -0
- package/eventcatalog/src/styles/themes/ocean.css +235 -0
- package/eventcatalog/src/styles/themes/sapphire.css +230 -0
- package/eventcatalog/src/styles/themes/sunset.css +230 -0
- package/eventcatalog/src/utils/collections/channels.ts +0 -2
- package/eventcatalog/src/utils/collections/commands.ts +0 -2
- package/eventcatalog/src/utils/collections/containers.ts +0 -2
- package/eventcatalog/src/utils/collections/domains.ts +0 -2
- package/eventcatalog/src/utils/collections/entities.ts +0 -2
- package/eventcatalog/src/utils/collections/events.ts +0 -2
- package/eventcatalog/src/utils/collections/flows.ts +0 -2
- package/eventcatalog/src/utils/collections/queries.ts +0 -2
- package/eventcatalog/src/utils/collections/schemas.ts +45 -7
- package/eventcatalog/src/utils/collections/services.ts +0 -2
- package/eventcatalog/src/utils/feature.ts +13 -5
- package/eventcatalog/src/utils/node-graphs/services-node-graph.ts +1 -1
- package/eventcatalog/src/utils/resource-files.ts +86 -0
- package/eventcatalog/tailwind.config.mjs +6 -3
- package/package.json +12 -15
- package/default-files-for-collections/changelogs.md +0 -5
- package/default-files-for-collections/channels.md +0 -8
- package/default-files-for-collections/commands.md +0 -8
- package/default-files-for-collections/domains.md +0 -8
- package/default-files-for-collections/events.md +0 -8
- package/default-files-for-collections/flows.md +0 -11
- package/default-files-for-collections/queries.md +0 -8
- package/default-files-for-collections/services.md +0 -8
- package/default-files-for-collections/ubiquitousLanguages.md +0 -7
- package/eventcatalog/src/enterprise/collections/chat-prompts.ts +0 -32
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/Chat.tsx +0 -60
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/ChatMessage.tsx +0 -414
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/ChatSidebar.tsx +0 -169
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/InputModal.tsx +0 -244
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/MentionInput.tsx +0 -211
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/WelcomePromptArea.tsx +0 -176
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/default-prompts.ts +0 -93
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/hooks/ChatProvider.tsx +0 -143
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/windows/ChatWindow.server.tsx +0 -387
- package/eventcatalog/src/enterprise/eventcatalog-chat/pages/api/chat.ts +0 -59
- package/eventcatalog/src/enterprise/eventcatalog-chat/pages/chat/index.astro +0 -104
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/ai-provider.ts +0 -140
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/anthropic.ts +0 -28
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/google.ts +0 -41
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/index.ts +0 -26
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/openai.ts +0 -61
- package/eventcatalog/src/enterprise/eventcatalog-chat/utils/chat-prompts.ts +0 -50
- package/eventcatalog/src/pages/auth/login.astro +0 -280
- package/eventcatalog/src/pages/chat/feature.astro +0 -179
- package/eventcatalog/src/pages/chat/index.astro +0 -10
- package/eventcatalog/src/pages/docs/_default-docs.mdx +0 -25
- package/eventcatalog/src/pages/docs/index.astro +0 -33
- package/eventcatalog/src/pages/nav-index.json.ts +0 -30
- /package/eventcatalog/src/{pages → enterprise}/auth/error.astro +0 -0
- /package/eventcatalog/src/{middleware-auth.ts → enterprise/auth/middleware/middleware-auth.ts} +0 -0
- /package/eventcatalog/src/{middleware.ts → enterprise/auth/middleware/middleware.ts} +0 -0
- /package/eventcatalog/src/{pages/unauthorized/index.astro → enterprise/auth/unauthorized.astro} +0 -0
- /package/eventcatalog/src/{pages → enterprise}/plans/index.astro +0 -0
- /package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/flow.ts +0 -0
- /package/eventcatalog/src/{components/SideNav/NestedSideBar/sidebar-builder.ts → stores/sidebar-store/state.ts} +0 -0
|
@@ -5,10 +5,9 @@ import {
|
|
|
5
5
|
RectangleGroupIcon,
|
|
6
6
|
ServerIcon,
|
|
7
7
|
CodeBracketIcon,
|
|
8
|
-
CubeTransparentIcon,
|
|
9
8
|
DocumentTextIcon,
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
ArrowRightIcon,
|
|
10
|
+
PlusIcon,
|
|
12
11
|
} from '@heroicons/react/24/outline';
|
|
13
12
|
import config from '@config';
|
|
14
13
|
|
|
@@ -17,22 +16,7 @@ import { getDomains } from '@utils/collections/domains';
|
|
|
17
16
|
import { getServices } from '@utils/collections/services';
|
|
18
17
|
import { getFlows } from '@utils/collections/flows';
|
|
19
18
|
import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
|
|
20
|
-
import {
|
|
21
|
-
BookOpenText,
|
|
22
|
-
Workflow,
|
|
23
|
-
TableProperties,
|
|
24
|
-
BookUser,
|
|
25
|
-
BotMessageSquare,
|
|
26
|
-
Zap,
|
|
27
|
-
Package,
|
|
28
|
-
GitBranch,
|
|
29
|
-
FileCode,
|
|
30
|
-
Puzzle,
|
|
31
|
-
Terminal,
|
|
32
|
-
BarChart3,
|
|
33
|
-
GitCompare,
|
|
34
|
-
Layers,
|
|
35
|
-
} from 'lucide-react';
|
|
19
|
+
import { BookOpenText, Workflow, TableProperties, BookUser, Zap, Terminal, Code2, FileJson } from 'lucide-react';
|
|
36
20
|
|
|
37
21
|
const { commands = [], events = [], queries = [] } = await getMessages({ getAllVersions: false });
|
|
38
22
|
const messages = [...events, ...queries, ...commands];
|
|
@@ -40,125 +24,8 @@ const domains = await getDomains({ getAllVersions: false });
|
|
|
40
24
|
const services = await getServices({ getAllVersions: false });
|
|
41
25
|
const flows = await getFlows({ getAllVersions: false });
|
|
42
26
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
title: 'Add a New Message',
|
|
46
|
-
icon: ChatBubbleLeftIcon,
|
|
47
|
-
iconBg: 'blue',
|
|
48
|
-
description: 'Document a new message in your system with schemas, examples, and relationships.',
|
|
49
|
-
links: [
|
|
50
|
-
{
|
|
51
|
-
text: 'How to add a message',
|
|
52
|
-
href: 'https://www.eventcatalog.dev/docs/messages',
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
text: 'Versioning guide',
|
|
56
|
-
href: 'https://www.eventcatalog.dev/docs/development/guides/messages/events/versioning',
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
text: 'Adding schemas',
|
|
60
|
-
href: 'https://www.eventcatalog.dev/docs/development/guides/messages/events/adding-schemas',
|
|
61
|
-
},
|
|
62
|
-
],
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
title: 'Document a Service',
|
|
66
|
-
icon: ServerIcon,
|
|
67
|
-
iconBg: 'green',
|
|
68
|
-
description: 'Add details about a service, including its events, APIs, and dependencies.',
|
|
69
|
-
links: [
|
|
70
|
-
{
|
|
71
|
-
text: 'How to add a service',
|
|
72
|
-
href: 'https://www.eventcatalog.dev/docs/services',
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
text: 'Service ownership',
|
|
76
|
-
href: 'https://www.eventcatalog.dev/docs/development/guides/services/owners',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
text: 'Assign specifications to services',
|
|
80
|
-
href: 'https://www.eventcatalog.dev/docs/development/guides/services/adding-spec-files-to-services',
|
|
81
|
-
},
|
|
82
|
-
],
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
title: 'Create a Domain',
|
|
86
|
-
icon: RectangleGroupIcon,
|
|
87
|
-
iconBg: 'purple',
|
|
88
|
-
description: 'Organize your services and events into logical business domains.',
|
|
89
|
-
links: [
|
|
90
|
-
{
|
|
91
|
-
text: 'How to add a domain',
|
|
92
|
-
href: 'https://www.eventcatalog.dev/docs/domains',
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
text: 'Adding services to domains',
|
|
96
|
-
href: 'https://www.eventcatalog.dev/docs/development/guides/domains/adding-services-to-domains',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
text: 'Creating a ubiquitous language',
|
|
100
|
-
href: 'https://www.eventcatalog.dev/docs/development/guides/domains/adding-ubiquitous-language',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
|
-
},
|
|
104
|
-
];
|
|
105
|
-
|
|
106
|
-
const resourceCategories = [
|
|
107
|
-
{
|
|
108
|
-
title: 'Development Tools',
|
|
109
|
-
description: 'Powerful tools to enhance your workflow',
|
|
110
|
-
items: [
|
|
111
|
-
{
|
|
112
|
-
title: 'Generators & Plugins',
|
|
113
|
-
icon: Zap,
|
|
114
|
-
description: 'Automate documentation with generators for AsyncAPI, OpenAPI, and more',
|
|
115
|
-
href: 'https://www.eventcatalog.dev/integrations',
|
|
116
|
-
external: true,
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
title: 'CLI Tools',
|
|
120
|
-
icon: Terminal,
|
|
121
|
-
description: 'Command-line tools to build, preview, and manage your catalog',
|
|
122
|
-
href: 'https://www.eventcatalog.dev/docs/development/starting-a-new-project/installation',
|
|
123
|
-
external: true,
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
title: 'SDK & API',
|
|
127
|
-
icon: CodeBracketIcon,
|
|
128
|
-
description: 'Programmatic access to read and write catalog data',
|
|
129
|
-
href: 'https://www.eventcatalog.dev/api/sdk',
|
|
130
|
-
external: true,
|
|
131
|
-
},
|
|
132
|
-
],
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
title: 'Architecture Resources',
|
|
136
|
-
description: 'Best practices and patterns',
|
|
137
|
-
items: [
|
|
138
|
-
{
|
|
139
|
-
title: 'Versioning Strategies',
|
|
140
|
-
icon: GitBranch,
|
|
141
|
-
description: 'Learn how to version your messages and services effectively',
|
|
142
|
-
href: 'https://www.eventcatalog.dev/docs/development/guides/messages/events/versioning',
|
|
143
|
-
external: true,
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
title: 'Schema Management',
|
|
147
|
-
icon: FileCode,
|
|
148
|
-
description: 'Best practices for managing schemas and specifications',
|
|
149
|
-
href: 'https://www.eventcatalog.dev/docs/development/guides/messages/events/adding-schemas',
|
|
150
|
-
external: true,
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
title: 'Domain Design',
|
|
154
|
-
icon: Layers,
|
|
155
|
-
description: 'Organize your architecture using domain-driven design principles',
|
|
156
|
-
href: 'https://www.eventcatalog.dev/docs/development/guides/domains/adding-services-to-domains',
|
|
157
|
-
external: true,
|
|
158
|
-
},
|
|
159
|
-
],
|
|
160
|
-
},
|
|
161
|
-
];
|
|
27
|
+
// Check if catalog has content
|
|
28
|
+
const hasContent = domains.length > 0 || services.length > 0 || messages.length > 0 || flows.length > 0;
|
|
162
29
|
|
|
163
30
|
const getDefaultUrl = (route: string, defaultValue: string) => {
|
|
164
31
|
if (domains.length > 0) return buildUrl(`/${route}/domains/${domains[0].data.id}/${domains[0].data.latestVersion}`);
|
|
@@ -171,528 +38,301 @@ const topTiles = [
|
|
|
171
38
|
{
|
|
172
39
|
title: 'Domains',
|
|
173
40
|
count: domains.length,
|
|
174
|
-
description: 'Business domains
|
|
41
|
+
description: 'Business domains',
|
|
175
42
|
href: buildUrl('/discover/domains'),
|
|
176
43
|
icon: RectangleGroupIcon,
|
|
177
|
-
bgColor: 'bg-yellow-
|
|
44
|
+
bgColor: 'bg-yellow-500',
|
|
45
|
+
borderColor: 'border-yellow-200',
|
|
178
46
|
textColor: 'text-yellow-600',
|
|
179
|
-
|
|
47
|
+
emptyText: 'No domains yet',
|
|
48
|
+
addHref: 'https://www.eventcatalog.dev/docs/domains',
|
|
180
49
|
},
|
|
181
50
|
{
|
|
182
51
|
title: 'Services',
|
|
183
52
|
count: services.length,
|
|
184
|
-
description: '
|
|
53
|
+
description: 'Documented services',
|
|
185
54
|
href: buildUrl('/discover/services'),
|
|
186
55
|
icon: ServerIcon,
|
|
187
|
-
bgColor: 'bg-pink-
|
|
56
|
+
bgColor: 'bg-pink-500',
|
|
57
|
+
borderColor: 'border-pink-200',
|
|
188
58
|
textColor: 'text-pink-600',
|
|
189
|
-
|
|
59
|
+
emptyText: 'No services yet',
|
|
60
|
+
addHref: 'https://www.eventcatalog.dev/docs/services',
|
|
190
61
|
},
|
|
191
62
|
{
|
|
192
63
|
title: 'Messages',
|
|
193
64
|
count: messages.length,
|
|
194
|
-
description: '
|
|
65
|
+
description: 'Events, commands & queries',
|
|
195
66
|
href: buildUrl('/discover/events'),
|
|
196
67
|
icon: ChatBubbleLeftIcon,
|
|
197
|
-
bgColor: 'bg-blue-
|
|
68
|
+
bgColor: 'bg-blue-500',
|
|
69
|
+
borderColor: 'border-blue-200',
|
|
198
70
|
textColor: 'text-blue-600',
|
|
199
|
-
|
|
71
|
+
emptyText: 'No messages yet',
|
|
72
|
+
addHref: 'https://www.eventcatalog.dev/docs/messages',
|
|
200
73
|
},
|
|
201
74
|
{
|
|
202
75
|
title: 'Flows',
|
|
203
76
|
count: flows.length,
|
|
204
|
-
description: 'Business flows
|
|
77
|
+
description: 'Business flows',
|
|
205
78
|
href: buildUrl('/discover/flows'),
|
|
206
79
|
icon: Workflow,
|
|
207
|
-
bgColor: 'bg-
|
|
208
|
-
|
|
209
|
-
|
|
80
|
+
bgColor: 'bg-[rgb(var(--ec-accent))]',
|
|
81
|
+
borderColor: 'border-[rgb(var(--ec-accent)/0.3)]',
|
|
82
|
+
textColor: 'text-[rgb(var(--ec-accent))]',
|
|
83
|
+
emptyText: 'No flows yet',
|
|
84
|
+
addHref: 'https://www.eventcatalog.dev/docs/flows',
|
|
210
85
|
},
|
|
211
86
|
];
|
|
212
87
|
|
|
213
88
|
const quickActions = [
|
|
214
89
|
{
|
|
215
90
|
title: 'Documentation',
|
|
216
|
-
description: '
|
|
91
|
+
description: 'Browse all documented resources',
|
|
217
92
|
icon: BookOpenText,
|
|
218
93
|
href: getDefaultUrl('docs', 'domains'),
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
iconColor: 'text-blue-600',
|
|
94
|
+
iconBg: 'bg-blue-50 dark:bg-blue-500/10',
|
|
95
|
+
iconColor: 'text-blue-600 dark:text-blue-400',
|
|
222
96
|
},
|
|
223
97
|
{
|
|
224
98
|
title: 'Visualizer',
|
|
225
|
-
description: '
|
|
99
|
+
description: 'Interactive architecture diagrams',
|
|
226
100
|
icon: Workflow,
|
|
227
101
|
href: getDefaultUrl('visualiser', 'domains'),
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
iconColor: 'text-purple-600',
|
|
102
|
+
iconBg: 'bg-[rgb(var(--ec-accent-subtle))]',
|
|
103
|
+
iconColor: 'text-[rgb(var(--ec-accent))]',
|
|
231
104
|
},
|
|
232
105
|
{
|
|
233
106
|
title: 'Discover',
|
|
234
|
-
description: 'Search and
|
|
107
|
+
description: 'Search and filter all resources',
|
|
235
108
|
icon: TableProperties,
|
|
236
109
|
href: buildUrl('/discover/events'),
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
110
|
+
iconBg: 'bg-teal-50 dark:bg-teal-500/10',
|
|
111
|
+
iconColor: 'text-teal-600 dark:text-teal-400',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
title: 'Schema Explorer',
|
|
115
|
+
description: 'Browse and compare schemas',
|
|
116
|
+
icon: FileJson,
|
|
117
|
+
href: buildUrl('/schemas/explorer'),
|
|
118
|
+
iconBg: 'bg-amber-50 dark:bg-amber-500/10',
|
|
119
|
+
iconColor: 'text-amber-600 dark:text-amber-400',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
title: 'Team Directory',
|
|
123
|
+
description: 'Ownership & contacts',
|
|
124
|
+
icon: BookUser,
|
|
125
|
+
href: buildUrl('/directory/users'),
|
|
126
|
+
iconBg: 'bg-orange-50 dark:bg-orange-500/10',
|
|
127
|
+
iconColor: 'text-orange-600 dark:text-orange-400',
|
|
240
128
|
},
|
|
241
129
|
{
|
|
242
|
-
title: '
|
|
243
|
-
description: '
|
|
244
|
-
icon:
|
|
245
|
-
href:
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
130
|
+
title: 'API & SDK',
|
|
131
|
+
description: 'Programmatic access',
|
|
132
|
+
icon: Code2,
|
|
133
|
+
href: 'https://www.eventcatalog.dev/docs/sdk',
|
|
134
|
+
iconBg: 'bg-indigo-50 dark:bg-indigo-500/10',
|
|
135
|
+
iconColor: 'text-indigo-600 dark:text-indigo-400',
|
|
136
|
+
external: true,
|
|
249
137
|
},
|
|
250
138
|
];
|
|
251
139
|
---
|
|
252
140
|
|
|
253
141
|
<VerticalSideBarLayout title="EventCatalog">
|
|
254
|
-
<
|
|
255
|
-
<!-- Hero Section
|
|
256
|
-
<div class="relative bg-
|
|
257
|
-
<main class="container px-
|
|
258
|
-
<div class="
|
|
259
|
-
<
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
</p>
|
|
269
|
-
|
|
270
|
-
<!-- Quick Actions Buttons -->
|
|
271
|
-
<div class="flex flex-wrap gap-2.5">
|
|
272
|
-
<a
|
|
273
|
-
href={getDefaultUrl('docs', 'domains')}
|
|
274
|
-
class="inline-flex items-center gap-2 px-5 py-2.5 bg-gray-900 text-white rounded-lg font-medium hover:bg-gray-800 hover:scale-105 transition-all shadow-md shadow-gray-900/20"
|
|
275
|
-
>
|
|
276
|
-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
277
|
-
<path
|
|
278
|
-
stroke-linecap="round"
|
|
279
|
-
stroke-linejoin="round"
|
|
280
|
-
stroke-width="2"
|
|
281
|
-
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
|
282
|
-
</svg>
|
|
283
|
-
Explore Catalog
|
|
284
|
-
</a>
|
|
285
|
-
<a
|
|
286
|
-
href={getDefaultUrl('visualiser', 'domains')}
|
|
287
|
-
class="inline-flex items-center gap-2 px-5 py-2.5 bg-white text-gray-900 border border-gray-300 rounded-lg font-medium hover:border-gray-400 hover:scale-105 transition-all"
|
|
288
|
-
>
|
|
289
|
-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
290
|
-
<path
|
|
291
|
-
stroke-linecap="round"
|
|
292
|
-
stroke-linejoin="round"
|
|
293
|
-
stroke-width="2"
|
|
294
|
-
d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"
|
|
295
|
-
></path>
|
|
296
|
-
</svg>
|
|
297
|
-
View Architecture
|
|
298
|
-
</a>
|
|
299
|
-
</div>
|
|
300
|
-
</div>
|
|
142
|
+
<div class="min-h-screen font-inter">
|
|
143
|
+
<!-- Hero Section -->
|
|
144
|
+
<div class="relative bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border-b border-[rgb(var(--ec-page-border))]">
|
|
145
|
+
<main class="container px-6 lg:px-8 mx-auto py-10 max-w-[85em]">
|
|
146
|
+
<div class="max-w-3xl">
|
|
147
|
+
<h1 class="text-3xl md:text-4xl font-bold mb-3 text-[rgb(var(--ec-page-text))] tracking-tight">
|
|
148
|
+
{config?.organizationName || 'EventCatalog'}
|
|
149
|
+
</h1>
|
|
150
|
+
<p class="text-base text-[rgb(var(--ec-page-text-muted))] leading-relaxed mb-6">
|
|
151
|
+
{
|
|
152
|
+
config.tagline ||
|
|
153
|
+
'Explore and understand your event-driven architecture. Browse documentation, visualize dependencies, and discover how your systems communicate.'
|
|
154
|
+
}
|
|
155
|
+
</p>
|
|
301
156
|
|
|
302
|
-
<!--
|
|
303
|
-
<div class="
|
|
304
|
-
<
|
|
305
|
-
|
|
306
|
-
class="
|
|
157
|
+
<!-- Primary CTAs -->
|
|
158
|
+
<div class="flex flex-wrap items-center gap-3">
|
|
159
|
+
<a
|
|
160
|
+
href={getDefaultUrl('docs', 'domains')}
|
|
161
|
+
class="inline-flex items-center gap-2 px-5 py-2.5 bg-[rgb(var(--ec-button-bg))] text-[rgb(var(--ec-button-text))] rounded-lg font-medium hover:bg-[rgb(var(--ec-button-bg-hover))] transition-colors"
|
|
307
162
|
>
|
|
308
|
-
<
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
|
319
|
-
</svg>
|
|
320
|
-
<span class="text-sm text-gray-500 group-hover:text-gray-700 transition-colors flex-1 text-left"
|
|
321
|
-
>Search events, services, domains...</span
|
|
322
|
-
>
|
|
323
|
-
<div class="flex items-center gap-1">
|
|
324
|
-
<kbd class="px-2 py-1 text-xs font-semibold text-gray-600 bg-gray-50 border border-gray-300 rounded">⌘</kbd>
|
|
325
|
-
<kbd class="px-2 py-1 text-xs font-semibold text-gray-600 bg-gray-50 border border-gray-300 rounded">K</kbd>
|
|
326
|
-
</div>
|
|
327
|
-
</button>
|
|
163
|
+
<BookOpenText className="w-4 h-4" />
|
|
164
|
+
Explore Docs
|
|
165
|
+
</a>
|
|
166
|
+
<a
|
|
167
|
+
href={getDefaultUrl('visualiser', 'domains')}
|
|
168
|
+
class="inline-flex items-center gap-2 px-5 py-2.5 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] border border-[rgb(var(--ec-page-border))] rounded-lg font-medium hover:bg-[rgb(var(--ec-content-hover))] hover:border-[rgb(var(--ec-accent))] transition-colors"
|
|
169
|
+
>
|
|
170
|
+
<Workflow className="w-4 h-4" />
|
|
171
|
+
View Architecture
|
|
172
|
+
</a>
|
|
328
173
|
</div>
|
|
329
174
|
</div>
|
|
330
175
|
</main>
|
|
331
176
|
</div>
|
|
332
177
|
|
|
333
178
|
<!-- Main Content -->
|
|
334
|
-
<main class="container px-
|
|
179
|
+
<main class="container px-6 lg:px-8 mx-auto py-8 max-w-[85em]">
|
|
335
180
|
<!-- Architecture Stats -->
|
|
336
|
-
<
|
|
337
|
-
<
|
|
338
|
-
|
|
181
|
+
<section class="mb-10">
|
|
182
|
+
<div class="flex items-center justify-between mb-4">
|
|
183
|
+
<h2 class="text-sm font-semibold uppercase tracking-wider text-[rgb(var(--ec-page-text-muted))]">Your Catalog</h2>
|
|
339
184
|
{
|
|
340
|
-
|
|
185
|
+
hasContent && (
|
|
341
186
|
<a
|
|
342
|
-
href={
|
|
343
|
-
class="
|
|
344
|
-
style={`animation-delay: ${index * 50}ms`}
|
|
187
|
+
href={buildUrl('/discover/events')}
|
|
188
|
+
class="text-sm text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] flex items-center gap-1"
|
|
345
189
|
>
|
|
346
|
-
|
|
347
|
-
<
|
|
348
|
-
|
|
349
|
-
{/* Colored left border accent */}
|
|
350
|
-
<div
|
|
351
|
-
class={`absolute left-0 top-0 bottom-0 w-1 ${tile.bgColor} opacity-0 group-hover:opacity-100 transition-opacity duration-300`}
|
|
352
|
-
/>
|
|
353
|
-
|
|
354
|
-
<div class="relative">
|
|
355
|
-
<div class="flex items-center justify-between mb-4">
|
|
356
|
-
<div class="p-2.5 bg-gray-100 rounded-lg group-hover:bg-gray-200 transition-colors shadow-sm">
|
|
357
|
-
<tile.icon className={`w-5 h-5 text-gray-600 group-hover:${tile.textColor} transition-colors`} />
|
|
358
|
-
</div>
|
|
359
|
-
</div>
|
|
360
|
-
|
|
361
|
-
<div class="mb-1">
|
|
362
|
-
<div class="text-3xl font-bold text-gray-900 mb-1">{tile.count}</div>
|
|
363
|
-
</div>
|
|
364
|
-
|
|
365
|
-
<div class="text-sm font-medium text-gray-600 mb-2">{tile.title}</div>
|
|
366
|
-
|
|
367
|
-
<div class="flex items-center gap-1.5 text-xs font-medium text-gray-500 opacity-0 group-hover:opacity-100 transition-all duration-300">
|
|
368
|
-
<span class="group-hover:translate-x-0.5 transition-transform">View all</span>
|
|
369
|
-
<svg
|
|
370
|
-
class="w-3 h-3 group-hover:translate-x-0.5 transition-transform"
|
|
371
|
-
fill="none"
|
|
372
|
-
stroke="currentColor"
|
|
373
|
-
viewBox="0 0 24 24"
|
|
374
|
-
>
|
|
375
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
|
376
|
-
</svg>
|
|
377
|
-
</div>
|
|
378
|
-
</div>
|
|
190
|
+
View all
|
|
191
|
+
<ArrowRightIcon className="w-3 h-3" />
|
|
379
192
|
</a>
|
|
380
|
-
)
|
|
193
|
+
)
|
|
381
194
|
}
|
|
382
195
|
</div>
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
<!-- Quick Actions -->
|
|
386
|
-
<div class="mb-16">
|
|
387
|
-
<div class="flex items-center justify-between mb-6">
|
|
388
|
-
<div>
|
|
389
|
-
<h2 class="text-2xl font-bold text-gray-900">Quick Actions</h2>
|
|
390
|
-
<p class="text-sm text-gray-500 mt-1">Jump right into exploring your architecture</p>
|
|
391
|
-
</div>
|
|
392
|
-
<RocketLaunchIcon className="w-6 h-6 text-gray-400" />
|
|
393
|
-
</div>
|
|
394
|
-
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
196
|
+
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
395
197
|
{
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
<div class="absolute inset-0 -translate-x-full group-hover:translate-x-full transition-transform duration-1000 bg-gradient-to-r from-transparent via-white/20 to-transparent" />
|
|
409
|
-
|
|
410
|
-
<div class="relative p-6">
|
|
411
|
-
<div
|
|
412
|
-
class={`${action.iconBg} w-12 h-12 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 group-hover:rotate-3 transition-all duration-300`}
|
|
413
|
-
>
|
|
414
|
-
<action.icon className={`w-6 h-6 ${action.iconColor}`} />
|
|
198
|
+
topTiles.map((tile: any) =>
|
|
199
|
+
tile.count > 0 ? (
|
|
200
|
+
<a
|
|
201
|
+
href={tile.href}
|
|
202
|
+
class={`group relative bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] p-5 rounded-xl border border-[rgb(var(--ec-page-border))] hover:border-t-[rgb(var(--ec-accent))] hover:border-r-[rgb(var(--ec-accent))] hover:border-b-[rgb(var(--ec-accent))] hover:shadow-sm transition-all`}
|
|
203
|
+
>
|
|
204
|
+
<div class={`absolute left-0 top-0 bottom-0 w-1 ${tile.bgColor} rounded-l-xl`} />
|
|
205
|
+
<div class="flex items-start justify-between mb-3">
|
|
206
|
+
<div class={`p-2 rounded-lg ${tile.iconBg || 'bg-[rgb(var(--ec-content-hover))]'}`}>
|
|
207
|
+
<tile.icon className={`w-4 h-4 ${tile.textColor}`} />
|
|
208
|
+
</div>
|
|
209
|
+
<ArrowRightIcon className="w-4 h-4 text-[rgb(var(--ec-icon-color))] group-hover:text-[rgb(var(--ec-page-text-muted))] transition-colors" />
|
|
415
210
|
</div>
|
|
416
|
-
<
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
>
|
|
423
|
-
<
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
fill="none"
|
|
427
|
-
stroke="currentColor"
|
|
428
|
-
viewBox="0 0 24 24"
|
|
429
|
-
>
|
|
430
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6" />
|
|
431
|
-
</svg>
|
|
211
|
+
<div class="text-2xl font-bold text-[rgb(var(--ec-page-text))] mb-0.5">{tile.count}</div>
|
|
212
|
+
<div class="text-sm text-[rgb(var(--ec-page-text-muted))]">{tile.description}</div>
|
|
213
|
+
</a>
|
|
214
|
+
) : (
|
|
215
|
+
<div class="relative bg-[rgb(var(--ec-content-hover))] p-5 rounded-xl border border-dashed border-[rgb(var(--ec-page-border))]">
|
|
216
|
+
<div class={`absolute left-0 top-0 bottom-0 w-1 bg-[rgb(var(--ec-icon-color))] rounded-l-xl`} />
|
|
217
|
+
<div class="flex items-start justify-between mb-3">
|
|
218
|
+
<div class="p-2 rounded-lg bg-[rgb(var(--ec-content-hover))]">
|
|
219
|
+
<tile.icon className="w-4 h-4 text-[rgb(var(--ec-icon-color))]" />
|
|
220
|
+
</div>
|
|
432
221
|
</div>
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
</div>
|
|
439
|
-
|
|
440
|
-
<!-- Additional Features -->
|
|
441
|
-
<div class="mb-16">
|
|
442
|
-
<h2 class="text-2xl font-bold text-gray-900 mb-6">More Features</h2>
|
|
443
|
-
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
444
|
-
<a
|
|
445
|
-
href={buildUrl('/directory/users')}
|
|
446
|
-
class="group relative bg-white rounded-2xl shadow-sm border border-gray-200 p-6 hover:shadow-xl hover:border-orange-200 transition-all duration-300 overflow-hidden"
|
|
447
|
-
>
|
|
448
|
-
<div
|
|
449
|
-
class="absolute top-0 right-0 w-32 h-32 bg-orange-50 rounded-full -translate-y-16 translate-x-16 group-hover:scale-150 transition-transform duration-500"
|
|
450
|
-
>
|
|
451
|
-
</div>
|
|
452
|
-
<div class="relative flex items-start gap-4">
|
|
453
|
-
<div class="bg-orange-100 p-3 rounded-xl group-hover:scale-110 group-hover:rotate-3 transition-all">
|
|
454
|
-
<BookUser className="w-6 h-6 text-orange-600" />
|
|
455
|
-
</div>
|
|
456
|
-
<div class="flex-1">
|
|
457
|
-
<div class="flex items-center gap-2 mb-2">
|
|
458
|
-
<h3 class="text-lg font-semibold text-gray-900 group-hover:text-orange-600 transition-colors">
|
|
459
|
-
Users & Teams Directory
|
|
460
|
-
</h3>
|
|
461
|
-
<span class="px-2 py-0.5 text-xs font-medium text-orange-600 bg-orange-50 rounded-full">Owners</span>
|
|
462
|
-
</div>
|
|
463
|
-
<p class="text-sm text-gray-600 mb-3">
|
|
464
|
-
Discover who owns what. Find service and message ownership, contact information, and team structures.
|
|
465
|
-
</p>
|
|
466
|
-
<span class="text-sm font-medium text-orange-600 inline-flex items-center gap-1 group-hover:gap-2 transition-all">
|
|
467
|
-
Browse directory
|
|
468
|
-
<svg
|
|
469
|
-
class="w-4 h-4 group-hover:translate-x-1 transition-transform"
|
|
470
|
-
fill="none"
|
|
471
|
-
stroke="currentColor"
|
|
472
|
-
viewBox="0 0 24 24"
|
|
222
|
+
<div class="text-sm font-medium text-[rgb(var(--ec-page-text-muted))] mb-2">{tile.emptyText}</div>
|
|
223
|
+
<a
|
|
224
|
+
href={tile.addHref}
|
|
225
|
+
target="_blank"
|
|
226
|
+
class="inline-flex items-center gap-1 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]"
|
|
473
227
|
>
|
|
474
|
-
<
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
</div>
|
|
478
|
-
</div>
|
|
479
|
-
</a>
|
|
480
|
-
|
|
481
|
-
<a
|
|
482
|
-
href="https://www.eventcatalog.dev/docs/sdk"
|
|
483
|
-
target="_blank"
|
|
484
|
-
class="group relative bg-white rounded-2xl shadow-sm border border-gray-200 p-6 hover:shadow-xl hover:border-indigo-200 transition-all duration-300 overflow-hidden"
|
|
485
|
-
>
|
|
486
|
-
<div
|
|
487
|
-
class="absolute top-0 right-0 w-32 h-32 bg-indigo-50 rounded-full -translate-y-16 translate-x-16 group-hover:scale-150 transition-transform duration-500"
|
|
488
|
-
>
|
|
489
|
-
</div>
|
|
490
|
-
<div class="relative flex items-start gap-4">
|
|
491
|
-
<div class="bg-indigo-100 p-3 rounded-xl group-hover:scale-110 group-hover:rotate-3 transition-all">
|
|
492
|
-
<CodeBracketIcon className="w-6 h-6 text-indigo-600" />
|
|
493
|
-
</div>
|
|
494
|
-
<div class="flex-1">
|
|
495
|
-
<div class="flex items-center gap-2 mb-2">
|
|
496
|
-
<h3 class="text-lg font-semibold text-gray-900 group-hover:text-indigo-600 transition-colors">API & SDK</h3>
|
|
497
|
-
<span class="px-2 py-0.5 text-xs font-medium text-indigo-600 bg-indigo-50 rounded-full">Developer</span>
|
|
498
|
-
</div>
|
|
499
|
-
<p class="text-sm text-gray-600 mb-3">
|
|
500
|
-
Programmatic access to read and write catalog data. Perfect for automation and integrations.
|
|
501
|
-
</p>
|
|
502
|
-
<span class="text-sm font-medium text-indigo-600 inline-flex items-center gap-1 group-hover:gap-2 transition-all">
|
|
503
|
-
View API docs
|
|
504
|
-
<svg
|
|
505
|
-
class="w-4 h-4 group-hover:translate-x-1 transition-transform"
|
|
506
|
-
fill="none"
|
|
507
|
-
stroke="currentColor"
|
|
508
|
-
viewBox="0 0 24 24"
|
|
509
|
-
>
|
|
510
|
-
<path
|
|
511
|
-
stroke-linecap="round"
|
|
512
|
-
stroke-linejoin="round"
|
|
513
|
-
stroke-width="2"
|
|
514
|
-
d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path>
|
|
515
|
-
</svg>
|
|
516
|
-
</span>
|
|
517
|
-
</div>
|
|
518
|
-
</div>
|
|
519
|
-
</a>
|
|
520
|
-
</div>
|
|
521
|
-
</div>
|
|
522
|
-
|
|
523
|
-
<!-- Resources Section -->
|
|
524
|
-
<div class="mb-16">
|
|
525
|
-
<div class="flex items-center gap-3 mb-8">
|
|
526
|
-
<h2 class="text-2xl font-bold text-gray-900">Resources & Tools</h2>
|
|
527
|
-
<div class="flex-1 h-px bg-gradient-to-r from-gray-300 to-transparent"></div>
|
|
528
|
-
</div>
|
|
529
|
-
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
|
|
530
|
-
{
|
|
531
|
-
resourceCategories.map((category) => (
|
|
532
|
-
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
|
533
|
-
<h3 class="text-xl font-bold text-gray-900 mb-2">{category.title}</h3>
|
|
534
|
-
<p class="text-sm text-gray-600 mb-6">{category.description}</p>
|
|
535
|
-
<div class="space-y-4">
|
|
536
|
-
{category.items.map((item) => (
|
|
537
|
-
<a
|
|
538
|
-
href={item.href}
|
|
539
|
-
target={item.external ? '_blank' : undefined}
|
|
540
|
-
class="group flex items-start gap-4 p-4 rounded-xl hover:bg-gray-50 transition-colors"
|
|
541
|
-
>
|
|
542
|
-
<div class="bg-gray-100 p-2.5 rounded-lg group-hover:bg-blue-100 transition-colors">
|
|
543
|
-
<item.icon className="w-5 h-5 text-gray-600 group-hover:text-blue-600 transition-colors" />
|
|
544
|
-
</div>
|
|
545
|
-
<div class="flex-1">
|
|
546
|
-
<div class="flex items-center gap-2 mb-1">
|
|
547
|
-
<h4 class="font-semibold text-gray-900 group-hover:text-blue-600 transition-colors">{item.title}</h4>
|
|
548
|
-
{item.external && (
|
|
549
|
-
<svg class="w-4 h-4 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
550
|
-
<path
|
|
551
|
-
stroke-linecap="round"
|
|
552
|
-
stroke-linejoin="round"
|
|
553
|
-
stroke-width="2"
|
|
554
|
-
d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
|
|
555
|
-
/>
|
|
556
|
-
</svg>
|
|
557
|
-
)}
|
|
558
|
-
</div>
|
|
559
|
-
<p class="text-sm text-gray-600">{item.description}</p>
|
|
560
|
-
</div>
|
|
561
|
-
</a>
|
|
562
|
-
))}
|
|
228
|
+
<PlusIcon className="w-3 h-3" />
|
|
229
|
+
Add {tile.title.toLowerCase()}
|
|
230
|
+
</a>
|
|
563
231
|
</div>
|
|
564
|
-
|
|
565
|
-
)
|
|
232
|
+
)
|
|
233
|
+
)
|
|
566
234
|
}
|
|
567
235
|
</div>
|
|
568
|
-
</
|
|
236
|
+
</section>
|
|
569
237
|
|
|
570
|
-
<!--
|
|
571
|
-
<section class="mb-
|
|
572
|
-
<
|
|
573
|
-
|
|
574
|
-
<p class="text-gray-600">
|
|
575
|
-
New to EventCatalog? Follow these guides to start documenting your event-driven architecture.
|
|
576
|
-
</p>
|
|
577
|
-
</div>
|
|
578
|
-
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
238
|
+
<!-- Explore Section - Full Width -->
|
|
239
|
+
<section class="mb-10">
|
|
240
|
+
<h2 class="text-lg font-semibold text-[rgb(var(--ec-page-text))] mb-4">Explore</h2>
|
|
241
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
579
242
|
{
|
|
580
|
-
|
|
581
|
-
<
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
243
|
+
quickActions.map((action: any) => (
|
|
244
|
+
<a
|
|
245
|
+
href={action.href}
|
|
246
|
+
target={action.external ? '_blank' : undefined}
|
|
247
|
+
class="group flex items-start gap-4 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] p-5 rounded-xl border border-[rgb(var(--ec-page-border))] hover:border-[rgb(var(--ec-accent))] hover:shadow-sm transition-all"
|
|
248
|
+
>
|
|
249
|
+
<div class={`${action.iconBg} p-3 rounded-xl flex-shrink-0`}>
|
|
250
|
+
<action.icon className={`w-5 h-5 ${action.iconColor}`} />
|
|
587
251
|
</div>
|
|
588
|
-
<
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
href={link.href}
|
|
593
|
-
target="_blank"
|
|
594
|
-
class="group flex items-center gap-2 text-sm text-gray-600 hover:text-gray-900 font-medium transition-colors"
|
|
595
|
-
>
|
|
252
|
+
<div class="flex-1 min-w-0 pt-0.5">
|
|
253
|
+
<div class="font-semibold text-[rgb(var(--ec-page-text))] mb-1 flex items-center gap-1.5">
|
|
254
|
+
{action.title}
|
|
255
|
+
{action.external && (
|
|
596
256
|
<svg
|
|
597
|
-
class="w-3.5 h-3.5
|
|
257
|
+
class="w-3.5 h-3.5 text-[rgb(var(--ec-icon-color))]"
|
|
598
258
|
fill="none"
|
|
599
259
|
stroke="currentColor"
|
|
600
260
|
viewBox="0 0 24 24"
|
|
601
261
|
>
|
|
602
|
-
<path
|
|
262
|
+
<path
|
|
263
|
+
stroke-linecap="round"
|
|
264
|
+
stroke-linejoin="round"
|
|
265
|
+
stroke-width="2"
|
|
266
|
+
d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
|
|
267
|
+
/>
|
|
603
268
|
</svg>
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
))}
|
|
269
|
+
)}
|
|
270
|
+
</div>
|
|
271
|
+
<div class="text-sm text-[rgb(var(--ec-page-text-muted))] leading-relaxed">{action.description}</div>
|
|
607
272
|
</div>
|
|
608
|
-
</
|
|
273
|
+
</a>
|
|
609
274
|
))
|
|
610
275
|
}
|
|
611
276
|
</div>
|
|
612
277
|
</section>
|
|
613
278
|
|
|
614
|
-
<!-- Community
|
|
615
|
-
<section class="
|
|
616
|
-
<div class="
|
|
617
|
-
<div class="
|
|
618
|
-
<
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
<
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
279
|
+
<!-- Resources & Community - Compact Footer Style -->
|
|
280
|
+
<section class="border-t border-[rgb(var(--ec-page-border))] pt-8 pb-4">
|
|
281
|
+
<div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-6">
|
|
282
|
+
<div class="flex flex-wrap items-center gap-x-6 gap-y-3">
|
|
283
|
+
<a
|
|
284
|
+
href="https://www.eventcatalog.dev/docs/development/getting-started/introduction"
|
|
285
|
+
target="_blank"
|
|
286
|
+
class="text-sm text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] transition-colors"
|
|
287
|
+
>
|
|
288
|
+
Getting Started
|
|
289
|
+
</a>
|
|
290
|
+
<a
|
|
291
|
+
href="https://www.eventcatalog.dev/integrations"
|
|
292
|
+
target="_blank"
|
|
293
|
+
class="text-sm text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] transition-colors"
|
|
294
|
+
>
|
|
295
|
+
Integrations
|
|
296
|
+
</a>
|
|
297
|
+
<a
|
|
298
|
+
href="https://www.eventcatalog.dev/docs"
|
|
299
|
+
target="_blank"
|
|
300
|
+
class="text-sm text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] transition-colors"
|
|
301
|
+
>
|
|
302
|
+
Documentation
|
|
303
|
+
</a>
|
|
304
|
+
</div>
|
|
305
|
+
<div class="flex items-center gap-4">
|
|
306
|
+
<a
|
|
307
|
+
href="https://discord.gg/3rjaZMmrAm"
|
|
308
|
+
target="_blank"
|
|
309
|
+
class="flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] transition-colors"
|
|
310
|
+
title="Join Discord"
|
|
311
|
+
>
|
|
312
|
+
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
|
313
|
+
<path
|
|
314
|
+
d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z"
|
|
315
|
+
></path>
|
|
316
|
+
</svg>
|
|
317
|
+
<span class="hidden sm:inline">Discord</span>
|
|
318
|
+
</a>
|
|
319
|
+
<a
|
|
320
|
+
href="https://github.com/event-catalog/eventcatalog"
|
|
321
|
+
target="_blank"
|
|
322
|
+
class="flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] transition-colors"
|
|
323
|
+
title="GitHub"
|
|
324
|
+
>
|
|
325
|
+
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
|
326
|
+
<path
|
|
327
|
+
fill-rule="evenodd"
|
|
328
|
+
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
|
329
|
+
clip-rule="evenodd"></path>
|
|
330
|
+
</svg>
|
|
331
|
+
<span class="hidden sm:inline">GitHub</span>
|
|
332
|
+
</a>
|
|
666
333
|
</div>
|
|
667
334
|
</div>
|
|
668
335
|
</section>
|
|
669
336
|
</main>
|
|
670
|
-
</
|
|
671
|
-
|
|
672
|
-
<script>
|
|
673
|
-
// Trigger header search when clicking the homepage search button
|
|
674
|
-
document.addEventListener('DOMContentLoaded', () => {
|
|
675
|
-
const searchTrigger = document.querySelector('[data-search-trigger]');
|
|
676
|
-
if (searchTrigger) {
|
|
677
|
-
searchTrigger.addEventListener('click', () => {
|
|
678
|
-
// Look for the header search button and click it
|
|
679
|
-
const headerSearchButton =
|
|
680
|
-
document.querySelector('[data-search-open]') ||
|
|
681
|
-
document.querySelector('button[aria-label*="search" i]') ||
|
|
682
|
-
document.querySelector('button[title*="search" i]');
|
|
683
|
-
if (headerSearchButton && headerSearchButton instanceof HTMLElement) {
|
|
684
|
-
headerSearchButton.click();
|
|
685
|
-
} else {
|
|
686
|
-
// Fallback: trigger keyboard shortcut
|
|
687
|
-
const event = new KeyboardEvent('keydown', {
|
|
688
|
-
key: 'k',
|
|
689
|
-
metaKey: true,
|
|
690
|
-
bubbles: true,
|
|
691
|
-
});
|
|
692
|
-
document.dispatchEvent(event);
|
|
693
|
-
}
|
|
694
|
-
});
|
|
695
|
-
}
|
|
696
|
-
});
|
|
697
|
-
</script>
|
|
337
|
+
</div>
|
|
698
338
|
</VerticalSideBarLayout>
|