@eventcatalog/core 3.0.0 → 3.2.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/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-VO5WYA44.js → chunk-AA47DJ43.js} +1 -1
- package/dist/{chunk-EKGR533N.js → chunk-GGRXP5WM.js} +1 -1
- package/dist/{chunk-E5Q7TZYT.js → chunk-L3QRQT7U.js} +1 -1
- package/dist/{chunk-BYP43AAT.js → chunk-RWYEP5SD.js} +1 -1
- package/dist/{chunk-KF5PARQK.js → chunk-VPQCMMRM.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog.cjs +1 -1
- package/dist/eventcatalog.config.d.cts +7 -0
- package/dist/eventcatalog.config.d.ts +7 -0
- 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/src/components/ChatPanel/ChatPanel.tsx +520 -247
- package/eventcatalog/src/components/ChatPanel/ChatPanelButton.tsx +3 -3
- 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 +72 -60
- package/eventcatalog/src/components/Grids/MessageGrid.tsx +68 -48
- package/eventcatalog/src/components/Header.astro +15 -10
- 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 +14 -12
- 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 +3 -3
- package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +3 -3
- 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 +6 -4
- package/eventcatalog/src/components/SchemaExplorer/ProducersConsumersSection.tsx +17 -13
- package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +35 -8
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsHeader.tsx +33 -21
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsPanel.tsx +1 -1
- package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +41 -33
- package/eventcatalog/src/components/SchemaExplorer/SchemaListItem.tsx +19 -7
- package/eventcatalog/src/components/SchemaExplorer/SchemaViewerModal.tsx +8 -8
- package/eventcatalog/src/components/Search/Search.astro +3 -3
- package/eventcatalog/src/components/Search/SearchModal.tsx +65 -36
- package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +31 -21
- package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +92 -59
- package/eventcatalog/src/components/Tables/Table.tsx +25 -24
- package/eventcatalog/src/components/Tables/columns/ContainersTableColumns.tsx +22 -16
- package/eventcatalog/src/components/Tables/columns/DomainTableColumns.tsx +14 -11
- package/eventcatalog/src/components/Tables/columns/FlowTableColumns.tsx +6 -6
- package/eventcatalog/src/components/Tables/columns/MessageTableColumns.tsx +22 -16
- package/eventcatalog/src/components/Tables/columns/ServiceTableColumns.tsx +22 -16
- package/eventcatalog/src/components/Tables/columns/SharedColumns.tsx +4 -4
- package/eventcatalog/src/components/Tables/columns/TeamsTableColumns.tsx +21 -13
- package/eventcatalog/src/components/Tables/columns/UserTableColumns.tsx +30 -19
- package/eventcatalog/src/components/ThemeToggle.tsx +18 -0
- package/eventcatalog/src/enterprise/ai/chat-api.ts +24 -3
- 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 +6 -6
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +62 -14
- package/eventcatalog/src/pages/_index.astro +135 -179
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +2 -2
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +4 -4
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +77 -63
- package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +23 -24
- package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +66 -50
- package/eventcatalog/src/pages/docs/custom/index.astro +2 -2
- package/eventcatalog/src/pages/docs/teams/[id]/index.astro +25 -21
- package/eventcatalog/src/pages/docs/users/[id]/index.astro +25 -21
- package/eventcatalog/src/pages/schemas/explorer/index.astro +1 -1
- package/eventcatalog/src/pages/studio.astro +59 -31
- package/eventcatalog/src/remark-plugins/directives.ts +6 -6
- package/eventcatalog/src/remark-plugins/mermaid.ts +2 -2
- 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/feature.ts +4 -0
- package/eventcatalog/tailwind.config.mjs +6 -3
- package/package.json +7 -6
|
@@ -17,47 +17,51 @@ export default function ProducersConsumersSection({ message, isExpanded, onToggl
|
|
|
17
17
|
if (totalCount === 0) return null;
|
|
18
18
|
|
|
19
19
|
return (
|
|
20
|
-
<div className="flex-shrink-0 border-b border-
|
|
20
|
+
<div className="flex-shrink-0 border-b border-[rgb(var(--ec-page-border))]">
|
|
21
21
|
<button
|
|
22
22
|
onClick={onToggle}
|
|
23
|
-
className="w-full flex items-center justify-between px-4 py-1.5 text-left hover:bg-
|
|
23
|
+
className="w-full flex items-center justify-between px-4 py-1.5 text-left hover:bg-[rgb(var(--ec-content-hover))] transition-colors"
|
|
24
24
|
>
|
|
25
25
|
<div className="flex items-center gap-2">
|
|
26
26
|
<svg
|
|
27
27
|
xmlns="http://www.w3.org/2000/svg"
|
|
28
|
-
className="h-4 w-4 text-
|
|
28
|
+
className="h-4 w-4 text-[rgb(var(--ec-page-text-muted))]"
|
|
29
29
|
fill="none"
|
|
30
30
|
viewBox="0 0 24 24"
|
|
31
31
|
stroke="currentColor"
|
|
32
32
|
>
|
|
33
33
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
|
|
34
34
|
</svg>
|
|
35
|
-
<span className="text-xs font-semibold text-
|
|
36
|
-
<span className="inline-flex items-center rounded-full bg-
|
|
35
|
+
<span className="text-xs font-semibold text-[rgb(var(--ec-page-text))]">Producers & Consumers</span>
|
|
36
|
+
<span className="inline-flex items-center rounded-full bg-[rgb(var(--ec-content-hover))] px-2 py-0.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))]">
|
|
37
37
|
{totalCount} services
|
|
38
38
|
</span>
|
|
39
39
|
</div>
|
|
40
|
-
{isExpanded ?
|
|
40
|
+
{isExpanded ? (
|
|
41
|
+
<ChevronUpIcon className="h-4 w-4 text-[rgb(var(--ec-page-text-muted))]" />
|
|
42
|
+
) : (
|
|
43
|
+
<ChevronDownIcon className="h-4 w-4 text-[rgb(var(--ec-page-text-muted))]" />
|
|
44
|
+
)}
|
|
41
45
|
</button>
|
|
42
46
|
|
|
43
47
|
{isExpanded && (
|
|
44
|
-
<div className="px-4 pb-2 bg-
|
|
48
|
+
<div className="px-4 pb-2 bg-[rgb(var(--ec-content-hover))]">
|
|
45
49
|
{producers.length > 0 && (
|
|
46
50
|
<div className="mb-3">
|
|
47
|
-
<h4 className="text-xs font-semibold text-
|
|
51
|
+
<h4 className="text-xs font-semibold text-[rgb(var(--ec-page-text))] mb-2">Producers ({producers.length})</h4>
|
|
48
52
|
<div className="flex flex-wrap gap-2">
|
|
49
53
|
{producers.map((producer: Producer, idx: number) => (
|
|
50
54
|
<a
|
|
51
55
|
key={`${producer.id}-${idx}`}
|
|
52
56
|
href={buildUrl(`/docs/services/${producer.id}/${producer.version}`)}
|
|
53
|
-
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-
|
|
57
|
+
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-sm transition-all"
|
|
54
58
|
title={`View ${producer.id}`}
|
|
55
59
|
>
|
|
56
60
|
<div className="flex items-center justify-center w-5 h-5 bg-gradient-to-b from-pink-500 to-pink-600 rounded-full">
|
|
57
61
|
<ServerIcon className="h-3 w-3 text-white" />
|
|
58
62
|
</div>
|
|
59
63
|
<span className="font-medium">{producer.id}</span>
|
|
60
|
-
<span className="text-
|
|
64
|
+
<span className="text-[rgb(var(--ec-page-text-muted))] text-[11px]">v{producer.version}</span>
|
|
61
65
|
</a>
|
|
62
66
|
))}
|
|
63
67
|
</div>
|
|
@@ -65,20 +69,20 @@ export default function ProducersConsumersSection({ message, isExpanded, onToggl
|
|
|
65
69
|
)}
|
|
66
70
|
{consumers.length > 0 && (
|
|
67
71
|
<div>
|
|
68
|
-
<h4 className="text-xs font-semibold text-
|
|
72
|
+
<h4 className="text-xs font-semibold text-[rgb(var(--ec-page-text))] mb-2">Consumers ({consumers.length})</h4>
|
|
69
73
|
<div className="flex flex-wrap gap-2">
|
|
70
74
|
{consumers.map((consumer: Consumer, idx: number) => (
|
|
71
75
|
<a
|
|
72
76
|
key={`${consumer.id}-${idx}`}
|
|
73
77
|
href={buildUrl(`/docs/services/${consumer.id}/${consumer.version}`)}
|
|
74
|
-
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-
|
|
78
|
+
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-sm transition-all"
|
|
75
79
|
title={`View ${consumer.id}`}
|
|
76
80
|
>
|
|
77
81
|
<div className="flex items-center justify-center w-5 h-5 bg-gradient-to-b from-pink-500 to-pink-600 rounded-full">
|
|
78
82
|
<ServerIcon className="h-3 w-3 text-white" />
|
|
79
83
|
</div>
|
|
80
84
|
<span className="font-medium">{consumer.id}</span>
|
|
81
|
-
<span className="text-
|
|
85
|
+
<span className="text-[rgb(var(--ec-page-text-muted))] text-[11px]">v{consumer.version}</span>
|
|
82
86
|
</a>
|
|
83
87
|
))}
|
|
84
88
|
</div>
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { ClipboardDocumentIcon, ArrowsPointingOutIcon } from '@heroicons/react/24/outline';
|
|
2
2
|
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
|
|
3
|
-
import {
|
|
3
|
+
import { oneDark } from 'react-syntax-highlighter/dist/cjs/styles/prism';
|
|
4
|
+
import { oneLight } from 'react-syntax-highlighter/dist/cjs/styles/prism';
|
|
4
5
|
import { buildUrl } from '@utils/url-builder';
|
|
5
6
|
import JSONSchemaViewer from './JSONSchemaViewer';
|
|
6
7
|
import AvroSchemaViewer from './AvroSchemaViewer';
|
|
7
8
|
import { getLanguageForHighlight } from './utils';
|
|
8
9
|
import type { SchemaItem } from './types';
|
|
10
|
+
import { useState, useEffect } from 'react';
|
|
9
11
|
|
|
10
12
|
interface SchemaContentViewerProps {
|
|
11
13
|
message: SchemaItem;
|
|
@@ -28,9 +30,34 @@ export default function SchemaContentViewer({
|
|
|
28
30
|
showRequired = false,
|
|
29
31
|
onOpenFullscreen,
|
|
30
32
|
}: SchemaContentViewerProps) {
|
|
33
|
+
const [isDarkMode, setIsDarkMode] = useState(false);
|
|
34
|
+
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
// Check initial theme
|
|
37
|
+
const checkTheme = () => {
|
|
38
|
+
const theme = document.documentElement.getAttribute('data-theme');
|
|
39
|
+
setIsDarkMode(theme === 'dark');
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
checkTheme();
|
|
43
|
+
|
|
44
|
+
// Watch for theme changes
|
|
45
|
+
const observer = new MutationObserver((mutations) => {
|
|
46
|
+
mutations.forEach((mutation) => {
|
|
47
|
+
if (mutation.attributeName === 'data-theme') {
|
|
48
|
+
checkTheme();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
observer.observe(document.documentElement, { attributes: true });
|
|
54
|
+
|
|
55
|
+
return () => observer.disconnect();
|
|
56
|
+
}, []);
|
|
57
|
+
|
|
31
58
|
if (!message.schemaContent) {
|
|
32
59
|
return (
|
|
33
|
-
<div className="flex items-center justify-center h-full text-
|
|
60
|
+
<div className="flex items-center justify-center h-full text-[rgb(var(--ec-page-text-muted))]">
|
|
34
61
|
<p className="text-sm">No schema content available</p>
|
|
35
62
|
</div>
|
|
36
63
|
);
|
|
@@ -47,7 +74,7 @@ export default function SchemaContentViewer({
|
|
|
47
74
|
}
|
|
48
75
|
|
|
49
76
|
return (
|
|
50
|
-
<div className="h-full overflow-auto p-3 relative bg-
|
|
77
|
+
<div className="h-full overflow-auto p-3 relative bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg">
|
|
51
78
|
<div className="absolute top-5 right-5 z-10 flex items-center gap-2">
|
|
52
79
|
{message.collection === 'services' &&
|
|
53
80
|
(() => {
|
|
@@ -67,7 +94,7 @@ export default function SchemaContentViewer({
|
|
|
67
94
|
return (
|
|
68
95
|
<a
|
|
69
96
|
href={specUrl}
|
|
70
|
-
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-
|
|
97
|
+
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 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))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-sm"
|
|
71
98
|
title="View full specification"
|
|
72
99
|
>
|
|
73
100
|
<svg
|
|
@@ -91,7 +118,7 @@ export default function SchemaContentViewer({
|
|
|
91
118
|
{onOpenFullscreen && (
|
|
92
119
|
<button
|
|
93
120
|
onClick={onOpenFullscreen}
|
|
94
|
-
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-
|
|
121
|
+
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 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))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-sm"
|
|
95
122
|
title="Open in fullscreen"
|
|
96
123
|
>
|
|
97
124
|
<ArrowsPointingOutIcon className="h-3.5 w-3.5" />
|
|
@@ -100,7 +127,7 @@ export default function SchemaContentViewer({
|
|
|
100
127
|
)}
|
|
101
128
|
<button
|
|
102
129
|
onClick={onCopy}
|
|
103
|
-
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-
|
|
130
|
+
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 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))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-sm"
|
|
104
131
|
title="Copy code"
|
|
105
132
|
>
|
|
106
133
|
<ClipboardDocumentIcon className="h-3.5 w-3.5" />
|
|
@@ -109,7 +136,7 @@ export default function SchemaContentViewer({
|
|
|
109
136
|
</div>
|
|
110
137
|
<SyntaxHighlighter
|
|
111
138
|
language={getLanguageForHighlight(message.schemaExtension)}
|
|
112
|
-
style={
|
|
139
|
+
style={isDarkMode ? oneDark : oneLight}
|
|
113
140
|
customStyle={{
|
|
114
141
|
margin: 0,
|
|
115
142
|
padding: '0.75rem',
|
|
@@ -119,8 +146,8 @@ export default function SchemaContentViewer({
|
|
|
119
146
|
lineHeight: '1.5',
|
|
120
147
|
height: '100%',
|
|
121
148
|
overflow: 'auto',
|
|
149
|
+
background: 'rgb(var(--ec-code-bg))',
|
|
122
150
|
}}
|
|
123
|
-
className="bg-white border border-gray-200 rounded-lg"
|
|
124
151
|
showLineNumbers={true}
|
|
125
152
|
wrapLines={true}
|
|
126
153
|
wrapLongLines={true}
|
|
@@ -50,7 +50,7 @@ export default function SchemaDetailsHeader({
|
|
|
50
50
|
const iconName = ext === 'json' ? 'json-schema' : ext;
|
|
51
51
|
|
|
52
52
|
return (
|
|
53
|
-
<div className="flex-shrink-0 border-b border-
|
|
53
|
+
<div className="flex-shrink-0 border-b border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))]">
|
|
54
54
|
{/* Main Header */}
|
|
55
55
|
<div className="px-4 py-3">
|
|
56
56
|
<div className="flex items-start justify-between gap-4">
|
|
@@ -58,19 +58,19 @@ export default function SchemaDetailsHeader({
|
|
|
58
58
|
{/* Title Row */}
|
|
59
59
|
<div className="flex items-start gap-3">
|
|
60
60
|
<div
|
|
61
|
-
className={`flex-shrink-0 flex items-center justify-center w-9 h-9 rounded-lg bg-${color}-50 border border-${color}-100 mt-0.5`}
|
|
61
|
+
className={`flex-shrink-0 flex items-center justify-center w-9 h-9 rounded-lg bg-${color}-50 dark:bg-${color}-500/10 border border-${color}-100 dark:border-${color}-500/30 mt-0.5`}
|
|
62
62
|
>
|
|
63
|
-
<Icon className={`h-4.5 w-4.5 text-${color}-600`} />
|
|
63
|
+
<Icon className={`h-4.5 w-4.5 text-${color}-600 dark:text-${color}-400`} />
|
|
64
64
|
</div>
|
|
65
65
|
<div className="min-w-0 flex-1">
|
|
66
66
|
<div className="flex items-center gap-2">
|
|
67
|
-
<h2 className="text-base font-semibold text-
|
|
67
|
+
<h2 className="text-base font-semibold text-[rgb(var(--ec-page-text))] truncate">{message.data.name}</h2>
|
|
68
68
|
{hasMultipleVersions ? (
|
|
69
69
|
<div className="relative flex-shrink-0">
|
|
70
70
|
<select
|
|
71
71
|
value={selectedVersion || message.data.version}
|
|
72
72
|
onChange={(e) => onVersionChange(e.target.value)}
|
|
73
|
-
className="appearance-none text-xs font-medium text-
|
|
73
|
+
className="appearance-none text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] border border-[rgb(var(--ec-page-border))] rounded-md pl-2.5 pr-7 py-1 focus:outline-none focus:ring-1 focus:ring-[rgb(var(--ec-accent))] focus:border-[rgb(var(--ec-accent))] cursor-pointer hover:bg-[rgb(var(--ec-input-bg))] transition-colors"
|
|
74
74
|
>
|
|
75
75
|
{availableVersions.map((v) => (
|
|
76
76
|
<option key={v.data.version} value={v.data.version}>
|
|
@@ -78,10 +78,10 @@ export default function SchemaDetailsHeader({
|
|
|
78
78
|
</option>
|
|
79
79
|
))}
|
|
80
80
|
</select>
|
|
81
|
-
<ClockIcon className="absolute right-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-
|
|
81
|
+
<ClockIcon className="absolute right-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-[rgb(var(--ec-icon-color))] pointer-events-none" />
|
|
82
82
|
</div>
|
|
83
83
|
) : (
|
|
84
|
-
<span className="text-xs text-
|
|
84
|
+
<span className="text-xs text-[rgb(var(--ec-page-text-muted))] flex-shrink-0 font-medium bg-[rgb(var(--ec-content-hover))] px-2 py-1 rounded-md border border-[rgb(var(--ec-page-border))]">
|
|
85
85
|
v{message.data.version}
|
|
86
86
|
</span>
|
|
87
87
|
)}
|
|
@@ -89,11 +89,11 @@ export default function SchemaDetailsHeader({
|
|
|
89
89
|
{/* Tags */}
|
|
90
90
|
<div className="flex items-center gap-1.5 mt-1">
|
|
91
91
|
<span
|
|
92
|
-
className={`inline-flex items-center px-1.5 py-0.5 rounded text-[11px] font-medium bg-${color}-50 text-${color}-700 border border-${color}-100`}
|
|
92
|
+
className={`inline-flex items-center px-1.5 py-0.5 rounded text-[11px] font-medium bg-${color}-50 dark:bg-${color}-500/10 text-${color}-700 dark:text-${color}-400 border border-${color}-100 dark:border-${color}-500/30`}
|
|
93
93
|
>
|
|
94
94
|
{message.collection}
|
|
95
95
|
</span>
|
|
96
|
-
<span className="inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] font-medium bg-
|
|
96
|
+
<span className="inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] font-medium bg-[rgb(var(--ec-content-hover))] text-[rgb(var(--ec-page-text-muted))] border border-[rgb(var(--ec-page-border))]">
|
|
97
97
|
{hasSchemaIcon && (
|
|
98
98
|
<img src={buildUrl(`/icons/${iconName}.svg`, true)} alt={`${ext} icon`} className="h-3 w-3 opacity-70" />
|
|
99
99
|
)}
|
|
@@ -101,7 +101,9 @@ export default function SchemaDetailsHeader({
|
|
|
101
101
|
</span>
|
|
102
102
|
</div>
|
|
103
103
|
{/* Summary */}
|
|
104
|
-
{message.data.summary &&
|
|
104
|
+
{message.data.summary && (
|
|
105
|
+
<p className="text-xs text-[rgb(var(--ec-page-text-muted))] mt-1.5 line-clamp-1">{message.data.summary}</p>
|
|
106
|
+
)}
|
|
105
107
|
</div>
|
|
106
108
|
</div>
|
|
107
109
|
</div>
|
|
@@ -109,7 +111,7 @@ export default function SchemaDetailsHeader({
|
|
|
109
111
|
{/* View Docs Button */}
|
|
110
112
|
<a
|
|
111
113
|
href={buildUrl(`/docs/${message.collection}/${message.data.id}/${message.data.version}`)}
|
|
112
|
-
className="flex-shrink-0 inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-
|
|
114
|
+
className="flex-shrink-0 inline-flex items-center gap-1.5 px-2.5 py-1.5 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 hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] transition-colors"
|
|
113
115
|
>
|
|
114
116
|
View docs
|
|
115
117
|
<ArrowTopRightOnSquareIcon className="h-3.5 w-3.5" />
|
|
@@ -118,13 +120,15 @@ export default function SchemaDetailsHeader({
|
|
|
118
120
|
</div>
|
|
119
121
|
|
|
120
122
|
{/* Action Bar */}
|
|
121
|
-
<div className="px-4 py-2 bg-
|
|
123
|
+
<div className="px-4 py-2 bg-[rgb(var(--ec-content-hover))] border-t border-[rgb(var(--ec-page-border))] flex items-center justify-between">
|
|
122
124
|
{/* View Mode Toggle */}
|
|
123
|
-
<div className="flex items-center gap-0.5 p-0.5 bg-
|
|
125
|
+
<div className="flex items-center gap-0.5 p-0.5 bg-[rgb(var(--ec-input-bg))] border border-[rgb(var(--ec-page-border))] rounded-md">
|
|
124
126
|
<button
|
|
125
127
|
onClick={() => onViewModeChange('code')}
|
|
126
128
|
className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
|
|
127
|
-
schemaViewMode === 'code'
|
|
129
|
+
schemaViewMode === 'code'
|
|
130
|
+
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-sm'
|
|
131
|
+
: 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
|
|
128
132
|
}`}
|
|
129
133
|
title="View raw code"
|
|
130
134
|
>
|
|
@@ -135,7 +139,9 @@ export default function SchemaDetailsHeader({
|
|
|
135
139
|
<button
|
|
136
140
|
onClick={() => onViewModeChange('schema')}
|
|
137
141
|
className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
|
|
138
|
-
schemaViewMode === 'schema'
|
|
142
|
+
schemaViewMode === 'schema'
|
|
143
|
+
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-sm'
|
|
144
|
+
: 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
|
|
139
145
|
}`}
|
|
140
146
|
title="View as schema"
|
|
141
147
|
>
|
|
@@ -147,7 +153,9 @@ export default function SchemaDetailsHeader({
|
|
|
147
153
|
<button
|
|
148
154
|
onClick={() => onViewModeChange('diff')}
|
|
149
155
|
className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
|
|
150
|
-
schemaViewMode === 'diff'
|
|
156
|
+
schemaViewMode === 'diff'
|
|
157
|
+
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-sm'
|
|
158
|
+
: 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
|
|
151
159
|
}`}
|
|
152
160
|
title="View version diffs"
|
|
153
161
|
>
|
|
@@ -155,7 +163,9 @@ export default function SchemaDetailsHeader({
|
|
|
155
163
|
History
|
|
156
164
|
<span
|
|
157
165
|
className={`ml-0.5 px-1 py-0.5 rounded text-[10px] tabular-nums ${
|
|
158
|
-
schemaViewMode === 'diff'
|
|
166
|
+
schemaViewMode === 'diff'
|
|
167
|
+
? 'bg-[rgb(var(--ec-content-hover))] text-[rgb(var(--ec-page-text-muted))]'
|
|
168
|
+
: 'bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-icon-color))]'
|
|
159
169
|
}`}
|
|
160
170
|
>
|
|
161
171
|
{diffCount}
|
|
@@ -165,7 +175,9 @@ export default function SchemaDetailsHeader({
|
|
|
165
175
|
<button
|
|
166
176
|
onClick={() => onViewModeChange('api')}
|
|
167
177
|
className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
|
|
168
|
-
schemaViewMode === 'api'
|
|
178
|
+
schemaViewMode === 'api'
|
|
179
|
+
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-sm'
|
|
180
|
+
: 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
|
|
169
181
|
}`}
|
|
170
182
|
title="API access"
|
|
171
183
|
>
|
|
@@ -180,8 +192,8 @@ export default function SchemaDetailsHeader({
|
|
|
180
192
|
onClick={onCopy}
|
|
181
193
|
className={`inline-flex items-center gap-1 px-2 py-1 text-xs font-medium rounded-md transition-all ${
|
|
182
194
|
isCopied
|
|
183
|
-
? 'bg-green-50 text-green-600 border border-green-200'
|
|
184
|
-
: 'text-
|
|
195
|
+
? 'bg-green-50 dark:bg-green-500/10 text-green-600 dark:text-green-400 border border-green-200 dark:border-green-500/30'
|
|
196
|
+
: 'text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))]'
|
|
185
197
|
}`}
|
|
186
198
|
title="Copy schema to clipboard"
|
|
187
199
|
>
|
|
@@ -199,7 +211,7 @@ export default function SchemaDetailsHeader({
|
|
|
199
211
|
</button>
|
|
200
212
|
<button
|
|
201
213
|
onClick={onDownload}
|
|
202
|
-
className="inline-flex items-center gap-1 px-2 py-1 text-xs font-medium text-
|
|
214
|
+
className="inline-flex items-center gap-1 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 hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] transition-all"
|
|
203
215
|
title="Download schema file"
|
|
204
216
|
>
|
|
205
217
|
<ArrowDownTrayIcon className="h-3.5 w-3.5" />
|
|
@@ -142,7 +142,7 @@ export default function SchemaDetailsPanel({
|
|
|
142
142
|
const isCopied = copiedId === message.data.id;
|
|
143
143
|
|
|
144
144
|
return (
|
|
145
|
-
<div className="h-full flex flex-col bg-
|
|
145
|
+
<div className="h-full flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] overflow-hidden">
|
|
146
146
|
{/* Header */}
|
|
147
147
|
<SchemaDetailsHeader
|
|
148
148
|
message={message}
|
|
@@ -351,14 +351,14 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
351
351
|
{/* Split View - Full Height */}
|
|
352
352
|
<div className="flex-1 flex gap-4 overflow-hidden">
|
|
353
353
|
{/* Left: Schema List */}
|
|
354
|
-
<div className="w-[320px] flex-shrink-0 flex flex-col bg-
|
|
354
|
+
<div className="w-[320px] flex-shrink-0 flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg overflow-hidden shadow-sm">
|
|
355
355
|
{/* Search Header */}
|
|
356
|
-
<div className="flex-shrink-0 p-3 border-b border-
|
|
356
|
+
<div className="flex-shrink-0 p-3 border-b border-[rgb(var(--ec-page-border))]">
|
|
357
357
|
{/* Search + Format Filter Row */}
|
|
358
358
|
<div className="flex items-center gap-2">
|
|
359
359
|
<div className="relative flex-1">
|
|
360
360
|
<div className="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3">
|
|
361
|
-
<MagnifyingGlassIcon className="h-4 w-4 text-
|
|
361
|
+
<MagnifyingGlassIcon className="h-4 w-4 text-[rgb(var(--ec-icon-color))]" />
|
|
362
362
|
</div>
|
|
363
363
|
<input
|
|
364
364
|
ref={searchInputRef}
|
|
@@ -366,11 +366,11 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
366
366
|
placeholder="Search schemas..."
|
|
367
367
|
value={searchQuery}
|
|
368
368
|
onChange={(e) => setSearchQuery(e.target.value)}
|
|
369
|
-
className="w-full rounded-md border border-
|
|
369
|
+
className="w-full rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-input-bg))] py-2 pl-9 pr-8 text-sm text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:border-[rgb(var(--ec-accent))] focus:outline-none focus:ring-1 focus:ring-[rgb(var(--ec-accent)/0.3)] transition-all"
|
|
370
370
|
/>
|
|
371
371
|
{searchQuery && (
|
|
372
372
|
<button onClick={() => setSearchQuery('')} className="absolute inset-y-0 right-0 flex items-center pr-2.5">
|
|
373
|
-
<XMarkIcon className="h-4 w-4 text-
|
|
373
|
+
<XMarkIcon className="h-4 w-4 text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-page-text))]" />
|
|
374
374
|
</button>
|
|
375
375
|
)}
|
|
376
376
|
</div>
|
|
@@ -379,7 +379,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
379
379
|
<select
|
|
380
380
|
value={selectedSchemaType}
|
|
381
381
|
onChange={(e) => setSelectedSchemaType(e.target.value)}
|
|
382
|
-
className="flex-shrink-0 text-xs font-medium text-
|
|
382
|
+
className="flex-shrink-0 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-input-bg))] border border-[rgb(var(--ec-page-border))] rounded-md px-2 py-2 focus:outline-none focus:ring-1 focus:ring-[rgb(var(--ec-accent)/0.3)] focus:border-[rgb(var(--ec-accent))] cursor-pointer hover:bg-[rgb(var(--ec-content-hover))] transition-colors"
|
|
383
383
|
>
|
|
384
384
|
<option value="all">All formats</option>
|
|
385
385
|
{schemaTypes.map((type) => {
|
|
@@ -408,14 +408,16 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
408
408
|
onClick={() => toggleType('events')}
|
|
409
409
|
className={`inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-all border ${
|
|
410
410
|
selectedTypes.has('events')
|
|
411
|
-
? 'bg-orange-50 text-orange-700 border-orange-200'
|
|
412
|
-
: 'text-
|
|
411
|
+
? 'bg-orange-50 dark:bg-orange-500/10 text-orange-700 dark:text-orange-300 border-orange-200 dark:border-orange-500/30'
|
|
412
|
+
: 'text-[rgb(var(--ec-page-text-muted))] border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))]'
|
|
413
413
|
}`}
|
|
414
414
|
title="Events"
|
|
415
415
|
>
|
|
416
416
|
<BoltIcon className={`h-3.5 w-3.5 ${selectedTypes.has('events') ? 'text-orange-500' : 'text-orange-400'}`} />
|
|
417
417
|
<span>Events</span>
|
|
418
|
-
<span
|
|
418
|
+
<span
|
|
419
|
+
className={`tabular-nums ${selectedTypes.has('events') ? 'text-orange-500' : 'text-[rgb(var(--ec-icon-color))]'}`}
|
|
420
|
+
>
|
|
419
421
|
{stats.events}
|
|
420
422
|
</span>
|
|
421
423
|
</button>
|
|
@@ -425,8 +427,8 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
425
427
|
onClick={() => toggleType('commands')}
|
|
426
428
|
className={`inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-all border ${
|
|
427
429
|
selectedTypes.has('commands')
|
|
428
|
-
? 'bg-blue-50 text-blue-700 border-blue-200'
|
|
429
|
-
: 'text-
|
|
430
|
+
? 'bg-blue-50 dark:bg-blue-500/10 text-blue-700 dark:text-blue-300 border-blue-200 dark:border-blue-500/30'
|
|
431
|
+
: 'text-[rgb(var(--ec-page-text-muted))] border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))]'
|
|
430
432
|
}`}
|
|
431
433
|
title="Commands"
|
|
432
434
|
>
|
|
@@ -434,7 +436,9 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
434
436
|
className={`h-3.5 w-3.5 ${selectedTypes.has('commands') ? 'text-blue-500' : 'text-blue-400'}`}
|
|
435
437
|
/>
|
|
436
438
|
<span>Commands</span>
|
|
437
|
-
<span
|
|
439
|
+
<span
|
|
440
|
+
className={`tabular-nums ${selectedTypes.has('commands') ? 'text-blue-500' : 'text-[rgb(var(--ec-icon-color))]'}`}
|
|
441
|
+
>
|
|
438
442
|
{stats.commands}
|
|
439
443
|
</span>
|
|
440
444
|
</button>
|
|
@@ -444,8 +448,8 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
444
448
|
onClick={() => toggleType('queries')}
|
|
445
449
|
className={`inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-all border ${
|
|
446
450
|
selectedTypes.has('queries')
|
|
447
|
-
? 'bg-green-50 text-green-700 border-green-200'
|
|
448
|
-
: 'text-
|
|
451
|
+
? 'bg-green-50 dark:bg-green-500/10 text-green-700 dark:text-green-300 border-green-200 dark:border-green-500/30'
|
|
452
|
+
: 'text-[rgb(var(--ec-page-text-muted))] border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))]'
|
|
449
453
|
}`}
|
|
450
454
|
title="Queries"
|
|
451
455
|
>
|
|
@@ -453,7 +457,9 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
453
457
|
className={`h-3.5 w-3.5 ${selectedTypes.has('queries') ? 'text-green-500' : 'text-green-400'}`}
|
|
454
458
|
/>
|
|
455
459
|
<span>Queries</span>
|
|
456
|
-
<span
|
|
460
|
+
<span
|
|
461
|
+
className={`tabular-nums ${selectedTypes.has('queries') ? 'text-green-500' : 'text-[rgb(var(--ec-icon-color))]'}`}
|
|
462
|
+
>
|
|
457
463
|
{stats.queries}
|
|
458
464
|
</span>
|
|
459
465
|
</button>
|
|
@@ -463,16 +469,18 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
463
469
|
onClick={() => toggleType('specifications')}
|
|
464
470
|
className={`inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-all border ${
|
|
465
471
|
selectedTypes.has('specifications')
|
|
466
|
-
? 'bg-
|
|
467
|
-
: 'text-
|
|
472
|
+
? 'bg-[rgb(var(--ec-accent-subtle))] text-[rgb(var(--ec-accent-text))] border-[rgb(var(--ec-accent)/0.3)]'
|
|
473
|
+
: 'text-[rgb(var(--ec-page-text-muted))] border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))]'
|
|
468
474
|
}`}
|
|
469
475
|
title="Specifications (OpenAPI, AsyncAPI, etc.)"
|
|
470
476
|
>
|
|
471
477
|
<CodeBracketIcon
|
|
472
|
-
className={`h-3.5 w-3.5 ${selectedTypes.has('specifications') ? 'text-
|
|
478
|
+
className={`h-3.5 w-3.5 ${selectedTypes.has('specifications') ? 'text-[rgb(var(--ec-accent))]' : 'text-[rgb(var(--ec-accent)/0.7)]'}`}
|
|
473
479
|
/>
|
|
474
480
|
<span>Specs</span>
|
|
475
|
-
<span
|
|
481
|
+
<span
|
|
482
|
+
className={`tabular-nums ${selectedTypes.has('specifications') ? 'text-[rgb(var(--ec-accent))]' : 'text-[rgb(var(--ec-icon-color))]'}`}
|
|
483
|
+
>
|
|
476
484
|
{stats.specifications}
|
|
477
485
|
</span>
|
|
478
486
|
</button>
|
|
@@ -481,8 +489,8 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
481
489
|
</div>
|
|
482
490
|
|
|
483
491
|
{/* Results Count Bar */}
|
|
484
|
-
<div className="flex-shrink-0 px-3 py-1.5 bg-
|
|
485
|
-
<span className="text-xs text-
|
|
492
|
+
<div className="flex-shrink-0 px-3 py-1.5 bg-[rgb(var(--ec-content-hover))] border-b border-[rgb(var(--ec-page-border))] flex items-center justify-between">
|
|
493
|
+
<span className="text-xs text-[rgb(var(--ec-page-text-muted))]">
|
|
486
494
|
{filteredMessages.length === stats.total
|
|
487
495
|
? `${stats.total} schemas`
|
|
488
496
|
: `${filteredMessages.length} of ${stats.total} schemas`}
|
|
@@ -494,7 +502,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
494
502
|
clearTypeFilters();
|
|
495
503
|
setSelectedSchemaType('all');
|
|
496
504
|
}}
|
|
497
|
-
className="text-xs text-
|
|
505
|
+
className="text-xs text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]"
|
|
498
506
|
>
|
|
499
507
|
Clear filters
|
|
500
508
|
</button>
|
|
@@ -504,7 +512,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
504
512
|
{/* Schema List - Independently Scrollable */}
|
|
505
513
|
<div className="flex-1 overflow-y-auto">
|
|
506
514
|
{paginatedMessages.length > 0 ? (
|
|
507
|
-
<div className="divide-y divide-
|
|
515
|
+
<div className="divide-y divide-[rgb(var(--ec-page-border))]">
|
|
508
516
|
{paginatedMessages.map((message) => {
|
|
509
517
|
// For services, also check spec type to determine if selected
|
|
510
518
|
const isSelected =
|
|
@@ -536,11 +544,11 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
536
544
|
</div>
|
|
537
545
|
) : (
|
|
538
546
|
<div className="flex flex-col items-center justify-center h-full p-6 text-center">
|
|
539
|
-
<div className="flex items-center justify-center w-12 h-12 rounded-full bg-
|
|
540
|
-
<MagnifyingGlassIcon className="h-6 w-6 text-
|
|
547
|
+
<div className="flex items-center justify-center w-12 h-12 rounded-full bg-[rgb(var(--ec-content-hover))] mb-3">
|
|
548
|
+
<MagnifyingGlassIcon className="h-6 w-6 text-[rgb(var(--ec-icon-color))]" />
|
|
541
549
|
</div>
|
|
542
|
-
<h3 className="text-sm font-semibold text-
|
|
543
|
-
<p className="text-xs text-
|
|
550
|
+
<h3 className="text-sm font-semibold text-[rgb(var(--ec-page-text))] mb-1">No schemas found</h3>
|
|
551
|
+
<p className="text-xs text-[rgb(var(--ec-page-text-muted))] mb-3 max-w-[200px]">
|
|
544
552
|
{searchQuery ? `No results for "${searchQuery}"` : 'Try adjusting your filters'}
|
|
545
553
|
</p>
|
|
546
554
|
{(searchQuery || selectedTypes.size > 0 || selectedSchemaType !== 'all') && (
|
|
@@ -550,7 +558,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
550
558
|
clearTypeFilters();
|
|
551
559
|
setSelectedSchemaType('all');
|
|
552
560
|
}}
|
|
553
|
-
className="text-xs font-medium text-
|
|
561
|
+
className="text-xs font-medium text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]"
|
|
554
562
|
>
|
|
555
563
|
Clear filters
|
|
556
564
|
</button>
|
|
@@ -564,7 +572,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
564
572
|
</div>
|
|
565
573
|
|
|
566
574
|
{/* Right: Schema Details */}
|
|
567
|
-
<div className="flex-1 bg-
|
|
575
|
+
<div className="flex-1 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg overflow-hidden">
|
|
568
576
|
{displayMessage ? (
|
|
569
577
|
<SchemaDetailsPanel
|
|
570
578
|
message={displayMessage}
|
|
@@ -576,11 +584,11 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
576
584
|
) : (
|
|
577
585
|
<div className="h-full flex items-center justify-center">
|
|
578
586
|
<div className="text-center max-w-xs">
|
|
579
|
-
<div className="flex items-center justify-center w-14 h-14 mx-auto mb-4 rounded-xl bg-
|
|
580
|
-
<DocumentTextIcon className="h-7 w-7 text-
|
|
587
|
+
<div className="flex items-center justify-center w-14 h-14 mx-auto mb-4 rounded-xl bg-[rgb(var(--ec-content-hover))] border border-[rgb(var(--ec-page-border))]">
|
|
588
|
+
<DocumentTextIcon className="h-7 w-7 text-[rgb(var(--ec-icon-color))]" />
|
|
581
589
|
</div>
|
|
582
|
-
<h3 className="text-sm font-semibold text-
|
|
583
|
-
<p className="text-sm text-
|
|
590
|
+
<h3 className="text-sm font-semibold text-[rgb(var(--ec-page-text))] mb-1">Select a schema</h3>
|
|
591
|
+
<p className="text-sm text-[rgb(var(--ec-page-text-muted))] leading-relaxed">
|
|
584
592
|
Choose a schema from the list to view details, compare versions, and access raw code
|
|
585
593
|
</p>
|
|
586
594
|
</div>
|