@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
|
@@ -25,13 +25,13 @@ export const columns = (tableConfiguration: TableConfiguration) => [
|
|
|
25
25
|
const user = info.row.original;
|
|
26
26
|
return (
|
|
27
27
|
<a href={buildUrl(`/docs/${user.collection}/${user.data.id}`)} className="group inline-flex items-center">
|
|
28
|
-
<span className="inline-flex items-center rounded-md border border-
|
|
29
|
-
<span className="flex items-center justify-center w-6 h-6 bg-
|
|
28
|
+
<span className="inline-flex items-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] hover:border-[rgb(var(--ec-accent))] hover:bg-[rgb(var(--ec-accent-subtle))] transition-colors">
|
|
29
|
+
<span className="flex items-center justify-center w-6 h-6 bg-[rgb(var(--ec-accent))] rounded-l-md">
|
|
30
30
|
<User className="h-3 w-3 text-white" />
|
|
31
31
|
</span>
|
|
32
|
-
<span className="px-2 py-1 text-xs text-
|
|
32
|
+
<span className="px-2 py-1 text-xs text-[rgb(var(--ec-page-text))] group-hover:text-[rgb(var(--ec-page-text))]">
|
|
33
33
|
{user.data.name}
|
|
34
|
-
{user.data.role && <span className="text-
|
|
34
|
+
{user.data.role && <span className="text-[rgb(var(--ec-icon-color))] ml-1">({user.data.role})</span>}
|
|
35
35
|
</span>
|
|
36
36
|
</span>
|
|
37
37
|
</a>
|
|
@@ -65,7 +65,7 @@ export const columns = (tableConfiguration: TableConfiguration) => [
|
|
|
65
65
|
|
|
66
66
|
if (messages?.length === 0 || !messages)
|
|
67
67
|
return (
|
|
68
|
-
<span className="inline-flex items-center px-2 py-1 text-xs text-
|
|
68
|
+
<span className="inline-flex items-center px-2 py-1 text-xs text-[rgb(var(--ec-icon-color))] bg-[rgb(var(--ec-content-hover))] rounded-md border border-[rgb(var(--ec-page-border))]">
|
|
69
69
|
No messages
|
|
70
70
|
</span>
|
|
71
71
|
);
|
|
@@ -84,21 +84,24 @@ export const columns = (tableConfiguration: TableConfiguration) => [
|
|
|
84
84
|
className="group inline-flex items-center"
|
|
85
85
|
>
|
|
86
86
|
<span
|
|
87
|
-
className={`inline-flex items-center rounded-md border border-
|
|
87
|
+
className={`inline-flex items-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] hover:border-${color}-400 dark:hover:border-${color}-500 hover:bg-${color}-50 dark:hover:bg-${color}-500/10 transition-colors`}
|
|
88
88
|
>
|
|
89
89
|
<span className={`flex items-center justify-center w-6 h-6 bg-${color}-500 rounded-l-md`}>
|
|
90
90
|
<Icon className="h-3 w-3 text-white" />
|
|
91
91
|
</span>
|
|
92
|
-
<span className="px-2 py-1 text-xs text-
|
|
92
|
+
<span className="px-2 py-1 text-xs text-[rgb(var(--ec-page-text))] group-hover:text-[rgb(var(--ec-page-text))]">
|
|
93
93
|
{message.data.name}
|
|
94
|
-
<span className="text-
|
|
94
|
+
<span className="text-[rgb(var(--ec-icon-color))] ml-1">v{message.data.version}</span>
|
|
95
95
|
</span>
|
|
96
96
|
</span>
|
|
97
97
|
</a>
|
|
98
98
|
);
|
|
99
99
|
})}
|
|
100
100
|
{hiddenCount > 0 && (
|
|
101
|
-
<button
|
|
101
|
+
<button
|
|
102
|
+
onClick={() => setIsExpanded(!isExpanded)}
|
|
103
|
+
className="text-xs text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-page-text))] text-left"
|
|
104
|
+
>
|
|
102
105
|
{isExpanded ? 'Show less' : `+${hiddenCount} more`}
|
|
103
106
|
</button>
|
|
104
107
|
)}
|
|
@@ -121,7 +124,7 @@ export const columns = (tableConfiguration: TableConfiguration) => [
|
|
|
121
124
|
|
|
122
125
|
if (services?.length === 0 || !services)
|
|
123
126
|
return (
|
|
124
|
-
<span className="inline-flex items-center px-2 py-1 text-xs text-
|
|
127
|
+
<span className="inline-flex items-center px-2 py-1 text-xs text-[rgb(var(--ec-icon-color))] bg-[rgb(var(--ec-content-hover))] rounded-md border border-[rgb(var(--ec-page-border))]">
|
|
125
128
|
No services
|
|
126
129
|
</span>
|
|
127
130
|
);
|
|
@@ -137,19 +140,22 @@ export const columns = (tableConfiguration: TableConfiguration) => [
|
|
|
137
140
|
href={buildUrl(`/docs/${service.collection}/${service.data.id}/${service.data.version}`)}
|
|
138
141
|
className="group inline-flex items-center"
|
|
139
142
|
>
|
|
140
|
-
<span className="inline-flex items-center rounded-md border border-
|
|
143
|
+
<span className="inline-flex items-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] hover:border-pink-400 dark:hover:border-pink-500 hover:bg-pink-50 dark:hover:bg-pink-500/10 transition-colors">
|
|
141
144
|
<span className="flex items-center justify-center w-6 h-6 bg-pink-500 rounded-l-md">
|
|
142
145
|
<ServerIcon className="h-3 w-3 text-white" />
|
|
143
146
|
</span>
|
|
144
|
-
<span className="px-2 py-1 text-xs text-
|
|
147
|
+
<span className="px-2 py-1 text-xs text-[rgb(var(--ec-page-text))] group-hover:text-[rgb(var(--ec-page-text))]">
|
|
145
148
|
{service.data.name}
|
|
146
|
-
<span className="text-
|
|
149
|
+
<span className="text-[rgb(var(--ec-icon-color))] ml-1">v{service.data.version}</span>
|
|
147
150
|
</span>
|
|
148
151
|
</span>
|
|
149
152
|
</a>
|
|
150
153
|
))}
|
|
151
154
|
{hiddenCount > 0 && (
|
|
152
|
-
<button
|
|
155
|
+
<button
|
|
156
|
+
onClick={() => setIsExpanded(!isExpanded)}
|
|
157
|
+
className="text-xs text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-page-text))] text-left"
|
|
158
|
+
>
|
|
153
159
|
{isExpanded ? 'Show less' : `+${hiddenCount} more`}
|
|
154
160
|
</button>
|
|
155
161
|
)}
|
|
@@ -174,7 +180,7 @@ export const columns = (tableConfiguration: TableConfiguration) => [
|
|
|
174
180
|
|
|
175
181
|
if (teams?.length === 0 || !teams)
|
|
176
182
|
return (
|
|
177
|
-
<span className="inline-flex items-center px-2 py-1 text-xs text-
|
|
183
|
+
<span className="inline-flex items-center px-2 py-1 text-xs text-[rgb(var(--ec-icon-color))] bg-[rgb(var(--ec-content-hover))] rounded-md border border-[rgb(var(--ec-page-border))]">
|
|
178
184
|
No teams
|
|
179
185
|
</span>
|
|
180
186
|
);
|
|
@@ -190,16 +196,21 @@ export const columns = (tableConfiguration: TableConfiguration) => [
|
|
|
190
196
|
href={buildUrl(`/docs/teams/${team.data.id}`)}
|
|
191
197
|
className="group inline-flex items-center"
|
|
192
198
|
>
|
|
193
|
-
<span className="inline-flex items-center rounded-md border border-
|
|
199
|
+
<span className="inline-flex items-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] hover:border-pink-400 dark:hover:border-pink-500 hover:bg-pink-50 dark:hover:bg-pink-500/10 transition-colors">
|
|
194
200
|
<span className="flex items-center justify-center w-6 h-6 bg-pink-500 rounded-l-md">
|
|
195
201
|
<Users className="h-3 w-3 text-white" />
|
|
196
202
|
</span>
|
|
197
|
-
<span className="px-2 py-1 text-xs text-
|
|
203
|
+
<span className="px-2 py-1 text-xs text-[rgb(var(--ec-page-text))] group-hover:text-[rgb(var(--ec-page-text))]">
|
|
204
|
+
{team.data.name}
|
|
205
|
+
</span>
|
|
198
206
|
</span>
|
|
199
207
|
</a>
|
|
200
208
|
))}
|
|
201
209
|
{hiddenCount > 0 && (
|
|
202
|
-
<button
|
|
210
|
+
<button
|
|
211
|
+
onClick={() => setIsExpanded(!isExpanded)}
|
|
212
|
+
className="text-xs text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-page-text))] text-left"
|
|
213
|
+
>
|
|
203
214
|
{isExpanded ? 'Show less' : `+${hiddenCount} more`}
|
|
204
215
|
</button>
|
|
205
216
|
)}
|
|
@@ -216,7 +227,7 @@ export const columns = (tableConfiguration: TableConfiguration) => [
|
|
|
216
227
|
const item = info.row.original;
|
|
217
228
|
return (
|
|
218
229
|
<a
|
|
219
|
-
className="inline-flex items-center px-2.5 py-1 text-xs font-medium text-
|
|
230
|
+
className="inline-flex items-center px-2.5 py-1 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 hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] transition-colors whitespace-nowrap"
|
|
220
231
|
href={buildUrl(`/docs/${item.collection}/${item.data.id}`)}
|
|
221
232
|
>
|
|
222
233
|
View profile
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useStore } from '@nanostores/react';
|
|
2
|
+
import { Moon, Sun } from 'lucide-react';
|
|
3
|
+
import { themeStore, toggleTheme } from '@stores/theme-store';
|
|
4
|
+
|
|
5
|
+
export default function ThemeToggle() {
|
|
6
|
+
const theme = useStore(themeStore);
|
|
7
|
+
|
|
8
|
+
return (
|
|
9
|
+
<button
|
|
10
|
+
onClick={toggleTheme}
|
|
11
|
+
className="p-2 rounded-md text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-icon-hover))] hover:bg-[rgb(var(--ec-dropdown-hover))] transition-colors"
|
|
12
|
+
aria-label={`Switch to ${theme === 'light' ? 'dark' : 'light'} mode`}
|
|
13
|
+
title={`Switch to ${theme === 'light' ? 'dark' : 'light'} mode`}
|
|
14
|
+
>
|
|
15
|
+
{theme === 'light' ? <Moon className="w-5 h-5" /> : <Sun className="w-5 h-5" />}
|
|
16
|
+
</button>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -28,7 +28,10 @@ try {
|
|
|
28
28
|
model = await providerConfiguration.default();
|
|
29
29
|
modelConfiguration = providerConfiguration.configuration || defaultConfiguration;
|
|
30
30
|
hasChatConfiguration = true;
|
|
31
|
-
|
|
31
|
+
|
|
32
|
+
if (isEventCatalogScaleEnabled()) {
|
|
33
|
+
extendedTools = providerConfiguration.tools || {};
|
|
34
|
+
}
|
|
32
35
|
} catch (error) {
|
|
33
36
|
console.error('[Chat] Error loading chat configuration', error);
|
|
34
37
|
hasChatConfiguration = false;
|
|
@@ -111,12 +114,14 @@ When responding:
|
|
|
111
114
|
5. Don't provide code examples unless specifically requested.
|
|
112
115
|
6. When you refer to a resource in EventCatalog, try and create a link to the resource in the response
|
|
113
116
|
- Example, if you return a message in the text, rather than than just the id or version you should return a markdown link to the resource e.g [MyEvent - 1.0.0](/docs/events/MyEvent/1.0.0)
|
|
114
|
-
- NEVER
|
|
117
|
+
- CRITICAL: NEVER use "latest" in any URL or link. Always use the actual semantic version number (e.g., 1.0.0, 2.1.3). The word "latest" is not a valid version and will result in broken links.
|
|
115
118
|
- The link options are:
|
|
116
119
|
- If you want to get the documentation for a resource use the /docs/ prefix (e.g /docs/{collection}/{id}/{version})
|
|
117
120
|
- If you want to let the user know they can visualize a resource use the /visualiser/ prefix (e.g /visualiser/{collection}/{id}/{version})
|
|
118
121
|
- If you want to let the user know they can see the architecture of a resource use the /architecture/ prefix (e.g /architecture/{collection}/{id}/{version})
|
|
122
|
+
- If you don't know the version, use the getResource tool to fetch the resource and get the actual version number before creating the link.
|
|
119
123
|
7. When you return a schema, use code blocks to render the schema to the user too, for example if the schema is in JSON format use \`\`\`json and if the schema is in YAML format use \`\`\`yaml
|
|
124
|
+
8. IMPORTANT: After answering each question, ALWAYS use the suggestFollowUpQuestions tool to suggest 2-3 relevant follow-up questions the user might want to ask next. These should be contextual to the conversation and help the user explore related topics.
|
|
120
125
|
|
|
121
126
|
If you have additional context, use it to answer the question.`;
|
|
122
127
|
|
|
@@ -171,7 +176,7 @@ export const POST = async ({ request }: APIContext<{ question: string; messages:
|
|
|
171
176
|
const result = await streamText({
|
|
172
177
|
model,
|
|
173
178
|
system: getBaseSystemPrompt(referrer ?? ''),
|
|
174
|
-
messages: convertToModelMessages(messages)
|
|
179
|
+
messages: await convertToModelMessages(messages),
|
|
175
180
|
temperature: modelConfiguration?.temperature ?? 0.7,
|
|
176
181
|
stopWhen: stepCountIs(5),
|
|
177
182
|
// maxTokens: 4000, // Increased to handle large tool results
|
|
@@ -320,6 +325,22 @@ export const POST = async ({ request }: APIContext<{ question: string; messages:
|
|
|
320
325
|
return [];
|
|
321
326
|
},
|
|
322
327
|
}),
|
|
328
|
+
suggestFollowUpQuestions: tool({
|
|
329
|
+
description:
|
|
330
|
+
'Use this tool after answering a question to suggest 2-3 relevant follow-up questions the user might want to ask. These will be displayed as clickable suggestions.',
|
|
331
|
+
inputSchema: z.object({
|
|
332
|
+
questions: z
|
|
333
|
+
.array(z.string())
|
|
334
|
+
.min(1)
|
|
335
|
+
.max(3)
|
|
336
|
+
.describe('Array of 2-3 follow-up questions relevant to the conversation'),
|
|
337
|
+
}),
|
|
338
|
+
execute: async ({ questions }) => {
|
|
339
|
+
// This tool doesn't need to do anything - it just returns the questions
|
|
340
|
+
// which will be captured by the UI
|
|
341
|
+
return { suggestions: questions };
|
|
342
|
+
},
|
|
343
|
+
}),
|
|
323
344
|
...extendedTools,
|
|
324
345
|
},
|
|
325
346
|
});
|
|
@@ -28,7 +28,7 @@ const NestedItem: React.FC<NestedItemProps> = ({
|
|
|
28
28
|
<div className="py-1">
|
|
29
29
|
<div className="flex items-center">
|
|
30
30
|
<button
|
|
31
|
-
className="p-1 hover:bg-
|
|
31
|
+
className="p-1 hover:bg-[rgb(var(--ec-content-hover))] rounded-md flex-shrink-0"
|
|
32
32
|
onClick={(e) => {
|
|
33
33
|
e.stopPropagation();
|
|
34
34
|
toggleGroupCollapse(`nested-${itemId}`);
|
|
@@ -43,14 +43,14 @@ const NestedItem: React.FC<NestedItemProps> = ({
|
|
|
43
43
|
stroke="currentColor"
|
|
44
44
|
aria-hidden="true"
|
|
45
45
|
data-slot="icon"
|
|
46
|
-
className="h-3 w-3 text-
|
|
46
|
+
className="h-3 w-3 text-[rgb(var(--ec-icon-color))]"
|
|
47
47
|
>
|
|
48
48
|
<path strokeLinecap="round" strokeLinejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path>
|
|
49
49
|
</svg>
|
|
50
50
|
</div>
|
|
51
51
|
</button>
|
|
52
52
|
<button
|
|
53
|
-
className="flex items-center px-2 py-1 text-xs font-medium text-
|
|
53
|
+
className="flex items-center px-2 py-1 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] rounded-md hover:bg-[rgb(var(--ec-content-hover))] min-w-0 flex-1"
|
|
54
54
|
onClick={(e) => {
|
|
55
55
|
e.stopPropagation();
|
|
56
56
|
toggleGroupCollapse(`nested-${itemId}`);
|
|
@@ -59,7 +59,11 @@ const NestedItem: React.FC<NestedItemProps> = ({
|
|
|
59
59
|
<span className="truncate">{item.label}</span>
|
|
60
60
|
{item.badge && item?.badge?.text && (
|
|
61
61
|
<span
|
|
62
|
-
className={
|
|
62
|
+
className={
|
|
63
|
+
item.badge.color
|
|
64
|
+
? `text-${item.badge.color}-600 dark:text-${item.badge.color}-400 ml-2 text-[10px] font-medium bg-${item.badge.color}-50 dark:bg-${item.badge.color}-500/20 px-2 py-0.5 rounded uppercase`
|
|
65
|
+
: `text-[rgb(var(--ec-accent))] ml-2 text-[10px] font-medium bg-[rgb(var(--ec-accent-subtle))] px-2 py-0.5 rounded uppercase`
|
|
66
|
+
}
|
|
63
67
|
>
|
|
64
68
|
{item.badge.text}
|
|
65
69
|
</span>
|
|
@@ -72,7 +76,7 @@ const NestedItem: React.FC<NestedItemProps> = ({
|
|
|
72
76
|
collapsedGroups[`nested-${itemId}`] ? 'h-0' : 'h-auto'
|
|
73
77
|
}`}
|
|
74
78
|
>
|
|
75
|
-
<div className="space-y-0.5 border-
|
|
79
|
+
<div className="space-y-0.5 border-[rgb(var(--ec-page-border))] border-l pl-4 ml-[9px] mt-1">
|
|
76
80
|
{item.items.map((nestedItem: SidebarItem, nestedIndex: number) => (
|
|
77
81
|
<NestedItem
|
|
78
82
|
key={`nested-${itemId}-${nestedIndex}`}
|
|
@@ -121,7 +125,7 @@ const NestedItem: React.FC<NestedItemProps> = ({
|
|
|
121
125
|
<a
|
|
122
126
|
href={itemPath}
|
|
123
127
|
{...(attrs || {})}
|
|
124
|
-
className={`flex items-center px-2 py-1.5 text-xs ${isActive ? 'bg-
|
|
128
|
+
className={`flex items-center px-2 py-1.5 text-xs ${isActive ? 'bg-[rgb(var(--ec-accent-subtle))] text-[rgb(var(--ec-page-text))] font-semibold' : 'text-[rgb(var(--ec-page-text-muted))] hover:bg-[rgb(var(--ec-content-hover))]'} rounded-md`}
|
|
125
129
|
data-active={isActive}
|
|
126
130
|
target={isExternalLink ? '_blank' : undefined}
|
|
127
131
|
>
|
|
@@ -131,7 +135,11 @@ const NestedItem: React.FC<NestedItemProps> = ({
|
|
|
131
135
|
</span>
|
|
132
136
|
{item.badge && item?.badge?.text && (
|
|
133
137
|
<span
|
|
134
|
-
className={
|
|
138
|
+
className={
|
|
139
|
+
item.badge.color
|
|
140
|
+
? `text-${item.badge.color}-600 dark:text-${item.badge.color}-400 ml-2 text-[10px] font-medium bg-${item.badge.color}-50 dark:bg-${item.badge.color}-500/20 px-2 py-0.5 rounded uppercase`
|
|
141
|
+
: `text-[rgb(var(--ec-accent))] ml-2 text-[10px] font-medium bg-[rgb(var(--ec-accent-subtle))] px-2 py-0.5 rounded uppercase`
|
|
142
|
+
}
|
|
135
143
|
>
|
|
136
144
|
{item.badge.text}
|
|
137
145
|
</span>
|
|
@@ -6,8 +6,8 @@ interface NoResultsFoundProps {
|
|
|
6
6
|
|
|
7
7
|
const NoResultsFound: React.FC<NoResultsFoundProps> = ({ searchTerm }) => (
|
|
8
8
|
<div className="px-4 py-6 text-center">
|
|
9
|
-
<div className="text-
|
|
10
|
-
<div className="text-
|
|
9
|
+
<div className="text-[rgb(var(--ec-page-text-muted))] text-sm mb-2">No results found for "{searchTerm}"</div>
|
|
10
|
+
<div className="text-[rgb(var(--ec-page-text-muted))] text-xs">
|
|
11
11
|
Try:
|
|
12
12
|
<ul className="mt-2 space-y-1 text-left list-disc pl-4">
|
|
13
13
|
<li>Checking for typos</li>
|
|
@@ -197,31 +197,31 @@ const CustomDocsNav: React.FC<CustomDocsNavProps> = ({ sidebarItems }) => {
|
|
|
197
197
|
const hasNoResults = debouncedSearchTerm && filteredSidebarItems.length === 0;
|
|
198
198
|
|
|
199
199
|
return (
|
|
200
|
-
<nav ref={navRef} className="h-full text-
|
|
201
|
-
<div className="mb-2 px-3 bg-
|
|
200
|
+
<nav ref={navRef} className="h-full text-[rgb(var(--ec-page-text))] pt-4 overflow-y-auto">
|
|
201
|
+
<div className="mb-2 px-3 bg-[rgb(var(--ec-page-bg))] z-10">
|
|
202
202
|
<div className="flex gap-2">
|
|
203
203
|
<input
|
|
204
204
|
type="text"
|
|
205
205
|
value={searchTerm}
|
|
206
206
|
onChange={handleSearchChange}
|
|
207
207
|
placeholder="Quick search..."
|
|
208
|
-
className="flex-1 p-2 px-2 text-sm rounded-md border border-
|
|
208
|
+
className="flex-1 p-2 px-2 text-sm rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] placeholder:text-[rgb(var(--ec-input-placeholder))] h-[30px]"
|
|
209
209
|
/>
|
|
210
210
|
<button
|
|
211
211
|
onClick={toggleExpandCollapse}
|
|
212
212
|
title={isExpanded ? 'Collapse All' : 'Expand All'}
|
|
213
|
-
className="px-2 py-1 bg-
|
|
213
|
+
className="px-2 py-1 bg-[rgb(var(--ec-content-hover))] hover:bg-[rgb(var(--ec-content-active))] rounded-md border border-[rgb(var(--ec-page-border))] h-[30px] flex items-center justify-center"
|
|
214
214
|
>
|
|
215
215
|
{isExpanded ? (
|
|
216
|
-
<ChevronDoubleUpIcon className="h-4 w-4 text-
|
|
216
|
+
<ChevronDoubleUpIcon className="h-4 w-4 text-[rgb(var(--ec-icon-color))]" />
|
|
217
217
|
) : (
|
|
218
|
-
<ChevronDoubleDownIcon className="h-4 w-4 text-
|
|
218
|
+
<ChevronDoubleDownIcon className="h-4 w-4 text-[rgb(var(--ec-icon-color))]" />
|
|
219
219
|
)}
|
|
220
220
|
</button>
|
|
221
221
|
</div>
|
|
222
222
|
</div>
|
|
223
223
|
|
|
224
|
-
<div className="space-y-2 divide-y divide-
|
|
224
|
+
<div className="space-y-2 divide-y divide-[rgb(var(--ec-page-border))] pb-4">
|
|
225
225
|
{hasNoResults ? (
|
|
226
226
|
<NoResultsFound searchTerm={debouncedSearchTerm} />
|
|
227
227
|
) : (
|
|
@@ -231,7 +231,7 @@ const CustomDocsNav: React.FC<CustomDocsNavProps> = ({ sidebarItems }) => {
|
|
|
231
231
|
{section.items ? (
|
|
232
232
|
<div className="flex items-center">
|
|
233
233
|
<button
|
|
234
|
-
className="p-1 hover:bg-
|
|
234
|
+
className="p-1 hover:bg-[rgb(var(--ec-content-hover))] rounded-md flex-shrink-0"
|
|
235
235
|
onClick={(e) => {
|
|
236
236
|
e.stopPropagation();
|
|
237
237
|
toggleGroupCollapse(`section-${index}`);
|
|
@@ -248,14 +248,14 @@ const CustomDocsNav: React.FC<CustomDocsNavProps> = ({ sidebarItems }) => {
|
|
|
248
248
|
stroke="currentColor"
|
|
249
249
|
aria-hidden="true"
|
|
250
250
|
data-slot="icon"
|
|
251
|
-
className="h-3 w-3 text-
|
|
251
|
+
className="h-3 w-3 text-[rgb(var(--ec-icon-color))]"
|
|
252
252
|
>
|
|
253
253
|
<path strokeLinecap="round" strokeLinejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path>
|
|
254
254
|
</svg>
|
|
255
255
|
</div>
|
|
256
256
|
</button>
|
|
257
257
|
<button
|
|
258
|
-
className="flex items-center justify-between px-2 py-0.5 text-xs font-bold rounded-md hover:bg-
|
|
258
|
+
className="flex items-center justify-between px-2 py-0.5 text-xs font-bold rounded-md hover:bg-[rgb(var(--ec-content-hover))] min-w-0 flex-1"
|
|
259
259
|
onClick={(e) => {
|
|
260
260
|
e.stopPropagation();
|
|
261
261
|
toggleGroupCollapse(`section-${index}`);
|
|
@@ -264,7 +264,11 @@ const CustomDocsNav: React.FC<CustomDocsNavProps> = ({ sidebarItems }) => {
|
|
|
264
264
|
<span className="truncate">{section.label}</span>
|
|
265
265
|
{section.badge && section?.badge?.text && (
|
|
266
266
|
<span
|
|
267
|
-
className={
|
|
267
|
+
className={
|
|
268
|
+
section.badge.color
|
|
269
|
+
? `text-${section.badge.color}-600 dark:text-${section.badge.color}-400 ml-2 text-[10px] font-medium bg-${section.badge.color}-50 dark:bg-${section.badge.color}-500/20 px-2 py-0.5 rounded uppercase`
|
|
270
|
+
: `text-[rgb(var(--ec-accent))] ml-2 text-[10px] font-medium bg-[rgb(var(--ec-accent-subtle))] px-2 py-0.5 rounded uppercase`
|
|
271
|
+
}
|
|
268
272
|
>
|
|
269
273
|
{section.badge.text}
|
|
270
274
|
</span>
|
|
@@ -275,7 +279,7 @@ const CustomDocsNav: React.FC<CustomDocsNavProps> = ({ sidebarItems }) => {
|
|
|
275
279
|
<div className="flex items-center">
|
|
276
280
|
<span className="flex-grow flex items-center justify-between px-2 py-0.5 text-xs font-bold rounded-md">
|
|
277
281
|
<span className="truncate">{section.label}</span>
|
|
278
|
-
<span className="text-
|
|
282
|
+
<span className="text-[rgb(var(--ec-accent))] ml-2 text-[10px] font-medium bg-[rgb(var(--ec-accent-subtle))] px-2 py-0.5 rounded uppercase">
|
|
279
283
|
Section
|
|
280
284
|
</span>
|
|
281
285
|
</span>
|
|
@@ -288,7 +292,7 @@ const CustomDocsNav: React.FC<CustomDocsNavProps> = ({ sidebarItems }) => {
|
|
|
288
292
|
collapsedGroups[`section-${index}`] ? 'h-0' : 'h-auto'
|
|
289
293
|
}`}
|
|
290
294
|
>
|
|
291
|
-
<div className="space-y-0.5 border-
|
|
295
|
+
<div className="space-y-0.5 border-[rgb(var(--ec-page-border))] border-l pl-4 ml-[9px] mt-1">
|
|
292
296
|
{section.items.map((item: SidebarItem, itemIndex: number) => (
|
|
293
297
|
<NestedItem
|
|
294
298
|
key={`item-${index}-${itemIndex}`}
|
|
@@ -309,8 +313,8 @@ const CustomDocsNav: React.FC<CustomDocsNavProps> = ({ sidebarItems }) => {
|
|
|
309
313
|
href={buildUrl(`/docs/custom/${section.slug}`)}
|
|
310
314
|
className={`flex items-center px-2 py-1.5 text-xs ${
|
|
311
315
|
currentPath.endsWith(`/${section.slug}`)
|
|
312
|
-
? 'bg-
|
|
313
|
-
: 'text-
|
|
316
|
+
? 'bg-[rgb(var(--ec-accent-subtle))] text-[rgb(var(--ec-page-text))] font-semibold'
|
|
317
|
+
: 'text-[rgb(var(--ec-page-text-muted))] hover:bg-[rgb(var(--ec-content-hover))]'
|
|
314
318
|
} rounded-md ml-6`}
|
|
315
319
|
data-active={currentPath.endsWith(`/${section.slug}`)}
|
|
316
320
|
>
|
|
@@ -83,7 +83,9 @@ const badges = doc?.badges || [];
|
|
|
83
83
|
<VerticalSideBarLayout title={doc.title || 'Documentation'} showNestedSideBar={false}>
|
|
84
84
|
<div class="flex w-full" data-pagefind-body data-pagefind-meta={`title:${doc.title}`}>
|
|
85
85
|
<!-- Left Sidebar Navigation -->
|
|
86
|
-
<aside
|
|
86
|
+
<aside
|
|
87
|
+
class="sidebar-transition overflow-y-auto bg-[rgb(var(--ec-page-bg))] border-r border-[rgb(var(--ec-page-border))] w-80 fixed top-16 bottom-0 z-10"
|
|
88
|
+
>
|
|
87
89
|
<CustomDocsNav />
|
|
88
90
|
</aside>
|
|
89
91
|
|
|
@@ -92,10 +94,10 @@ const badges = doc?.badges || [];
|
|
|
92
94
|
class="sidebar-transition w-full max-h-content ml-[22em] md:ml-[21em] lg:mr-2 2xl:mr-2 2xl:ml-[22em] pr-2 overflow-y-auto"
|
|
93
95
|
>
|
|
94
96
|
<div class="max-w-none mx-auto px-4 py-10">
|
|
95
|
-
<div class="border-b border-
|
|
97
|
+
<div class="border-b border-[rgb(var(--ec-page-border))] flex justify-between items-start md:pb-6">
|
|
96
98
|
<div>
|
|
97
|
-
<h2 id="doc-page-header" class="text-2xl md:text-4xl font-bold text-
|
|
98
|
-
<p class="text-lg pt-2 text-
|
|
99
|
+
<h2 id="doc-page-header" class="text-2xl md:text-4xl font-bold text-[rgb(var(--ec-page-text))]">{doc.title}</h2>
|
|
100
|
+
<p class="text-lg pt-2 text-[rgb(var(--ec-page-text-muted))] font-light">{doc.summary}</p>
|
|
99
101
|
{
|
|
100
102
|
badges && (
|
|
101
103
|
<div class="flex flex-wrap pt-4">
|
|
@@ -148,16 +150,18 @@ const badges = doc?.badges || [];
|
|
|
148
150
|
}
|
|
149
151
|
|
|
150
152
|
<!-- Previous / Next Navigation -->
|
|
151
|
-
<div class="py-8 border-t border-
|
|
153
|
+
<div class="py-8 border-t border-[rgb(var(--ec-page-border))] mt-8">
|
|
152
154
|
<div class="flex flex-col sm:flex-row justify-between w-full gap-4">
|
|
153
155
|
{
|
|
154
156
|
prev && (
|
|
155
157
|
<a
|
|
156
158
|
href={buildUrl(`/docs/custom/${prev.slug}`)}
|
|
157
|
-
class="group flex flex-col border border-
|
|
159
|
+
class="group flex flex-col border border-[rgb(var(--ec-page-border))] rounded-lg p-4 hover:border-[rgb(var(--ec-content-text-muted))] hover:bg-[rgb(var(--ec-content-hover))] transition-colors w-full sm:w-1/2"
|
|
158
160
|
>
|
|
159
|
-
<span class="text-sm text-
|
|
160
|
-
<span class="font-medium group-hover:text-primary-600 transition-colors">
|
|
161
|
+
<span class="text-sm text-[rgb(var(--ec-page-text-muted))] mb-1">Previous</span>
|
|
162
|
+
<span class="font-medium text-[rgb(var(--ec-page-text))] group-hover:text-primary-600 transition-colors">
|
|
163
|
+
{prev.label}
|
|
164
|
+
</span>
|
|
161
165
|
</a>
|
|
162
166
|
)
|
|
163
167
|
}
|
|
@@ -168,10 +172,12 @@ const badges = doc?.badges || [];
|
|
|
168
172
|
next && (
|
|
169
173
|
<a
|
|
170
174
|
href={buildUrl(`/docs/custom/${next.slug}`)}
|
|
171
|
-
class="group flex flex-col items-end text-right border border-
|
|
175
|
+
class="group flex flex-col items-end text-right border border-[rgb(var(--ec-page-border))] rounded-lg p-4 hover:border-[rgb(var(--ec-content-text-muted))] hover:bg-[rgb(var(--ec-content-hover))] transition-colors w-full sm:w-1/2"
|
|
172
176
|
>
|
|
173
|
-
<span class="text-sm text-
|
|
174
|
-
<span class="font-medium group-hover:text-primary-600 transition-colors">
|
|
177
|
+
<span class="text-sm text-[rgb(var(--ec-page-text-muted))] mb-1">Next</span>
|
|
178
|
+
<span class="font-medium text-[rgb(var(--ec-page-text))] group-hover:text-primary-600 transition-colors">
|
|
179
|
+
{next.label}
|
|
180
|
+
</span>
|
|
175
181
|
</a>
|
|
176
182
|
)
|
|
177
183
|
}
|
|
@@ -182,7 +188,7 @@ const badges = doc?.badges || [];
|
|
|
182
188
|
|
|
183
189
|
<!-- Right Sidebar TOC -->
|
|
184
190
|
<aside
|
|
185
|
-
class="hidden lg:block sticky top-0 pb-10 w-80 overflow-y-auto border-l border-
|
|
191
|
+
class="hidden lg:block sticky top-0 pb-10 w-80 overflow-y-auto border-l border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-page-bg))] p-6 flex-shrink-0 py-2"
|
|
186
192
|
>
|
|
187
193
|
<div class="py-4">
|
|
188
194
|
<div>
|
|
@@ -197,7 +203,7 @@ const badges = doc?.badges || [];
|
|
|
197
203
|
)
|
|
198
204
|
}
|
|
199
205
|
</div>
|
|
200
|
-
<h3 class="text-sm text-
|
|
206
|
+
<h3 class="text-sm text-[rgb(var(--ec-page-text))] font-semibold capitalize flex items-center gap-2">
|
|
201
207
|
<AlignLeftIcon className="w-4 h-4" />
|
|
202
208
|
On this page
|
|
203
209
|
</h3>
|
|
@@ -210,7 +216,7 @@ const badges = doc?.badges || [];
|
|
|
210
216
|
return (
|
|
211
217
|
<a
|
|
212
218
|
href={`#${heading.slug}`}
|
|
213
|
-
class={`block text-[12px] py-0.5 ${heading.depth === 1 ? 'font-light' : ''} text-
|
|
219
|
+
class={`block text-[12px] py-0.5 ${heading.depth === 1 ? 'font-light' : ''} text-[rgb(var(--ec-page-text-muted))] hover:text-primary-600`}
|
|
214
220
|
style={`padding-left: ${(heading.depth - 1) * 8}px`}
|
|
215
221
|
>
|
|
216
222
|
{heading.text}
|
|
@@ -235,6 +241,11 @@ const badges = doc?.badges || [];
|
|
|
235
241
|
margin: 0;
|
|
236
242
|
/* width: 100px !important; */
|
|
237
243
|
}
|
|
244
|
+
|
|
245
|
+
/* TOC active state - uses accent CSS variable */
|
|
246
|
+
.toc-active-text {
|
|
247
|
+
color: rgb(var(--ec-accent));
|
|
248
|
+
}
|
|
238
249
|
</style>
|
|
239
250
|
|
|
240
251
|
<script define:vars={{ props, config }}>
|
|
@@ -262,14 +273,14 @@ const badges = doc?.badges || [];
|
|
|
262
273
|
function highlightTocItem(id: string) {
|
|
263
274
|
// Remove active class from all links
|
|
264
275
|
document.querySelectorAll('.active-toc-item').forEach((link) => {
|
|
265
|
-
link.classList.remove('active-toc-item', '
|
|
276
|
+
link.classList.remove('active-toc-item', 'toc-active-text', 'font-light');
|
|
266
277
|
link.classList.add('text-gray-400');
|
|
267
278
|
});
|
|
268
279
|
|
|
269
280
|
// Add active class to current link
|
|
270
281
|
const tocLink = document.querySelector(`nav a[href="#${id}"]`);
|
|
271
282
|
if (tocLink) {
|
|
272
|
-
tocLink.classList.add('active-toc-item', '
|
|
283
|
+
tocLink.classList.add('active-toc-item', 'toc-active-text', 'font-light');
|
|
273
284
|
tocLink.classList.remove('text-gray-400');
|
|
274
285
|
|
|
275
286
|
// Scroll the highlighted item into view with a small delay to ensure DOM updates first
|
|
@@ -389,6 +400,27 @@ const badges = doc?.badges || [];
|
|
|
389
400
|
}
|
|
390
401
|
}
|
|
391
402
|
|
|
403
|
+
// Detect current theme from data-theme attribute
|
|
404
|
+
const isDarkMode = document.documentElement.getAttribute('data-theme') === 'dark';
|
|
405
|
+
const currentTheme = isDarkMode ? 'dark' : 'default';
|
|
406
|
+
|
|
407
|
+
// Custom theme variables for better readability in dark mode
|
|
408
|
+
const darkThemeVariables = {
|
|
409
|
+
// Sequence diagram - improve text contrast
|
|
410
|
+
signalColor: '#f0f6fc',
|
|
411
|
+
signalTextColor: '#f0f6fc',
|
|
412
|
+
actorTextColor: '#0d1117',
|
|
413
|
+
actorBkg: '#f0f6fc',
|
|
414
|
+
actorBorder: '#484f58',
|
|
415
|
+
actorLineColor: '#6b7280',
|
|
416
|
+
// General text colors
|
|
417
|
+
primaryTextColor: '#f0f6fc',
|
|
418
|
+
secondaryTextColor: '#c9d1d9',
|
|
419
|
+
tertiaryTextColor: '#f0f6fc',
|
|
420
|
+
// Line colors
|
|
421
|
+
lineColor: '#6b7280',
|
|
422
|
+
};
|
|
423
|
+
|
|
392
424
|
mermaid.initialize({
|
|
393
425
|
// fontSize: 2,
|
|
394
426
|
flowchart: {
|
|
@@ -399,7 +431,8 @@ const badges = doc?.badges || [];
|
|
|
399
431
|
startOnLoad: false,
|
|
400
432
|
fontFamily: 'var(--sans-font)',
|
|
401
433
|
// @ts-ignore This works, but TS expects a enum for some reason
|
|
402
|
-
theme:
|
|
434
|
+
theme: currentTheme,
|
|
435
|
+
themeVariables: isDarkMode ? darkThemeVariables : undefined,
|
|
403
436
|
architecture: {
|
|
404
437
|
useMaxWidth: true,
|
|
405
438
|
},
|
|
@@ -49,10 +49,10 @@ const tabs = [
|
|
|
49
49
|
---
|
|
50
50
|
|
|
51
51
|
<VerticalSideBarLayout title={`Explore | ${title}`} showNestedSideBar={false}>
|
|
52
|
-
<main class="ml-0">
|
|
52
|
+
<main class="ml-0 bg-[rgb(var(--ec-page-bg))]">
|
|
53
53
|
<div id="discover-collection-tabs">
|
|
54
54
|
<div class="hidden sm:block">
|
|
55
|
-
<div class="border-b border-
|
|
55
|
+
<div class="border-b border-[rgb(var(--ec-page-border))]">
|
|
56
56
|
<nav class="flex space-x-8 -mb-0.5 pl-6" aria-label="Tabs">
|
|
57
57
|
{
|
|
58
58
|
tabs
|
|
@@ -60,11 +60,16 @@ const tabs = [
|
|
|
60
60
|
.map((tab) => (
|
|
61
61
|
<a
|
|
62
62
|
href={tab.href}
|
|
63
|
-
class={
|
|
63
|
+
class:list={[
|
|
64
|
+
'group inline-flex items-center py-4 px-1 text-sm font-light text-[rgb(var(--ec-page-text))]',
|
|
65
|
+
tab.isActive && 'border-b-[2px] border-[rgb(var(--ec-accent))] text-[rgb(var(--ec-accent))]',
|
|
66
|
+
!tab.isActive && 'opacity-70 hover:opacity-100',
|
|
67
|
+
!tab.enabled && 'disabled',
|
|
68
|
+
]}
|
|
64
69
|
aria-current="page"
|
|
65
70
|
>
|
|
66
71
|
<tab.icon
|
|
67
|
-
className={`w-6 h-6 -ml-0.5 mr-2
|
|
72
|
+
className={`w-6 h-6 -ml-0.5 mr-2 ${tab.isActive ? 'text-[rgb(var(--ec-accent))]' : 'text-[rgb(var(--ec-icon-color))]'}`}
|
|
68
73
|
/>
|
|
69
74
|
<span>{tab.label}</span>
|
|
70
75
|
</a>
|
|
@@ -80,8 +85,8 @@ const tabs = [
|
|
|
80
85
|
<div>
|
|
81
86
|
<div class="sm:flex sm:items-end py-4 pb-4" id="discover-title">
|
|
82
87
|
<div class="sm:flex-auto space-y-2">
|
|
83
|
-
<h1 class="text-4xl font-semibold text-
|
|
84
|
-
<p class="text-md text-
|
|
88
|
+
<h1 class="text-4xl font-semibold text-[rgb(var(--ec-page-text))] capitalize">{title}</h1>
|
|
89
|
+
<p class="text-md text-[rgb(var(--ec-page-text-muted))]">{subtitle}</p>
|
|
85
90
|
</div>
|
|
86
91
|
</div>
|
|
87
92
|
<div class="mt-4 flow-root">
|