@eventcatalog/core 3.29.2 → 3.31.1
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/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-36IA4UE4.js → chunk-7IGMIOQF.js} +1 -1
- package/dist/{chunk-EGQGCB2B.js → chunk-HVOLSUC2.js} +1 -1
- package/dist/{chunk-DB4IQ3GB.js → chunk-LWVHWR77.js} +1 -1
- package/dist/{chunk-VEUNSJ6Z.js → chunk-QIJOBQZ7.js} +1 -1
- package/dist/{chunk-MEJOYC5Z.js → chunk-UY5QDWK7.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog.cjs +1 -1
- package/dist/eventcatalog.js +5 -5
- 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 +11 -7
- package/eventcatalog/public/logo.png +0 -0
- package/eventcatalog/src/components/CopyAsMarkdown.tsx +29 -24
- package/eventcatalog/src/components/EnvironmentDropdown.tsx +33 -21
- package/eventcatalog/src/components/FieldsExplorer/FieldFilters.tsx +3 -53
- package/eventcatalog/src/components/FieldsExplorer/FieldsExplorer.tsx +144 -91
- package/eventcatalog/src/components/FieldsExplorer/FieldsTable.tsx +112 -109
- package/eventcatalog/src/components/Header.astro +9 -19
- package/eventcatalog/src/components/MDX/Accordion/Accordion.tsx +12 -14
- package/eventcatalog/src/components/MDX/Accordion/AccordionGroup.astro +11 -3
- package/eventcatalog/src/components/MDX/Design/Design.astro +1 -1
- package/eventcatalog/src/components/MDX/ResourceRef/ResourceRef.astro +15 -5
- package/eventcatalog/src/components/MDX/Tiles/Tile.astro +11 -8
- package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +164 -53
- package/eventcatalog/src/components/SchemaExplorer/DiffViewer.tsx +1 -1
- package/eventcatalog/src/components/SchemaExplorer/ExamplesViewer.tsx +4 -4
- package/eventcatalog/src/components/SchemaExplorer/Pagination.tsx +12 -10
- package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +48 -77
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsPanel.tsx +238 -169
- package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +189 -230
- package/eventcatalog/src/components/SchemaExplorer/SchemaListItem.tsx +39 -36
- package/eventcatalog/src/components/Search/Search.astro +1 -1
- package/eventcatalog/src/components/Seo.astro +1 -1
- package/eventcatalog/src/components/Settings/AssistantSettingsForm.tsx +218 -0
- package/eventcatalog/src/components/Settings/BillingSettingsForm.tsx +265 -0
- package/eventcatalog/src/components/Settings/GeneralSettingsForm.tsx +371 -0
- package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +183 -0
- package/eventcatalog/src/components/Settings/LogoUpload.tsx +137 -0
- package/eventcatalog/src/components/Settings/McpSettingsForm.tsx +91 -0
- package/eventcatalog/src/components/Settings/ReadOnlyBanner.tsx +18 -0
- package/eventcatalog/src/components/Settings/Row.tsx +59 -0
- package/eventcatalog/src/components/Settings/SettingsShared.tsx +176 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +3 -3
- package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +233 -261
- package/eventcatalog/src/components/Tables/Discover/DiscoverTable.tsx +116 -68
- package/eventcatalog/src/components/Tables/Discover/FilterComponents.tsx +2 -2
- package/eventcatalog/src/components/Tables/Discover/columns.tsx +130 -197
- package/eventcatalog/src/components/Tables/Table.tsx +21 -18
- package/eventcatalog/src/components/Tables/columns/TeamsTableColumns.tsx +79 -131
- package/eventcatalog/src/components/Tables/columns/UserTableColumns.tsx +104 -175
- package/eventcatalog/src/content.config.ts +1 -1
- package/eventcatalog/src/enterprise/auth/error.astro +1 -1
- package/eventcatalog/src/enterprise/auth/login.astro +1 -1
- package/eventcatalog/src/enterprise/auth/middleware/middleware-auth.ts +11 -7
- package/eventcatalog/src/enterprise/custom-documentation/components/CustomDocsNav/index.tsx +97 -95
- package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/index.astro +232 -181
- package/eventcatalog/src/enterprise/feature.ts +2 -1
- package/eventcatalog/src/enterprise/fields/pages/fields.astro +10 -8
- package/eventcatalog/src/enterprise/integrations/eventcatalog-features.ts +0 -8
- package/eventcatalog/src/layouts/DirectoryLayout.astro +17 -88
- package/eventcatalog/src/layouts/SettingsLayout.astro +116 -0
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +562 -141
- package/eventcatalog/src/layouts/VisualiserLayout.astro +7 -2
- package/eventcatalog/src/pages/_index.astro +253 -256
- package/eventcatalog/src/pages/api/settings/ai.ts +57 -0
- package/eventcatalog/src/pages/api/settings/general.ts +71 -0
- package/eventcatalog/src/pages/api/settings/logo.ts +113 -0
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +3 -3
- package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +223 -73
- package/eventcatalog/src/pages/discover/[type]/index.astro +22 -141
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +130 -30
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +147 -53
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +6 -2
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/[...filename].astro +2 -2
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +22 -19
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +71 -61
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/[filename].astro +5 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +3 -3
- package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +6 -32
- package/eventcatalog/src/pages/docs/llm/llms.txt.ts +5 -1
- package/eventcatalog/src/pages/docs/teams/[id]/index.astro +11 -4
- package/eventcatalog/src/pages/docs/users/[id]/index.astro +12 -5
- package/eventcatalog/src/pages/schemas/explorer/index.astro +10 -8
- package/eventcatalog/src/pages/settings/assistant.astro +37 -0
- package/eventcatalog/src/pages/settings/billing.astro +17 -0
- package/eventcatalog/src/pages/settings/general.astro +32 -0
- package/eventcatalog/src/pages/settings/index.astro +21 -0
- package/eventcatalog/src/pages/settings/llm-access.astro +34 -0
- package/eventcatalog/src/pages/settings/mcp.astro +14 -0
- package/eventcatalog/src/pages/studio.astro +1 -1
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +2 -7
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/index.astro +2 -2
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +2 -7
- package/eventcatalog/src/styles/theme.css +95 -30
- package/eventcatalog/src/styles/themes/forest.css +17 -9
- package/eventcatalog/src/styles/themes/ocean.css +10 -2
- package/eventcatalog/src/styles/themes/sapphire.css +10 -2
- package/eventcatalog/src/styles/themes/sunset.css +25 -17
- package/eventcatalog/src/types/react-syntax-highlighter.d.ts +13 -0
- package/eventcatalog/src/utils/eventcatalog-config/config-schema.ts +49 -0
- package/eventcatalog/src/utils/eventcatalog-config/config-writer.ts +149 -0
- package/eventcatalog/src/utils/url-builder.ts +4 -2
- package/package.json +7 -5
- package/eventcatalog/public/logo.svg +0 -14
- package/eventcatalog/src/enterprise/plans/index.astro +0 -319
- package/eventcatalog/src/pages/docs/llm/llms-services.txt.ts +0 -81
|
@@ -23,20 +23,18 @@ const { subdomains, duplicateTerms } = ubiquitousLanguageData;
|
|
|
23
23
|
|
|
24
24
|
<VerticalSideBarLayout title={pageTitle} description={props.data.summary}>
|
|
25
25
|
<main
|
|
26
|
-
class="flex
|
|
26
|
+
class="flex docs-layout min-h-full bg-[rgb(var(--ec-page-bg))]"
|
|
27
27
|
data-pagefind-body
|
|
28
28
|
data-pagefind-meta={`title:${pageTitle}`}
|
|
29
29
|
>
|
|
30
30
|
<div class="flex docs-layout w-full">
|
|
31
|
-
<div class="w-full lg:mr-2 pr-
|
|
31
|
+
<div class="w-full lg:mr-2 pr-24 py-8 min-h-[50em]">
|
|
32
32
|
{/* Title Section */}
|
|
33
33
|
<div class="relative border-b border-[rgb(var(--ec-page-border))] mb-6 pb-6">
|
|
34
34
|
<div class="xl:flex xl:items-start xl:justify-between">
|
|
35
35
|
<div class="min-w-0 flex-1">
|
|
36
|
-
<h1 class="text-
|
|
37
|
-
|
|
38
|
-
</h1>
|
|
39
|
-
<p class="mt-2 text-sm text-[rgb(var(--ec-page-text-muted))]">
|
|
36
|
+
<h1 class="text-2xl md:text-4xl font-bold text-[rgb(var(--ec-page-text))]">Ubiquitous Language</h1>
|
|
37
|
+
<p class="pt-2 text-base text-[rgb(var(--ec-page-text-muted))] font-light">
|
|
40
38
|
Browse and discover ubiquitous language terms in the {props.data.name} domain{
|
|
41
39
|
subdomains.length > 0 ? ' and its subdomains' : ''
|
|
42
40
|
}
|
|
@@ -49,7 +47,7 @@ const { subdomains, duplicateTerms } = ubiquitousLanguageData;
|
|
|
49
47
|
type="text"
|
|
50
48
|
id="searchInput"
|
|
51
49
|
placeholder="Search terms..."
|
|
52
|
-
class="w-full
|
|
50
|
+
class="block w-full rounded-md border-0 py-1.5 pr-4 pl-10 text-sm font-light text-[rgb(var(--ec-header-text))] bg-[rgb(var(--ec-header-bg))] shadow-xs ring-1 ring-inset ring-[rgb(var(--ec-dropdown-border))] placeholder:text-[rgb(var(--ec-icon-color))] focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:outline-none"
|
|
53
51
|
/>
|
|
54
52
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
|
55
53
|
<svg class="h-4 w-4 text-[rgb(var(--ec-icon-color))]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
@@ -61,14 +59,6 @@ const { subdomains, duplicateTerms } = ubiquitousLanguageData;
|
|
|
61
59
|
</svg>
|
|
62
60
|
</div>
|
|
63
61
|
</div>
|
|
64
|
-
<div class="mt-2 text-right">
|
|
65
|
-
<span
|
|
66
|
-
class="inline-flex items-center px-2 py-1 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md"
|
|
67
|
-
id="resultsCount"
|
|
68
|
-
>
|
|
69
|
-
{/* This will be updated by JavaScript */}
|
|
70
|
-
</span>
|
|
71
|
-
</div>
|
|
72
62
|
</div>
|
|
73
63
|
</div>
|
|
74
64
|
</div>
|
|
@@ -325,15 +315,11 @@ const { subdomains, duplicateTerms } = ubiquitousLanguageData;
|
|
|
325
315
|
function initializeSearch() {
|
|
326
316
|
const searchInput = document.getElementById('searchInput');
|
|
327
317
|
const domainSections = document.querySelectorAll('[data-domain-section]');
|
|
328
|
-
const resultsCount = document.getElementById('resultsCount');
|
|
329
318
|
|
|
330
319
|
function updateResults() {
|
|
331
320
|
//@ts-ignore
|
|
332
321
|
const searchTerm = searchInput?.value.toLowerCase() || '';
|
|
333
|
-
let totalVisibleTerms = 0;
|
|
334
|
-
let totalTerms = 0;
|
|
335
322
|
|
|
336
|
-
// Handle search for each domain section
|
|
337
323
|
domainSections.forEach((section) => {
|
|
338
324
|
const domainId = section.getAttribute('data-domain-section');
|
|
339
325
|
const domainCards = section.querySelectorAll('.term-card');
|
|
@@ -341,19 +327,14 @@ const { subdomains, duplicateTerms } = ubiquitousLanguageData;
|
|
|
341
327
|
let domainVisibleCount = 0;
|
|
342
328
|
|
|
343
329
|
domainCards.forEach((card) => {
|
|
344
|
-
totalTerms++;
|
|
345
330
|
const title = card.querySelector('h4')?.textContent?.toLowerCase() || '';
|
|
346
331
|
const description = card.querySelector('p')?.textContent?.toLowerCase() || '';
|
|
347
332
|
const matches = searchTerm === '' || title.includes(searchTerm) || description.includes(searchTerm);
|
|
348
333
|
|
|
349
334
|
card.classList.toggle('hidden', !matches);
|
|
350
|
-
if (matches)
|
|
351
|
-
domainVisibleCount++;
|
|
352
|
-
totalVisibleTerms++;
|
|
353
|
-
}
|
|
335
|
+
if (matches) domainVisibleCount++;
|
|
354
336
|
});
|
|
355
337
|
|
|
356
|
-
// Show/hide domain-specific no results message
|
|
357
338
|
if (domainNoResults) {
|
|
358
339
|
if (searchTerm.trim() === '') {
|
|
359
340
|
domainNoResults.classList.add('hidden');
|
|
@@ -362,16 +343,9 @@ const { subdomains, duplicateTerms } = ubiquitousLanguageData;
|
|
|
362
343
|
}
|
|
363
344
|
}
|
|
364
345
|
});
|
|
365
|
-
|
|
366
|
-
// Update results count
|
|
367
|
-
if (resultsCount) {
|
|
368
|
-
resultsCount.textContent = `Showing ${totalVisibleTerms} terms`;
|
|
369
|
-
}
|
|
370
346
|
}
|
|
371
347
|
|
|
372
348
|
searchInput?.addEventListener('input', updateResults);
|
|
373
|
-
|
|
374
|
-
// Initialize results count
|
|
375
349
|
updateResults();
|
|
376
350
|
}
|
|
377
351
|
|
|
@@ -2,7 +2,7 @@ import { getCollection } from 'astro:content';
|
|
|
2
2
|
import config from '@config';
|
|
3
3
|
import type { APIRoute } from 'astro';
|
|
4
4
|
|
|
5
|
-
import { isCustomDocsEnabled, isResourceDocsEnabled } from '@utils/feature';
|
|
5
|
+
import { isCustomDocsEnabled, isResourceDocsEnabled, isLLMSTxtEnabled } from '@utils/feature';
|
|
6
6
|
import { getUbiquitousLanguage } from '@utils/collections/domains';
|
|
7
7
|
import { getResourceDocs } from '@utils/collections/resource-docs';
|
|
8
8
|
|
|
@@ -82,6 +82,10 @@ const renderEntities = (baseUrl: string) => {
|
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
export const GET: APIRoute = async ({ params, request }) => {
|
|
85
|
+
if (!isLLMSTxtEnabled()) {
|
|
86
|
+
return new Response('llms.txt is not enabled for this Catalog.', { status: 404 });
|
|
87
|
+
}
|
|
88
|
+
|
|
85
89
|
const url = new URL(request.url);
|
|
86
90
|
const baseUrl = process.env.LLMS_TXT_BASE_URL || `${url.origin}`;
|
|
87
91
|
|
|
@@ -63,9 +63,13 @@ const pageTitle = `Team | ${props.data.name}`;
|
|
|
63
63
|
---
|
|
64
64
|
|
|
65
65
|
<VerticalSideBarLayout title={pageTitle} description={props.data.summary}>
|
|
66
|
-
<main
|
|
66
|
+
<main
|
|
67
|
+
class="flex docs-layout min-h-full bg-[rgb(var(--ec-page-bg))]"
|
|
68
|
+
data-pagefind-body
|
|
69
|
+
data-pagefind-meta={`title:${pageTitle}`}
|
|
70
|
+
>
|
|
67
71
|
<div class="flex docs-layout w-full">
|
|
68
|
-
<div class="w-full lg:mr-2 pr-8
|
|
72
|
+
<div class="w-full lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
|
|
69
73
|
<div class="border-b border-[rgb(var(--ec-page-border))] pb-6">
|
|
70
74
|
<div class="flex justify-start">
|
|
71
75
|
<div class="flex flex-col justify-between space-y-3">
|
|
@@ -146,8 +150,11 @@ const pageTitle = `Team | ${props.data.name}`;
|
|
|
146
150
|
<Content components={components(props)} />
|
|
147
151
|
</div>
|
|
148
152
|
</div>
|
|
149
|
-
<aside
|
|
150
|
-
|
|
153
|
+
<aside
|
|
154
|
+
class="hidden xl:block sticky top-[5.5rem] self-start w-[280px] max-h-[calc(100vh-5.5rem)] overflow-y-auto py-2 flex-shrink-0 pr-10 bg-[rgb(var(--ec-page-bg))]"
|
|
155
|
+
data-pagefind-ignore
|
|
156
|
+
>
|
|
157
|
+
<div class="py-2">
|
|
151
158
|
{
|
|
152
159
|
ownedDomainsList.length > 0 && (
|
|
153
160
|
<PillListFlat
|
|
@@ -60,9 +60,13 @@ const pageTitle = `User | ${props.data.name}`;
|
|
|
60
60
|
---
|
|
61
61
|
|
|
62
62
|
<VerticalSideBarLayout title={pageTitle}>
|
|
63
|
-
<main
|
|
63
|
+
<main
|
|
64
|
+
class="flex docs-layout min-h-full bg-[rgb(var(--ec-page-bg))]"
|
|
65
|
+
data-pagefind-body
|
|
66
|
+
data-pagefind-meta={`title:${pageTitle}`}
|
|
67
|
+
>
|
|
64
68
|
<div class="flex docs-layout w-full">
|
|
65
|
-
<div class="w-full lg:mr-2 pr-8
|
|
69
|
+
<div class="w-full lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
|
|
66
70
|
<div class="border-b border-[rgb(var(--ec-page-border))] pb-6">
|
|
67
71
|
<div class="flex justify-start gap-6">
|
|
68
72
|
{
|
|
@@ -70,7 +74,7 @@ const pageTitle = `User | ${props.data.name}`;
|
|
|
70
74
|
<img
|
|
71
75
|
src={props.data.avatarUrl}
|
|
72
76
|
alt={`${props.data.name}'s profile picture`}
|
|
73
|
-
class="w-20 h-20 rounded-
|
|
77
|
+
class="w-20 h-20 rounded-md object-cover border-2 border-[rgb(var(--ec-page-border))]"
|
|
74
78
|
/>
|
|
75
79
|
)
|
|
76
80
|
}
|
|
@@ -147,8 +151,11 @@ const pageTitle = `User | ${props.data.name}`;
|
|
|
147
151
|
<Content components={components(props)} />
|
|
148
152
|
</div>
|
|
149
153
|
</div>
|
|
150
|
-
<aside
|
|
151
|
-
|
|
154
|
+
<aside
|
|
155
|
+
class="hidden xl:block sticky top-[5.5rem] self-start w-[280px] max-h-[calc(100vh-5.5rem)] overflow-y-auto py-2 flex-shrink-0 pr-10 bg-[rgb(var(--ec-page-bg))]"
|
|
156
|
+
data-pagefind-ignore
|
|
157
|
+
>
|
|
158
|
+
<div class="py-2">
|
|
152
159
|
{
|
|
153
160
|
ownedDomainsList.length > 0 && (
|
|
154
161
|
<PillListFlat
|
|
@@ -13,13 +13,15 @@ const apiAccessEnabled = isEventCatalogScaleEnabled();
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
<VerticalSideBarLayout title="Schema Explorer - EventCatalog" showNestedSideBar={false}>
|
|
16
|
-
<
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
<style is:global>
|
|
17
|
+
#eventcatalog-header {
|
|
18
|
+
left: calc(var(--ec-vertical-nav-width, 14rem) + var(--ec-schema-sidebar-width, 360px)) !important;
|
|
19
|
+
}
|
|
20
|
+
</style>
|
|
21
|
+
<main
|
|
22
|
+
class="min-h-0 overflow-hidden bg-[rgb(var(--ec-page-bg))]"
|
|
23
|
+
style={`--ec-schema-sidebar-width: 360px; margin-left: calc(var(--ec-app-content-padding-left, 5rem) * -1); margin-right: calc(var(--ec-app-content-padding-right, 5rem) * -1); height: calc(100dvh - 60px);`}
|
|
24
|
+
>
|
|
25
|
+
<SchemaExplorer client:load schemas={schemas as any} apiAccessEnabled={apiAccessEnabled} />
|
|
24
26
|
</main>
|
|
25
27
|
</VerticalSideBarLayout>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import SettingsLayout from '@layouts/SettingsLayout.astro';
|
|
5
|
+
import { AssistantSettingsForm } from '@components/Settings/AssistantSettingsForm';
|
|
6
|
+
import { isDevMode, isSSR, isEventCatalogStarterEnabled, isEventCatalogScaleEnabled } from '@utils/feature';
|
|
7
|
+
import { buildUrl } from '@utils/url-builder';
|
|
8
|
+
import config from '@config';
|
|
9
|
+
|
|
10
|
+
const canEdit = isDevMode();
|
|
11
|
+
|
|
12
|
+
const initial = {
|
|
13
|
+
llmsTxtEnabled: config?.llmsTxt?.enabled ?? true,
|
|
14
|
+
chatEnabled: config?.chat?.enabled ?? true,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const projectRoot = process.env.PROJECT_DIR ?? process.cwd();
|
|
18
|
+
const hasChatConfigFile = fs.existsSync(path.join(projectRoot, 'eventcatalog.chat.js'));
|
|
19
|
+
const hasPlan = isEventCatalogStarterEnabled() || isEventCatalogScaleEnabled();
|
|
20
|
+
const inSSR = isSSR();
|
|
21
|
+
const chatAvailable = hasPlan && hasChatConfigFile && inSSR;
|
|
22
|
+
|
|
23
|
+
const apiBase = buildUrl('/api/settings');
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
<SettingsLayout title="Assistant Agent" active="assistant">
|
|
27
|
+
<AssistantSettingsForm
|
|
28
|
+
client:load
|
|
29
|
+
canEdit={canEdit}
|
|
30
|
+
initial={initial}
|
|
31
|
+
chatAvailable={chatAvailable}
|
|
32
|
+
hasPlan={hasPlan}
|
|
33
|
+
inSSR={inSSR}
|
|
34
|
+
hasChatConfigFile={hasChatConfigFile}
|
|
35
|
+
apiBase={apiBase}
|
|
36
|
+
/>
|
|
37
|
+
</SettingsLayout>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
import SettingsLayout from '@layouts/SettingsLayout.astro';
|
|
3
|
+
import { BillingSettingsForm, type PlanId } from '@components/Settings/BillingSettingsForm';
|
|
4
|
+
import { isEventCatalogStarterEnabled, isEventCatalogScaleEnabled } from '@utils/feature';
|
|
5
|
+
|
|
6
|
+
// Detect which plan is active. Enterprise has no env flag of its own — it includes
|
|
7
|
+
// Scale features, so an explicit Enterprise toggle would need a separate flag.
|
|
8
|
+
// For now, treat anything Scale-licensed as Scale; Enterprise users will still see
|
|
9
|
+
// upgrade copy on the Scale card but the Plans grid is the canonical source.
|
|
10
|
+
let currentPlan: PlanId = 'community';
|
|
11
|
+
if (isEventCatalogScaleEnabled()) currentPlan = 'scale';
|
|
12
|
+
else if (isEventCatalogStarterEnabled()) currentPlan = 'starter';
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<SettingsLayout title="Billing" active="billing">
|
|
16
|
+
<BillingSettingsForm client:load currentPlan={currentPlan} />
|
|
17
|
+
</SettingsLayout>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
import SettingsLayout from '@layouts/SettingsLayout.astro';
|
|
3
|
+
import { GeneralSettingsForm } from '@components/Settings/GeneralSettingsForm';
|
|
4
|
+
import { isDevMode } from '@utils/feature';
|
|
5
|
+
import { buildUrl } from '@utils/url-builder';
|
|
6
|
+
import config from '@config';
|
|
7
|
+
|
|
8
|
+
const canEdit = isDevMode();
|
|
9
|
+
|
|
10
|
+
const initial = {
|
|
11
|
+
title: config?.title ?? '',
|
|
12
|
+
tagline: config?.tagline,
|
|
13
|
+
organizationName: config?.organizationName,
|
|
14
|
+
homepageLink: config?.homepageLink,
|
|
15
|
+
editUrl: config?.editUrl,
|
|
16
|
+
repositoryUrl: config?.repositoryUrl,
|
|
17
|
+
logo: config?.logo
|
|
18
|
+
? {
|
|
19
|
+
alt: config.logo.alt,
|
|
20
|
+
text: config.logo.text,
|
|
21
|
+
src: config.logo.src,
|
|
22
|
+
}
|
|
23
|
+
: undefined,
|
|
24
|
+
theme: config?.theme || 'default',
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const apiBase = buildUrl('/api/settings');
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
<SettingsLayout title="General" active="general">
|
|
31
|
+
<GeneralSettingsForm client:load canEdit={canEdit} initial={initial} apiBase={apiBase} />
|
|
32
|
+
</SettingsLayout>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { buildUrl } from '@utils/url-builder';
|
|
3
|
+
|
|
4
|
+
const target = buildUrl('/settings/general');
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!doctype html>
|
|
8
|
+
<html lang="en">
|
|
9
|
+
<head>
|
|
10
|
+
<meta charset="utf-8" />
|
|
11
|
+
<meta http-equiv="refresh" content={`0; url=${target}`} />
|
|
12
|
+
<link rel="canonical" href={target} />
|
|
13
|
+
<title>Redirecting…</title>
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<p>Redirecting to <a href={target}>{target}</a>…</p>
|
|
17
|
+
<script is:inline define:vars={{ target }}>
|
|
18
|
+
window.location.replace(target);
|
|
19
|
+
</script>
|
|
20
|
+
</body>
|
|
21
|
+
</html>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
import SettingsLayout from '@layouts/SettingsLayout.astro';
|
|
3
|
+
import { LlmAccessSettingsForm } from '@components/Settings/LlmAccessSettingsForm';
|
|
4
|
+
import { isDevMode, isEventCatalogScaleEnabled } from '@utils/feature';
|
|
5
|
+
import { buildUrl } from '@utils/url-builder';
|
|
6
|
+
import config from '@config';
|
|
7
|
+
|
|
8
|
+
const canEdit = isDevMode();
|
|
9
|
+
|
|
10
|
+
const initial = {
|
|
11
|
+
llmsTxtEnabled: config?.llmsTxt?.enabled ?? true,
|
|
12
|
+
chatEnabled: config?.chat?.enabled ?? true,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const hasScalePlan = isEventCatalogScaleEnabled();
|
|
16
|
+
|
|
17
|
+
const apiBase = buildUrl('/api/settings');
|
|
18
|
+
const llmsTxtUrl = buildUrl('/docs/llm/llms.txt');
|
|
19
|
+
const llmsFullTxtUrl = buildUrl('/docs/llm/llms-full.txt');
|
|
20
|
+
const schemasTxtUrl = buildUrl('/docs/llm/schemas.txt');
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
<SettingsLayout title="LLM Access" active="llm-access">
|
|
24
|
+
<LlmAccessSettingsForm
|
|
25
|
+
client:load
|
|
26
|
+
canEdit={canEdit}
|
|
27
|
+
initial={initial}
|
|
28
|
+
hasScalePlan={hasScalePlan}
|
|
29
|
+
apiBase={apiBase}
|
|
30
|
+
llmsTxtUrl={llmsTxtUrl}
|
|
31
|
+
llmsFullTxtUrl={llmsFullTxtUrl}
|
|
32
|
+
schemasTxtUrl={schemasTxtUrl}
|
|
33
|
+
/>
|
|
34
|
+
</SettingsLayout>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import SettingsLayout from '@layouts/SettingsLayout.astro';
|
|
3
|
+
import { McpSettingsForm } from '@components/Settings/McpSettingsForm';
|
|
4
|
+
import { isSSR, isEventCatalogScaleEnabled } from '@utils/feature';
|
|
5
|
+
import { buildUrl } from '@utils/url-builder';
|
|
6
|
+
|
|
7
|
+
const hasScalePlan = isEventCatalogScaleEnabled();
|
|
8
|
+
const inSSR = isSSR();
|
|
9
|
+
const mcpUrl = buildUrl('/docs/mcp');
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<SettingsLayout title="MCP" active="mcp">
|
|
13
|
+
<McpSettingsForm client:load hasScalePlan={hasScalePlan} inSSR={inSSR} mcpUrl={mcpUrl} />
|
|
14
|
+
</SettingsLayout>
|
|
@@ -42,7 +42,7 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
42
42
|
<head>
|
|
43
43
|
<meta charset="UTF-8" />
|
|
44
44
|
<meta name="viewport" content="width=device-width" />
|
|
45
|
-
<link rel="icon" type="image/
|
|
45
|
+
<link rel="icon" type="image/png" href="/logo.png" />
|
|
46
46
|
<meta name="generator" content={Astro.generator} />
|
|
47
47
|
<title>EventCatalog Studio</title>
|
|
48
48
|
</head>
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import NodeGraph from '@components/MDX/NodeGraph/NodeGraph.astro';
|
|
3
3
|
import VisualiserLayout from '@layouts/VisualiserLayout.astro';
|
|
4
|
-
import { buildUrl } from '@utils/url-builder';
|
|
5
4
|
import { ClientRouter } from 'astro:transitions';
|
|
6
5
|
|
|
7
6
|
import { Page } from './_index.data';
|
|
@@ -19,9 +18,9 @@ const {
|
|
|
19
18
|
---
|
|
20
19
|
|
|
21
20
|
<VisualiserLayout title={`Visualiser | ${props.data.name} (${props.collection})`} description={props.data.summary}>
|
|
22
|
-
<div class="
|
|
21
|
+
<div class="p-2">
|
|
23
22
|
<div
|
|
24
|
-
class="h-[calc(100vh-
|
|
23
|
+
class="h-[calc(100vh-5rem)] w-full relative border border-[rgb(var(--ec-page-border))]"
|
|
25
24
|
id={`${id}-portal`}
|
|
26
25
|
transition:animate="fade"
|
|
27
26
|
>
|
|
@@ -34,10 +33,6 @@ const {
|
|
|
34
33
|
linkTo="visualiser"
|
|
35
34
|
version={props.data.version}
|
|
36
35
|
linksToVisualiser={false}
|
|
37
|
-
href={{
|
|
38
|
-
label: `Open documentation for ${props.data.name} v${props.data.version}`,
|
|
39
|
-
url: buildUrl(`/docs/${props.collection}/${props.data.id}/${props.data.version}`),
|
|
40
|
-
}}
|
|
41
36
|
/>
|
|
42
37
|
</div>
|
|
43
38
|
<ClientRouter />
|
|
@@ -20,9 +20,9 @@ const {
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
22
|
<VisualiserLayout title={`Visualiser | ${props.data.name} (${props.collection})`} description={props.data.summary}>
|
|
23
|
-
<div class="
|
|
23
|
+
<div class="p-2">
|
|
24
24
|
<div
|
|
25
|
-
class="h-[calc(100vh-
|
|
25
|
+
class="h-[calc(100vh-5rem)] w-full relative border border-[rgb(var(--ec-page-border))]"
|
|
26
26
|
id={`${id}-portal`}
|
|
27
27
|
transition:animate="fade"
|
|
28
28
|
>
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import NodeGraph from '@components/MDX/NodeGraph/NodeGraph.astro';
|
|
3
3
|
import VisualiserLayout from '@layouts/VisualiserLayout.astro';
|
|
4
|
-
import { buildUrl } from '@utils/url-builder';
|
|
5
4
|
import { ClientRouter } from 'astro:transitions';
|
|
6
5
|
|
|
7
6
|
import { Page } from './_index.data';
|
|
@@ -19,9 +18,9 @@ const {
|
|
|
19
18
|
---
|
|
20
19
|
|
|
21
20
|
<VisualiserLayout title={`Visualiser | ${props.data.name} (${props.collection})`} description={props.data.summary}>
|
|
22
|
-
<div class="
|
|
21
|
+
<div class="p-2">
|
|
23
22
|
<div
|
|
24
|
-
class="h-[calc(100vh-
|
|
23
|
+
class="h-[calc(100vh-5rem)] w-full relative border border-[rgb(var(--ec-page-border))]"
|
|
25
24
|
id={`${id}-portal`}
|
|
26
25
|
transition:animate="fade"
|
|
27
26
|
>
|
|
@@ -34,10 +33,6 @@ const {
|
|
|
34
33
|
linkTo="visualiser"
|
|
35
34
|
version={props.data.version}
|
|
36
35
|
linksToVisualiser={false}
|
|
37
|
-
href={{
|
|
38
|
-
label: `Open documentation for ${props.data.name} v${props.data.version}`,
|
|
39
|
-
url: buildUrl(`/docs/${props.collection}/${props.data.id}/${props.data.version}`),
|
|
40
|
-
}}
|
|
41
36
|
/>
|
|
42
37
|
</div>
|
|
43
38
|
<ClientRouter />
|