@eventcatalog/core 4.12.3 → 5.0.0-beta.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/LICENSE +226 -95
- package/NOTICE +30 -0
- package/README.md +3 -2
- package/dist/analytics/analytics.cjs +2 -1
- package/dist/analytics/analytics.js +2 -2
- package/dist/analytics/log-build.cjs +44 -16
- package/dist/analytics/log-build.d.cts +6 -5
- package/dist/analytics/log-build.d.ts +6 -5
- package/dist/analytics/log-build.js +4 -3
- package/dist/{chunk-U4YJSTGV.js → chunk-AYNZXUB5.js} +2 -10
- package/dist/{chunk-5BPN6QEC.js → chunk-K2ACDO7Y.js} +1 -1
- package/dist/{chunk-ZYTCBNB3.js → chunk-KYJZJLBD.js} +2 -1
- package/dist/{chunk-TV3YAWKQ.js → chunk-Q6SD5SNQ.js} +1 -1
- package/dist/{chunk-HPC6KUDQ.js → chunk-S2QGT7ZF.js} +1 -1
- package/dist/chunk-TQLRG35T.js +203 -0
- package/dist/{chunk-M577VUOX.js → chunk-UDS3SYLZ.js} +13 -16
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog.cjs +408 -291
- package/dist/eventcatalog.config.d.cts +2 -3
- package/dist/eventcatalog.config.d.ts +2 -3
- package/dist/eventcatalog.js +35 -98
- package/dist/federation/content-cache.d.cts +0 -5
- package/dist/federation/content-cache.d.ts +0 -5
- package/dist/federation/diagnostics.d.cts +0 -5
- package/dist/federation/diagnostics.d.ts +0 -5
- package/dist/federation/federate.cjs +0 -9
- package/dist/federation/federate.d.cts +0 -5
- package/dist/federation/federate.d.ts +0 -5
- package/dist/federation/federate.js +4 -5
- package/dist/federation/filesystem-source-provider.d.cts +0 -5
- package/dist/federation/filesystem-source-provider.d.ts +0 -5
- package/dist/federation/github-source-provider.d.cts +0 -5
- package/dist/federation/github-source-provider.d.ts +0 -5
- package/dist/federation/output-transaction.d.cts +0 -4
- package/dist/federation/output-transaction.d.ts +0 -4
- package/dist/federation/public-assets.d.cts +0 -5
- package/dist/federation/public-assets.d.ts +0 -5
- package/dist/federation/source-provider.d.cts +0 -5
- package/dist/federation/source-provider.d.ts +0 -5
- package/dist/federation/types.d.cts +0 -5
- package/dist/federation/types.d.ts +0 -5
- package/dist/generate.cjs +1 -1
- package/dist/generate.js +3 -3
- package/dist/license-C1y-56bb.d.cts +23 -0
- package/dist/license-C1y-56bb.d.ts +23 -0
- package/dist/runtime-dependencies/@eventcatalog__visualiser__layout.mjs +3 -0
- package/dist/runtime-dependencies/@modelcontextprotocol__ext-apps.mjs +3 -0
- package/dist/runtime-dependencies/@modelcontextprotocol__ext-apps__react.mjs +3 -0
- package/dist/runtime-dependencies/@modelcontextprotocol__ext-apps__server.mjs +3 -0
- package/dist/runtime-dependencies/@modelcontextprotocol__sdk__types.js.mjs +3 -0
- package/dist/runtime-dependencies/manifest.json +12 -1
- package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__graphql.mjs +3 -0
- package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__json.mjs +3 -0
- package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__markup.mjs +3 -0
- package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__protobuf.mjs +3 -0
- package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__yaml.mjs +3 -0
- package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__styles__prism__one-dark.mjs +3 -0
- package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__styles__prism__one-light.mjs +3 -0
- package/dist/utils/cli-logger.cjs +1 -1
- package/dist/utils/cli-logger.js +2 -2
- package/dist/utils/license-status.cjs +240 -0
- package/dist/utils/license-status.d.cts +28 -0
- package/dist/utils/license-status.d.ts +28 -0
- package/dist/utils/license-status.js +12 -0
- package/eventcatalog/astro.config.mjs +1 -1
- package/eventcatalog/integrations/eventcatalog-runtime.mjs +1 -1
- package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +29 -19
- package/eventcatalog/src/components/ChatPanel/OfflineReply.tsx +74 -0
- package/eventcatalog/src/components/FieldsExplorer/FieldFilters.tsx +24 -28
- package/eventcatalog/src/components/FieldsExplorer/FieldNodeGraph.tsx +16 -11
- package/eventcatalog/src/components/FieldsExplorer/FieldsExplorer.tsx +4 -218
- package/eventcatalog/src/components/FieldsExplorer/FieldsTable.tsx +27 -36
- package/eventcatalog/src/components/Header.astro +43 -58
- package/eventcatalog/src/components/Lists/PillListFlat.styles.css +17 -17
- package/eventcatalog/src/components/MDX/EntityMap/EntityMap.astro +1 -1
- package/eventcatalog/src/components/MDX/Flow/Flow.astro +4 -0
- package/eventcatalog/src/components/MDX/NodeGraph/AstroNodeGraph.tsx +14 -0
- package/eventcatalog/src/components/MDX/NodeGraph/NodeGraph.astro +49 -18
- package/eventcatalog/src/components/MDX/RemoteFile.astro +2 -24
- package/eventcatalog/src/components/SchemaExplorer/ApiAccessSection.tsx +59 -93
- package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +1 -32
- package/eventcatalog/src/components/SchemaExplorer/DiffViewer.tsx +20 -67
- package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +2 -11
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsPanel.tsx +11 -60
- package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +1 -3
- package/eventcatalog/src/components/SchemaExplorer/SchemaPageViewer.tsx +0 -3
- package/eventcatalog/src/components/SchemaExplorer/VersionHistoryModal.tsx +2 -9
- package/eventcatalog/src/components/SchemaExplorer/parse-schema.ts +46 -0
- package/eventcatalog/src/components/SchemaExplorer/utils.ts +11 -0
- package/eventcatalog/src/components/Settings/AssistantSettingsForm.tsx +2 -9
- package/eventcatalog/src/components/Settings/LicenseSettings.tsx +288 -0
- package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +3 -19
- package/eventcatalog/src/components/Settings/McpSettingsForm.tsx +85 -30
- package/eventcatalog/src/components/Settings/SettingsShared.tsx +7 -75
- package/eventcatalog/src/components/SideNav/CustomDocsNav.astro +2 -2
- package/eventcatalog/src/components/TrialBadge.astro +82 -0
- package/eventcatalog/src/content.config.ts +9 -96
- package/eventcatalog/src/{enterprise → features}/ai/chat-api.ts +22 -34
- package/eventcatalog/src/{enterprise → features}/analytics/adapters/ga4.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/analytics/adapters/gtm.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/analytics/adapters/posthog.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/analytics/components/AnalyticsHead.astro +2 -4
- package/eventcatalog/src/{enterprise → features}/analytics/components/AnalyticsTracker.astro +2 -4
- package/eventcatalog/src/{enterprise → features}/analytics/tracker.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/api/catalog.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/auth/[...auth].ts +0 -5
- package/eventcatalog/src/{enterprise → features}/auth/middleware/middleware-auth.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/auth/middleware/middleware.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/collections/custom-pages.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/collections/index.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/collections/resource-docs.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/custom-documentation/collection.ts +0 -5
- package/eventcatalog/src/features/custom-documentation/components/CustomDocsNav/CustomDocsNav.astro +9 -0
- package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/CustomDocsNavWrapper.tsx +0 -5
- package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/components/NestedItem.tsx +1 -6
- package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/components/NoResultsFound.tsx +0 -5
- package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/index.tsx +1 -6
- package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/types.ts +0 -5
- package/eventcatalog/src/{enterprise/custom-documentation/pages/docs/custom/index.astro → features/custom-documentation/components/CustomDocumentationPage.astro} +5 -5
- package/eventcatalog/src/{enterprise → features}/custom-documentation/utils/badge-styles.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/custom-documentation/utils/custom-docs.ts +1 -6
- package/eventcatalog/src/{enterprise → features}/custom-documentation/utils/docs-search.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/custom-pages/routes.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/directory/user-team-directory.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/fields/field-extractor.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/fields/field-indexer.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/fields/fields-db.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/fields/pages/api/fields.ts +1 -6
- package/eventcatalog/src/{enterprise → features}/fields/pages/fields.astro +1 -2
- package/eventcatalog/src/{enterprise → features}/integrations/eventcatalog-features.ts +17 -75
- package/eventcatalog/src/features/mcp/apps/architecture-diagram/links.ts +59 -0
- package/eventcatalog/src/features/mcp/apps/architecture-diagram/node-chat.tsx +299 -0
- package/eventcatalog/src/features/mcp/apps/architecture-diagram/shared.ts +14 -0
- package/eventcatalog/src/features/mcp/apps/architecture-diagram/view.tsx +454 -0
- package/eventcatalog/src/features/mcp/apps/generated/viewer.html +432 -0
- package/eventcatalog/src/features/mcp/apps/mermaid-stub.ts +10 -0
- package/eventcatalog/src/features/mcp/apps/schema-viewer/schema-code.tsx +65 -0
- package/eventcatalog/src/features/mcp/apps/schema-viewer/shared.ts +23 -0
- package/eventcatalog/src/features/mcp/apps/schema-viewer/view.tsx +170 -0
- package/eventcatalog/src/features/mcp/apps/shared/app-view.tsx +98 -0
- package/eventcatalog/src/features/mcp/apps/shared/resource-types.ts +15 -0
- package/eventcatalog/src/features/mcp/apps/viewer/shared.ts +24 -0
- package/eventcatalog/src/features/mcp/apps/viewer/styles.css +25 -0
- package/eventcatalog/src/features/mcp/apps/viewer/view.tsx +59 -0
- package/eventcatalog/src/features/mcp/mcp-app-icons.ts +63 -0
- package/eventcatalog/src/features/mcp/mcp-apps.ts +160 -0
- package/eventcatalog/src/{enterprise → features}/mcp/mcp-auth.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/mcp/mcp-scope.ts +7 -7
- package/eventcatalog/src/{enterprise → features}/mcp/mcp-scoped-tools.ts +47 -40
- package/eventcatalog/src/{enterprise → features}/mcp/mcp-server.ts +347 -34
- package/eventcatalog/src/{enterprise → features}/mcp/oauth-protected-resource.ts +0 -5
- package/eventcatalog/src/features/mcp/schema-viewer.ts +24 -0
- package/eventcatalog/src/{enterprise → features}/tools/catalog-tools.ts +133 -102
- package/eventcatalog/src/features/tools/index.ts +5 -0
- package/eventcatalog/src/{enterprise → features}/visualizer-layout/reset.ts +0 -5
- package/eventcatalog/src/{enterprise → features}/visualizer-layout/save.ts +0 -5
- package/eventcatalog/src/layouts/BaseLayout.astro +2 -2
- package/eventcatalog/src/layouts/Footer.astro +31 -39
- package/eventcatalog/src/layouts/SettingsLayout.astro +6 -6
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +7 -37
- package/eventcatalog/src/{enterprise → pages}/api/schemas/[collection]/[id]/[version]/index.ts +0 -22
- package/eventcatalog/src/{enterprise → pages}/api/schemas/services/[id]/[version]/[specification]/index.ts +0 -19
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/_index.data.ts +2 -6
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +1 -5
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/_index.data.ts +2 -6
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +1 -5
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId].md.ts +2 -6
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId].mdx.ts +2 -6
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +9 -5
- package/eventcatalog/src/pages/docs/custom/[...path]/index.astro +12 -0
- package/eventcatalog/src/{enterprise/custom-documentation/pages/docs/custom/root-index.astro → pages/docs/custom/index.astro} +1 -23
- package/eventcatalog/src/pages/docs/llm/llms-full.txt.ts +4 -9
- package/eventcatalog/src/pages/docs/llm/llms.txt.ts +4 -4
- package/eventcatalog/src/pages/docs/llm/schemas.txt.ts +0 -11
- package/eventcatalog/src/pages/docs/services/[id]/[docType]/[docId]/index.astro +2 -2
- package/eventcatalog/src/pages/index.astro +2 -2
- package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/index.astro +0 -3
- package/eventcatalog/src/pages/schemas/explorer/index.astro +1 -4
- package/eventcatalog/src/pages/settings/assistant.astro +2 -4
- package/eventcatalog/src/pages/settings/license.astro +18 -0
- package/eventcatalog/src/pages/settings/llm-access.astro +1 -4
- package/eventcatalog/src/pages/settings/mcp.astro +33 -4
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/_index.data.ts +1 -2
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/index.astro +2 -45
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +1 -1
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version].mermaid.ts +7 -109
- package/eventcatalog/src/pages/visualiser/_mermaid-route.ts +78 -0
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/_index.data.ts +44 -0
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +1 -1
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/index.astro +56 -0
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/index.astro +3 -40
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version].mermaid.ts +20 -0
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/_index.data.ts +29 -0
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/index.astro +3 -38
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/index.astro +56 -0
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version].mermaid.ts +20 -0
- package/eventcatalog/src/stores/sidebar-store/builders/agent.ts +1 -1
- package/eventcatalog/src/stores/sidebar-store/builders/container.ts +1 -1
- package/eventcatalog/src/stores/sidebar-store/builders/data-product.ts +1 -1
- package/eventcatalog/src/stores/sidebar-store/builders/domain.ts +7 -32
- package/eventcatalog/src/stores/sidebar-store/builders/entity.ts +1 -1
- package/eventcatalog/src/stores/sidebar-store/builders/message.ts +1 -1
- package/eventcatalog/src/stores/sidebar-store/builders/service.ts +2 -8
- package/eventcatalog/src/stores/sidebar-store/builders/system.ts +2 -12
- package/eventcatalog/src/stores/sidebar-store/custom-sidebar.ts +0 -10
- package/eventcatalog/src/stores/sidebar-store/state.ts +4 -6
- package/eventcatalog/src/styles/theme.css +22 -18
- package/eventcatalog/src/styles/themes/forest.css +8 -8
- package/eventcatalog/src/styles/themes/ocean.css +8 -8
- package/eventcatalog/src/styles/themes/sapphire.css +8 -8
- package/eventcatalog/src/styles/themes/sunset.css +8 -8
- package/eventcatalog/src/utils/clipboard.ts +4 -4
- package/eventcatalog/src/utils/collections/flow-step-schema.ts +117 -0
- package/eventcatalog/src/utils/collections/pointer-schema.ts +7 -0
- package/eventcatalog/src/utils/collections/resource-docs.ts +677 -14
- package/eventcatalog/src/utils/collections/schema-loader.ts +0 -5
- package/eventcatalog/src/utils/feature.ts +14 -23
- package/eventcatalog/src/utils/license.ts +114 -0
- package/eventcatalog/src/utils/node-graphs/architecture-diagram-types.ts +32 -0
- package/eventcatalog/src/utils/node-graphs/architecture-diagram.ts +84 -0
- package/eventcatalog/src/utils/node-graphs/channel-node-graph.ts +4 -25
- package/eventcatalog/src/utils/node-graphs/container-node-graph.ts +12 -39
- package/eventcatalog/src/utils/node-graphs/data-products-node-graph.ts +11 -27
- package/eventcatalog/src/utils/node-graphs/domain-levels-node-graph.ts +679 -0
- package/eventcatalog/src/utils/node-graphs/domains-node-graph.ts +3 -20
- package/eventcatalog/src/utils/node-graphs/export-mermaid.ts +51 -4
- package/eventcatalog/src/utils/node-graphs/field-node-graph.ts +8 -23
- package/eventcatalog/src/utils/node-graphs/flow-lanes.ts +119 -0
- package/eventcatalog/src/utils/node-graphs/flows-node-graph.ts +133 -47
- package/eventcatalog/src/utils/node-graphs/layout-node-graph.ts +28 -0
- package/eventcatalog/src/utils/node-graphs/layout-persistence.ts +3 -3
- package/eventcatalog/src/utils/node-graphs/message-node-graph.ts +16 -34
- package/eventcatalog/src/utils/node-graphs/services-node-graph.ts +11 -25
- package/eventcatalog/src/utils/node-graphs/system-context-node-graph.ts +18 -54
- package/eventcatalog/src/utils/node-graphs/system-levels-node-graph.ts +59 -0
- package/eventcatalog/src/utils/node-graphs/systems-node-graph.ts +20 -80
- package/eventcatalog/src/utils/node-graphs/utils/utils.ts +1 -78
- package/eventcatalog/src/utils/trial.ts +36 -0
- package/eventcatalog/tsconfig.json +1 -1
- package/package.json +11 -11
- package/dist/chunk-FV56YFM4.js +0 -7
- package/dist/federation/entitlement.cjs +0 -31
- package/dist/federation/entitlement.d.cts +0 -12
- package/dist/federation/entitlement.d.ts +0 -12
- package/dist/federation/entitlement.js +0 -6
- package/dist/runtime-dependencies/dagre.mjs +0 -3
- package/eventcatalog/src/components/Settings/BillingSettingsForm.tsx +0 -265
- package/eventcatalog/src/enterprise/LICENSE +0 -57
- package/eventcatalog/src/enterprise/README.md +0 -5
- package/eventcatalog/src/enterprise/collections/resource-docs-utils.ts +0 -691
- package/eventcatalog/src/enterprise/custom-documentation/components/CustomDocsNav/CustomDocsNav.astro +0 -9
- package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/[...path]/index.astro +0 -18
- package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/feature.astro +0 -171
- package/eventcatalog/src/enterprise/feature.ts +0 -75
- package/eventcatalog/src/enterprise/tools/index.ts +0 -10
- package/eventcatalog/src/hooks/eventcatalog-visualizer.ts +0 -126
- package/eventcatalog/src/pages/settings/billing.astro +0 -17
- package/eventcatalog/src/pages/visualiser/domain-integrations/index.astro +0 -26
- package/eventcatalog/src/types/mcp-modules.d.ts +0 -67
- package/eventcatalog/src/utils/node-graphs/domains-canvas.ts +0 -261
- package/eventcatalog/src/utils/node-graphs/export-node-graph.ts +0 -91
- /package/eventcatalog/src/{enterprise → features}/auth/error.astro +0 -0
- /package/eventcatalog/src/{enterprise → features}/auth/login.astro +0 -0
- /package/eventcatalog/src/{enterprise → features}/auth/unauthorized.astro +0 -0
- /package/eventcatalog/src/{enterprise/custom-documentation/pages → pages}/docs/custom/[...path]/_index.data.ts +0 -0
- /package/eventcatalog/src/{enterprise/custom-documentation/pages → pages}/docs/custom/[...path].mdx.ts +0 -0
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
import
|
|
3
|
-
import VisualiserLayout from '@layouts/VisualiserLayout.astro';
|
|
4
|
-
import { ClientRouter } from 'astro:transitions';
|
|
2
|
+
import { buildUrl } from '@utils/url-builder';
|
|
5
3
|
|
|
6
4
|
import { Page } from './_index.data';
|
|
7
5
|
|
|
@@ -11,39 +9,6 @@ export const getStaticPaths = Page.getStaticPaths;
|
|
|
11
9
|
// Get data
|
|
12
10
|
const props = await Page.getData(Astro);
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
} = props;
|
|
12
|
+
// The System Context diagram is now level 1 of the system's visualiser page
|
|
13
|
+
return Astro.redirect(buildUrl(`/visualiser/systems/${props.data.id}/${props.data.version}?level=1`));
|
|
17
14
|
---
|
|
18
|
-
|
|
19
|
-
<VisualiserLayout title={`Visualiser | ${props.data.name} - System Context`} description={props.data.summary}>
|
|
20
|
-
<div id="system-context-map-page" class="p-2">
|
|
21
|
-
<div
|
|
22
|
-
class="system-context-map-viewport h-[calc(100vh-5rem)] w-full relative border border-[rgb(var(--ec-page-border))]"
|
|
23
|
-
id={`${id}-portal`}
|
|
24
|
-
transition:name="visualiser-graph"
|
|
25
|
-
>
|
|
26
|
-
</div>
|
|
27
|
-
<NodeGraph
|
|
28
|
-
id={id}
|
|
29
|
-
collection="systems-context"
|
|
30
|
-
title={`${props.data.name} (v${props.data.version}) - System Context`}
|
|
31
|
-
mode="full"
|
|
32
|
-
linkTo="visualiser"
|
|
33
|
-
version={props.data.version}
|
|
34
|
-
linksToVisualiser={false}
|
|
35
|
-
/>
|
|
36
|
-
</div>
|
|
37
|
-
<ClientRouter />
|
|
38
|
-
</VisualiserLayout>
|
|
39
|
-
|
|
40
|
-
<style is:global>
|
|
41
|
-
html[data-embedded='true'] #system-context-map-page {
|
|
42
|
-
box-sizing: border-box;
|
|
43
|
-
height: 100vh;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
html[data-embedded='true'] #system-context-map-page .system-context-map-viewport {
|
|
47
|
-
height: 100%;
|
|
48
|
-
}
|
|
49
|
-
</style>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
import NodeGraph from '@components/MDX/NodeGraph/NodeGraph.astro';
|
|
3
|
+
import VisualiserLayout from '@layouts/VisualiserLayout.astro';
|
|
4
|
+
import { buildUrl } from '@utils/url-builder';
|
|
5
|
+
import { ClientRouter } from 'astro:transitions';
|
|
6
|
+
|
|
7
|
+
import { Page } from './_index.data';
|
|
8
|
+
|
|
9
|
+
export const prerender = Page.prerender;
|
|
10
|
+
export const getStaticPaths = Page.getStaticPaths;
|
|
11
|
+
|
|
12
|
+
// Get data
|
|
13
|
+
const props = await Page.getData(Astro);
|
|
14
|
+
|
|
15
|
+
const {
|
|
16
|
+
data: { id },
|
|
17
|
+
} = props;
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
<VisualiserLayout title={`Visualiser | ${props.data.name} (systems)`} description={props.data.summary}>
|
|
21
|
+
<div id="system-visualiser-page" class="p-2">
|
|
22
|
+
<div
|
|
23
|
+
class="system-visualiser-viewport h-[calc(100vh-5rem)] w-full relative border border-[rgb(var(--ec-page-border))]"
|
|
24
|
+
id={`${id}-portal`}
|
|
25
|
+
transition:name="visualiser-graph"
|
|
26
|
+
>
|
|
27
|
+
</div>
|
|
28
|
+
<NodeGraph
|
|
29
|
+
id={id}
|
|
30
|
+
collection="systems-levels"
|
|
31
|
+
overview={{ label: 'system context' }}
|
|
32
|
+
title={`${props.data.name} (v${props.data.version})`}
|
|
33
|
+
mode="full"
|
|
34
|
+
linkTo="visualiser"
|
|
35
|
+
version={props.data.version}
|
|
36
|
+
linksToVisualiser={false}
|
|
37
|
+
zoomOnScroll={true}
|
|
38
|
+
href={{
|
|
39
|
+
label: `Open documentation for ${props.data.name} v${props.data.version}`,
|
|
40
|
+
url: buildUrl(`/docs/systems/${props.data.id}/${props.data.version}`),
|
|
41
|
+
}}
|
|
42
|
+
/>
|
|
43
|
+
</div>
|
|
44
|
+
<ClientRouter />
|
|
45
|
+
</VisualiserLayout>
|
|
46
|
+
|
|
47
|
+
<style is:global>
|
|
48
|
+
html[data-embedded='true'] #system-visualiser-page {
|
|
49
|
+
box-sizing: border-box;
|
|
50
|
+
height: 100vh;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
html[data-embedded='true'] #system-visualiser-page .system-visualiser-viewport {
|
|
54
|
+
height: 100%;
|
|
55
|
+
}
|
|
56
|
+
</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API endpoint to return mermaid diagram code for a systems visualiser page
|
|
3
|
+
* URL: /visualiser/systems/{id}/{version}.mermaid
|
|
4
|
+
*
|
|
5
|
+
* Lives next to the systems Diagram page, which would otherwise handle these requests
|
|
6
|
+
* before the generic visualiser/[type]/[id]/[version].mermaid route.
|
|
7
|
+
*/
|
|
8
|
+
import type { APIRoute, GetStaticPaths } from 'astro';
|
|
9
|
+
import { isAuthEnabled } from '@utils/feature';
|
|
10
|
+
import { createMermaidDiagramResponse, getMermaidDiagramPaths } from '../../_mermaid-route';
|
|
11
|
+
|
|
12
|
+
// Prerender static pages when auth is disabled, use SSR when auth is enabled
|
|
13
|
+
export const prerender = !isAuthEnabled();
|
|
14
|
+
|
|
15
|
+
export const getStaticPaths: GetStaticPaths = async () => {
|
|
16
|
+
const paths = await getMermaidDiagramPaths(['systems']);
|
|
17
|
+
return paths.map(({ id, version }) => ({ params: { id, version } }));
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const GET: APIRoute = async ({ params }) => createMermaidDiagramResponse({ ...params, type: 'systems' });
|
|
@@ -94,15 +94,6 @@ export const buildDomainSections = (
|
|
|
94
94
|
const systemsInDomain = domain.data.systems || [];
|
|
95
95
|
const renderSystems = systemsInDomain.length > 0 && shouldRenderSideBarSection(domain, 'systems');
|
|
96
96
|
|
|
97
|
-
// The domain's System Diagram only has something to show when at least one of
|
|
98
|
-
// its systems takes part in a context graph (declares relationships or actors). This
|
|
99
|
-
// mirrors the guard that generates the visualiser page, so we never link to a page
|
|
100
|
-
// that wasn't generated.
|
|
101
|
-
const hasSystemContext = systemsInDomain.some((system: any) => {
|
|
102
|
-
const data = system?.data || system;
|
|
103
|
-
return (data?.relationships || []).length > 0 || (data?.actors || []).length > 0;
|
|
104
|
-
});
|
|
105
|
-
|
|
106
97
|
const subDomains = domain.data.domains || [];
|
|
107
98
|
const renderSubDomains = subDomains.length > 0 && shouldRenderSideBarSection(domain, 'subdomains');
|
|
108
99
|
|
|
@@ -153,16 +144,6 @@ export const buildDomainSections = (
|
|
|
153
144
|
sendsMessages.length > 0 ||
|
|
154
145
|
receivesMessages.length > 0;
|
|
155
146
|
|
|
156
|
-
// The Resource Diagram renders the domain's services, agents, data products and
|
|
157
|
-
// subdomains (see domains-node-graph). Only link to it when there's something to
|
|
158
|
-
// draw — otherwise the visualiser page is empty.
|
|
159
|
-
const hasResourceDiagram =
|
|
160
|
-
servicesInDomain.length > 0 ||
|
|
161
|
-
externalSystemsInDomain.length > 0 ||
|
|
162
|
-
agentsInDomain.length > 0 ||
|
|
163
|
-
dataProductsInDomain.length > 0 ||
|
|
164
|
-
subDomains.length > 0;
|
|
165
|
-
|
|
166
147
|
// Diagrams
|
|
167
148
|
const domainDiagrams = domain.data.diagrams || [];
|
|
168
149
|
const diagramNavItems = buildDiagramNavItems(domainDiagrams, context.diagrams);
|
|
@@ -268,19 +249,13 @@ export const buildDomainSections = (
|
|
|
268
249
|
title: 'Overview',
|
|
269
250
|
href: buildUrl(`/architecture/domains/${domain.data.id}/${domain.data.version}`),
|
|
270
251
|
},
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
renderVisualiser &&
|
|
279
|
-
hasResourceDiagram && {
|
|
280
|
-
type: 'item',
|
|
281
|
-
title: 'Resource Diagram',
|
|
282
|
-
href: buildUrl(`/visualiser/domains/${domain.data.id}/${domain.data.version}`),
|
|
283
|
-
},
|
|
252
|
+
// The domain's diagram, with levels from the domains it talks to down to
|
|
253
|
+
// its messages
|
|
254
|
+
renderVisualiser && {
|
|
255
|
+
type: 'item',
|
|
256
|
+
title: 'Diagram',
|
|
257
|
+
href: buildUrl(`/visualiser/domains/${domain.data.id}/${domain.data.version}`),
|
|
258
|
+
},
|
|
284
259
|
renderEntities &&
|
|
285
260
|
renderVisualiser && {
|
|
286
261
|
type: 'item',
|
|
@@ -97,7 +97,7 @@ export const buildEntitySections = (
|
|
|
97
97
|
icon: 'Workflow',
|
|
98
98
|
pages: entityMapTargets.map((target) => ({
|
|
99
99
|
type: 'item',
|
|
100
|
-
title: entityMapTargets.length === 1 ? 'Entity
|
|
100
|
+
title: entityMapTargets.length === 1 ? 'Entity Diagram' : `${target.label} Entity Diagram`,
|
|
101
101
|
href: target.href,
|
|
102
102
|
})),
|
|
103
103
|
}
|
|
@@ -146,21 +146,15 @@ export const buildServiceSections = (
|
|
|
146
146
|
},
|
|
147
147
|
renderVisualiser && {
|
|
148
148
|
type: 'item',
|
|
149
|
-
title: '
|
|
149
|
+
title: 'Diagram',
|
|
150
150
|
href: buildUrl(`/visualiser/services/${service.data.id}/${service.data.version}`),
|
|
151
151
|
},
|
|
152
152
|
renderVisualiser &&
|
|
153
153
|
renderEntities && {
|
|
154
154
|
type: 'item',
|
|
155
|
-
title: 'Entity
|
|
155
|
+
title: 'Entity Diagram',
|
|
156
156
|
href: buildUrl(`/visualiser/services/${service.data.id}/${service.data.version}/entity-map`),
|
|
157
157
|
},
|
|
158
|
-
renderVisualiser &&
|
|
159
|
-
hasDataStores && {
|
|
160
|
-
type: 'item',
|
|
161
|
-
title: 'Data Dependency Graph',
|
|
162
|
-
href: buildUrl(`/visualiser/services/${service.data.id}/${service.data.version}/data`),
|
|
163
|
-
},
|
|
164
158
|
].filter(Boolean) as ChildRef[],
|
|
165
159
|
},
|
|
166
160
|
diagrams: hasDiagrams
|
|
@@ -83,11 +83,6 @@ export const buildSystemSections = (
|
|
|
83
83
|
const diagramNavItems = buildDiagramNavItems(systemDiagrams, context.diagrams);
|
|
84
84
|
const hasDiagrams = diagramNavItems.length > 0 && shouldRenderSideBarSection(system, 'diagrams');
|
|
85
85
|
|
|
86
|
-
// A system that declares relationships to other systems, or actors, can be the starting
|
|
87
|
-
// point of a Context Diagram. (Systems that are only referenced by others still get a
|
|
88
|
-
// context page; here we surface the link from systems that declare something themselves.)
|
|
89
|
-
const hasRelationships = (system.data.relationships || []).length > 0 || (system.data.actors || []).length > 0;
|
|
90
|
-
|
|
91
86
|
const renderOwners = owners.length > 0 && shouldRenderSideBarSection(system, 'owners');
|
|
92
87
|
const renderRepository = system.data.repository && shouldRenderSideBarSection(system, 'repository');
|
|
93
88
|
const hasAttachments = system.data.attachments && system.data.attachments.length > 0;
|
|
@@ -165,15 +160,10 @@ export const buildSystemSections = (
|
|
|
165
160
|
title: 'Overview',
|
|
166
161
|
href: buildUrl(`/architecture/systems/${system.data.id}/${system.data.version}`),
|
|
167
162
|
},
|
|
168
|
-
|
|
169
|
-
hasRelationships && {
|
|
170
|
-
type: 'item',
|
|
171
|
-
title: 'Context Diagram',
|
|
172
|
-
href: buildUrl(`/visualiser/systems/${system.data.id}/${system.data.version}/context`),
|
|
173
|
-
},
|
|
163
|
+
// The system's diagram, with levels from its context down to its messages
|
|
174
164
|
renderVisualiser && {
|
|
175
165
|
type: 'item',
|
|
176
|
-
title: '
|
|
166
|
+
title: 'Diagram',
|
|
177
167
|
href: buildUrl(`/visualiser/systems/${system.data.id}/${system.data.version}`),
|
|
178
168
|
},
|
|
179
169
|
].filter(Boolean) as ChildRef[],
|
|
@@ -73,12 +73,6 @@ type EntryLike = { collection: string; data: Record<string, any> };
|
|
|
73
73
|
|
|
74
74
|
export type CustomSidebarContext = {
|
|
75
75
|
resourceDocs?: ResourceDocEntry[];
|
|
76
|
-
/**
|
|
77
|
-
* Whether the resource-docs feature is available on this plan. When explicitly false
|
|
78
|
-
* (community mode) `[[doc|…]]` refs render nothing — the pages they'd link to don't
|
|
79
|
-
* exist — instead of failing the build. Missing docs still fail when the feature is on.
|
|
80
|
-
*/
|
|
81
|
-
resourceDocsEnabled?: boolean;
|
|
82
76
|
domains?: EntryLike[];
|
|
83
77
|
services?: EntryLike[];
|
|
84
78
|
systems?: EntryLike[];
|
|
@@ -237,8 +231,6 @@ const resolveDocPage = (
|
|
|
237
231
|
context: CustomSidebarContext,
|
|
238
232
|
spec: SidebarSpec
|
|
239
233
|
): NavNode | null => {
|
|
240
|
-
if (context.resourceDocsEnabled === false) return null;
|
|
241
|
-
|
|
242
234
|
const [docType, ...rest] = ref.id.split('/');
|
|
243
235
|
const docId = rest.join('/');
|
|
244
236
|
|
|
@@ -608,7 +600,6 @@ export const resolveSidebarPages = <K extends string>(
|
|
|
608
600
|
*/
|
|
609
601
|
export const toCustomSidebarContext = (context: {
|
|
610
602
|
resourceDocs?: ResourceDocEntry[];
|
|
611
|
-
resourceDocsEnabled?: boolean;
|
|
612
603
|
domains?: unknown[];
|
|
613
604
|
services?: unknown[];
|
|
614
605
|
systems?: unknown[];
|
|
@@ -626,7 +617,6 @@ export const toCustomSidebarContext = (context: {
|
|
|
626
617
|
schemas?: unknown[];
|
|
627
618
|
}): CustomSidebarContext => ({
|
|
628
619
|
resourceDocs: context.resourceDocs,
|
|
629
|
-
resourceDocsEnabled: context.resourceDocsEnabled,
|
|
630
620
|
domains: context.domains as EntryLike[] | undefined,
|
|
631
621
|
services: context.services as EntryLike[] | undefined,
|
|
632
622
|
systems: context.systems as EntryLike[] | undefined,
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
shouldRenderSideBarSection,
|
|
42
42
|
withArchitectureDecisionsSection,
|
|
43
43
|
} from './builders/shared';
|
|
44
|
-
import { isArchitectureGraphEnabled, isChangelogEnabled
|
|
44
|
+
import { isArchitectureGraphEnabled, isChangelogEnabled } from '@utils/feature';
|
|
45
45
|
import { collectMessageIdsWithFieldUsage } from '@utils/collections/field-usage';
|
|
46
46
|
|
|
47
47
|
export type { NavigationData, NavNode, ChildRef };
|
|
@@ -335,7 +335,6 @@ export const getNestedSideBarData = async (): Promise<NavigationData> => {
|
|
|
335
335
|
const messages = [...allEvents, ...allCommands, ...allQueries];
|
|
336
336
|
|
|
337
337
|
const context = {
|
|
338
|
-
resourceDocsEnabled: isResourceDocsEnabled(),
|
|
339
338
|
agents,
|
|
340
339
|
services,
|
|
341
340
|
domains,
|
|
@@ -659,7 +658,6 @@ export const getNestedSideBarData = async (): Promise<NavigationData> => {
|
|
|
659
658
|
);
|
|
660
659
|
|
|
661
660
|
const dataProductContext = {
|
|
662
|
-
resourceDocsEnabled: isResourceDocsEnabled(),
|
|
663
661
|
events,
|
|
664
662
|
commands,
|
|
665
663
|
queries,
|
|
@@ -818,7 +816,7 @@ export const getNestedSideBarData = async (): Promise<NavigationData> => {
|
|
|
818
816
|
pages: [
|
|
819
817
|
{
|
|
820
818
|
type: 'item',
|
|
821
|
-
title: '
|
|
819
|
+
title: 'Diagram',
|
|
822
820
|
href: buildUrl(`/visualiser/${channel.collection}/${channel.data.id}/${channel.data.version}`),
|
|
823
821
|
},
|
|
824
822
|
],
|
|
@@ -879,7 +877,7 @@ export const getNestedSideBarData = async (): Promise<NavigationData> => {
|
|
|
879
877
|
? [
|
|
880
878
|
{
|
|
881
879
|
type: 'item' as const,
|
|
882
|
-
title: 'System Context
|
|
880
|
+
title: 'System Context Diagram',
|
|
883
881
|
href: buildUrl('/visualiser/system-context-map'),
|
|
884
882
|
},
|
|
885
883
|
]
|
|
@@ -1172,7 +1170,7 @@ export const getNestedSideBarData = async (): Promise<NavigationData> => {
|
|
|
1172
1170
|
pages: [
|
|
1173
1171
|
{
|
|
1174
1172
|
type: 'item',
|
|
1175
|
-
title: 'System Context
|
|
1173
|
+
title: 'System Context Diagram',
|
|
1176
1174
|
href: buildUrl('/visualiser/system-context-map'),
|
|
1177
1175
|
},
|
|
1178
1176
|
],
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
/* Default/Light theme */
|
|
15
15
|
:root,
|
|
16
|
-
:root[data-theme=
|
|
16
|
+
:root[data-theme='light'] {
|
|
17
17
|
/* Header */
|
|
18
18
|
--ec-header-bg: 255 255 255; /* #ffffff */
|
|
19
19
|
--ec-header-text: 15 23 42; /* #0f172a (slate-900) */
|
|
@@ -30,6 +30,9 @@
|
|
|
30
30
|
--ec-accent-text: 88 28 135; /* #581c87 (purple-900) */
|
|
31
31
|
--ec-accent-gradient-from: 126 34 206; /* #7e22ce (purple-700) */
|
|
32
32
|
--ec-accent-gradient-to: 88 28 135; /* #581c87 (purple-900) */
|
|
33
|
+
/* Resolved on :root for every theme, so the visualiser (which overrides
|
|
34
|
+
--ec-accent with its own palette) can still use the catalog's accent */
|
|
35
|
+
--ec-catalog-accent: var(--ec-accent);
|
|
33
36
|
|
|
34
37
|
/* Buttons */
|
|
35
38
|
--ec-button-bg: 15 23 42; /* #0f172a */
|
|
@@ -163,7 +166,7 @@
|
|
|
163
166
|
}
|
|
164
167
|
|
|
165
168
|
/* Dark theme */
|
|
166
|
-
:root[data-theme=
|
|
169
|
+
:root[data-theme='dark'] {
|
|
167
170
|
/*
|
|
168
171
|
* Modern dark theme inspired by Mintlify
|
|
169
172
|
* Uses deep blacks with subtle cool undertones for a refined look
|
|
@@ -178,13 +181,14 @@
|
|
|
178
181
|
--ec-primary: 147 51 234; /* #9333ea (purple-600) */
|
|
179
182
|
--ec-primary-hover: 126 34 206; /* #7e22ce (purple-700) */
|
|
180
183
|
|
|
181
|
-
/* Accent colors - used for selections, highlights, interactive elements
|
|
182
|
-
|
|
183
|
-
--ec-accent
|
|
184
|
+
/* Accent colors - used for selections, highlights, interactive elements.
|
|
185
|
+
A light shade, like the other themes use in dark mode, so accent text is readable on dark surfaces */
|
|
186
|
+
--ec-accent: 192 132 252; /* #c084fc (purple-400) */
|
|
187
|
+
--ec-accent-hover: 168 85 247; /* #a855f7 (purple-500) */
|
|
184
188
|
--ec-accent-subtle: 88 28 135 / 0.3; /* purple-900/30 */
|
|
185
|
-
--ec-accent-text:
|
|
186
|
-
--ec-accent-gradient-from:
|
|
187
|
-
--ec-accent-gradient-to:
|
|
189
|
+
--ec-accent-text: 216 180 254; /* #d8b4fe (purple-300) */
|
|
190
|
+
--ec-accent-gradient-from: 192 132 252; /* #c084fc (purple-400) */
|
|
191
|
+
--ec-accent-gradient-to: 168 85 247; /* #a855f7 (purple-500) */
|
|
188
192
|
|
|
189
193
|
/* Buttons - accent color for better visibility */
|
|
190
194
|
--ec-button-bg: 147 51 234; /* #9333ea - purple-600 */
|
|
@@ -317,7 +321,7 @@
|
|
|
317
321
|
}
|
|
318
322
|
|
|
319
323
|
/* Dark mode prose overrides for documentation content */
|
|
320
|
-
:root[data-theme=
|
|
324
|
+
:root[data-theme='dark'] .prose {
|
|
321
325
|
--tw-prose-body: rgb(139 148 158); /* #8b949e - muted body text */
|
|
322
326
|
--tw-prose-headings: rgb(201 209 217); /* #c9d1d9 - soft white headings */
|
|
323
327
|
--tw-prose-lead: rgb(110 118 129); /* #6e7681 */
|
|
@@ -341,44 +345,44 @@
|
|
|
341
345
|
* light-theme Tailwind colors. Keep that content readable without changing
|
|
342
346
|
* the appearance of other custom prose elements.
|
|
343
347
|
*/
|
|
344
|
-
:root[data-theme=
|
|
348
|
+
:root[data-theme='dark'] .prose .rounded-full.text-gray-900.border-gray-300 {
|
|
345
349
|
color: rgb(var(--ec-page-text));
|
|
346
350
|
border-color: rgb(var(--ec-page-border));
|
|
347
351
|
}
|
|
348
352
|
|
|
349
|
-
:root[data-theme=
|
|
353
|
+
:root[data-theme='dark'] .prose code {
|
|
350
354
|
background-color: rgb(33 38 45); /* #21262d */
|
|
351
355
|
border-radius: 0.25rem;
|
|
352
356
|
padding: 0.125rem 0.375rem;
|
|
353
357
|
}
|
|
354
358
|
|
|
355
|
-
:root[data-theme=
|
|
359
|
+
:root[data-theme='dark'] .prose pre {
|
|
356
360
|
background-color: rgb(22 27 34); /* #161b22 */
|
|
357
361
|
border: 1px solid rgb(33 38 45); /* #21262d */
|
|
358
362
|
}
|
|
359
363
|
|
|
360
|
-
:root[data-theme=
|
|
364
|
+
:root[data-theme='dark'] .prose a {
|
|
361
365
|
color: rgb(168 85 247); /* purple-500 */
|
|
362
366
|
}
|
|
363
367
|
|
|
364
|
-
:root[data-theme=
|
|
368
|
+
:root[data-theme='dark'] .prose a:hover {
|
|
365
369
|
color: rgb(192 132 252); /* purple-400 */
|
|
366
370
|
}
|
|
367
371
|
|
|
368
|
-
:root[data-theme=
|
|
372
|
+
:root[data-theme='dark'] .prose strong {
|
|
369
373
|
color: rgb(240 246 252); /* #f0f6fc */
|
|
370
374
|
}
|
|
371
375
|
|
|
372
|
-
:root[data-theme=
|
|
376
|
+
:root[data-theme='dark'] .prose table th {
|
|
373
377
|
color: rgb(240 246 252); /* #f0f6fc */
|
|
374
378
|
}
|
|
375
379
|
|
|
376
|
-
:root[data-theme=
|
|
380
|
+
:root[data-theme='dark'] .prose table td {
|
|
377
381
|
border-color: rgb(33 38 45); /* #21262d */
|
|
378
382
|
}
|
|
379
383
|
|
|
380
384
|
/* Invert dark SVG icons in dark mode so they stay visible */
|
|
381
|
-
:root[data-theme=
|
|
385
|
+
:root[data-theme='dark'] .ec-themed-icon {
|
|
382
386
|
filter: invert(1);
|
|
383
387
|
}
|
|
384
388
|
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
/* Forest Light Mode */
|
|
9
|
-
:root[data-catalog-theme=
|
|
10
|
-
:root[data-catalog-theme=
|
|
9
|
+
:root[data-catalog-theme='forest'],
|
|
10
|
+
:root[data-catalog-theme='forest'][data-theme='light'] {
|
|
11
11
|
/* Header - clean white */
|
|
12
12
|
--ec-header-bg: 255 255 255; /* #ffffff */
|
|
13
13
|
--ec-header-text: 20 20 20; /* #141414 */
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
/* Forest Dark Mode */
|
|
113
|
-
:root[data-catalog-theme=
|
|
113
|
+
:root[data-catalog-theme='forest'][data-theme='dark'] {
|
|
114
114
|
/* Header - deep forest dark */
|
|
115
115
|
--ec-header-bg: 3 7 18; /* #030712 gray-950 */
|
|
116
116
|
--ec-header-text: 243 244 246; /* #f3f4f6 gray-100 */
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
/* Forest theme prose overrides */
|
|
212
|
-
:root[data-catalog-theme=
|
|
212
|
+
:root[data-catalog-theme='forest'][data-theme='dark'] .prose {
|
|
213
213
|
--tw-prose-body: rgb(156 163 175); /* gray-400 */
|
|
214
214
|
--tw-prose-headings: rgb(243 244 246); /* gray-100 */
|
|
215
215
|
--tw-prose-lead: rgb(107 114 128); /* gray-500 */
|
|
@@ -228,19 +228,19 @@
|
|
|
228
228
|
--tw-prose-td-borders: rgb(31 41 55); /* gray-800 */
|
|
229
229
|
}
|
|
230
230
|
|
|
231
|
-
:root[data-catalog-theme=
|
|
231
|
+
:root[data-catalog-theme='forest'][data-theme='dark'] .prose code {
|
|
232
232
|
background-color: rgb(31 41 55); /* gray-800 */
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
:root[data-catalog-theme=
|
|
235
|
+
:root[data-catalog-theme='forest'][data-theme='dark'] .prose pre {
|
|
236
236
|
background-color: rgb(17 24 39); /* gray-900 */
|
|
237
237
|
border: 1px solid rgb(31 41 55); /* gray-800 */
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
:root[data-catalog-theme=
|
|
240
|
+
:root[data-catalog-theme='forest'][data-theme='dark'] .prose a {
|
|
241
241
|
color: rgb(74 222 128); /* green-400 */
|
|
242
242
|
}
|
|
243
243
|
|
|
244
|
-
:root[data-catalog-theme=
|
|
244
|
+
:root[data-catalog-theme='forest'][data-theme='dark'] .prose a:hover {
|
|
245
245
|
color: rgb(134 239 172); /* green-300 */
|
|
246
246
|
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
/* Ocean Light Mode */
|
|
9
|
-
:root[data-catalog-theme=
|
|
10
|
-
:root[data-catalog-theme=
|
|
9
|
+
:root[data-catalog-theme='ocean'],
|
|
10
|
+
:root[data-catalog-theme='ocean'][data-theme='light'] {
|
|
11
11
|
/* Header - light with subtle teal tint */
|
|
12
12
|
--ec-header-bg: 255 255 255; /* #ffffff */
|
|
13
13
|
--ec-header-text: 15 23 42; /* #0f172a */
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
/* Ocean Dark Mode */
|
|
113
|
-
:root[data-catalog-theme=
|
|
113
|
+
:root[data-catalog-theme='ocean'][data-theme='dark'] {
|
|
114
114
|
/*
|
|
115
115
|
* Unified dark background - all major surfaces share the same deep ocean color
|
|
116
116
|
* Creates a seamless, immersive dark experience
|
|
@@ -214,7 +214,7 @@
|
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
/* Ocean theme prose overrides */
|
|
217
|
-
:root[data-catalog-theme=
|
|
217
|
+
:root[data-catalog-theme='ocean'][data-theme='dark'] .prose {
|
|
218
218
|
--tw-prose-body: rgb(148 163 184); /* slate-400 */
|
|
219
219
|
--tw-prose-headings: rgb(226 232 240); /* slate-200 */
|
|
220
220
|
--tw-prose-lead: rgb(100 116 139); /* slate-500 */
|
|
@@ -233,19 +233,19 @@
|
|
|
233
233
|
--tw-prose-td-borders: rgb(30 41 59); /* slate-800 */
|
|
234
234
|
}
|
|
235
235
|
|
|
236
|
-
:root[data-catalog-theme=
|
|
236
|
+
:root[data-catalog-theme='ocean'][data-theme='dark'] .prose code {
|
|
237
237
|
background-color: rgb(30 41 59); /* slate-800 */
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
:root[data-catalog-theme=
|
|
240
|
+
:root[data-catalog-theme='ocean'][data-theme='dark'] .prose pre {
|
|
241
241
|
background-color: rgb(15 23 42); /* slate-900 */
|
|
242
242
|
border: 1px solid rgb(30 41 59); /* slate-800 */
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
:root[data-catalog-theme=
|
|
245
|
+
:root[data-catalog-theme='ocean'][data-theme='dark'] .prose a {
|
|
246
246
|
color: rgb(45 212 191); /* teal-400 */
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
-
:root[data-catalog-theme=
|
|
249
|
+
:root[data-catalog-theme='ocean'][data-theme='dark'] .prose a:hover {
|
|
250
250
|
color: rgb(94 234 212); /* teal-300 */
|
|
251
251
|
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
/* Sapphire Light Mode */
|
|
9
|
-
:root[data-catalog-theme=
|
|
10
|
-
:root[data-catalog-theme=
|
|
9
|
+
:root[data-catalog-theme='sapphire'],
|
|
10
|
+
:root[data-catalog-theme='sapphire'][data-theme='light'] {
|
|
11
11
|
/* Header - clean white with subtle blue tint */
|
|
12
12
|
--ec-header-bg: 255 255 255; /* #ffffff */
|
|
13
13
|
--ec-header-text: 15 23 42; /* #0f172a */
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
/* Sapphire Dark Mode */
|
|
113
|
-
:root[data-catalog-theme=
|
|
113
|
+
:root[data-catalog-theme='sapphire'][data-theme='dark'] {
|
|
114
114
|
/* Header - matches page bg for unified look */
|
|
115
115
|
--ec-header-bg: 2 6 23; /* #020617 slate-950 - matches page bg */
|
|
116
116
|
--ec-header-text: 226 232 240; /* #e2e8f0 */
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
/* Sapphire theme prose overrides */
|
|
212
|
-
:root[data-catalog-theme=
|
|
212
|
+
:root[data-catalog-theme='sapphire'][data-theme='dark'] .prose {
|
|
213
213
|
--tw-prose-body: rgb(148 163 184); /* slate-400 */
|
|
214
214
|
--tw-prose-headings: rgb(226 232 240); /* slate-200 */
|
|
215
215
|
--tw-prose-lead: rgb(100 116 139); /* slate-500 */
|
|
@@ -228,19 +228,19 @@
|
|
|
228
228
|
--tw-prose-td-borders: rgb(30 41 59); /* slate-800 */
|
|
229
229
|
}
|
|
230
230
|
|
|
231
|
-
:root[data-catalog-theme=
|
|
231
|
+
:root[data-catalog-theme='sapphire'][data-theme='dark'] .prose code {
|
|
232
232
|
background-color: rgb(30 41 59); /* slate-800 */
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
:root[data-catalog-theme=
|
|
235
|
+
:root[data-catalog-theme='sapphire'][data-theme='dark'] .prose pre {
|
|
236
236
|
background-color: rgb(15 23 42); /* slate-900 */
|
|
237
237
|
border: 1px solid rgb(30 41 59); /* slate-800 */
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
:root[data-catalog-theme=
|
|
240
|
+
:root[data-catalog-theme='sapphire'][data-theme='dark'] .prose a {
|
|
241
241
|
color: rgb(96 165 250); /* blue-400 */
|
|
242
242
|
}
|
|
243
243
|
|
|
244
|
-
:root[data-catalog-theme=
|
|
244
|
+
:root[data-catalog-theme='sapphire'][data-theme='dark'] .prose a:hover {
|
|
245
245
|
color: rgb(147 197 253); /* blue-300 */
|
|
246
246
|
}
|