@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
|
@@ -48,23 +48,27 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
48
48
|
</head>
|
|
49
49
|
<body>
|
|
50
50
|
<VerticalSideBarLayout title="EventCatalog Studio" showNestedSideBar={false}>
|
|
51
|
-
<div class="min-h-[calc(100vh-60px)] bg-
|
|
51
|
+
<div class="min-h-[calc(100vh-60px)] bg-[rgb(var(--ec-page-bg))]">
|
|
52
52
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
|
|
53
53
|
{/* Hero Section */}
|
|
54
54
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center mb-16">
|
|
55
55
|
<div>
|
|
56
|
-
<div
|
|
56
|
+
<div
|
|
57
|
+
class="inline-flex items-center px-3 py-1.5 rounded-full bg-[rgb(var(--ec-content-hover))] text-[rgb(var(--ec-page-text))] font-medium text-xs mb-6"
|
|
58
|
+
>
|
|
57
59
|
Visual Design Tool
|
|
58
60
|
</div>
|
|
59
|
-
<h1 class="text-4xl font-bold text-
|
|
60
|
-
|
|
61
|
+
<h1 class="text-4xl font-bold text-[rgb(var(--ec-page-text))] tracking-tight mb-4">
|
|
62
|
+
Turn your resources into designs
|
|
63
|
+
</h1>
|
|
64
|
+
<p class="text-lg text-[rgb(var(--ec-page-text-muted))] mb-8">
|
|
61
65
|
Transform your documented messages, services, and domains into architecture diagrams. Drag, drop, and design with
|
|
62
66
|
what you already have.
|
|
63
67
|
</p>
|
|
64
68
|
<div class="flex flex-col sm:flex-row gap-3 mb-4">
|
|
65
69
|
<button
|
|
66
70
|
id="design-button"
|
|
67
|
-
class="inline-flex items-center justify-center px-6 py-3 border border-transparent text-base font-medium rounded-lg text-
|
|
71
|
+
class="inline-flex items-center justify-center px-6 py-3 border border-transparent text-base font-medium rounded-lg text-[rgb(var(--ec-button-text))] bg-[rgb(var(--ec-button-bg))] hover:bg-[rgb(var(--ec-button-bg-hover))] transition-colors duration-150"
|
|
68
72
|
>
|
|
69
73
|
<SquareDashedMousePointerIcon className="w-4 h-4 mr-2" />
|
|
70
74
|
Open Studio
|
|
@@ -73,7 +77,7 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
73
77
|
href="https://www.eventcatalog.dev/docs/development/components/designs"
|
|
74
78
|
target="_blank"
|
|
75
79
|
rel="noopener noreferrer"
|
|
76
|
-
class="inline-flex items-center justify-center px-6 py-3 border border-
|
|
80
|
+
class="inline-flex items-center justify-center px-6 py-3 border border-[rgb(var(--ec-page-border))] text-base font-medium rounded-lg text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] hover:bg-[rgb(var(--ec-content-hover))] transition-colors duration-150"
|
|
77
81
|
>
|
|
78
82
|
Learn more
|
|
79
83
|
<ExternalLink className="w-4 h-4 ml-2" />
|
|
@@ -82,8 +86,9 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
82
86
|
|
|
83
87
|
{
|
|
84
88
|
totalResources > 0 && (
|
|
85
|
-
<p class="text-sm text-
|
|
86
|
-
<span class="font-medium text-
|
|
89
|
+
<p class="text-sm text-[rgb(var(--ec-page-text-muted))]">
|
|
90
|
+
<span class="font-medium text-[rgb(var(--ec-page-text))]">{totalResources}</span> resources available to
|
|
91
|
+
design with
|
|
87
92
|
</p>
|
|
88
93
|
)
|
|
89
94
|
}
|
|
@@ -100,7 +105,7 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
100
105
|
if (resource.type === 'event') {
|
|
101
106
|
return (
|
|
102
107
|
<div
|
|
103
|
-
class="animate-float-in flex items-center gap-2 text-sm text-
|
|
108
|
+
class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text))] px-4 py-2.5 bg-orange-50 dark:bg-orange-500/10 rounded-lg border border-orange-200 dark:border-orange-500/30 shadow-sm"
|
|
104
109
|
style={`animation-delay: ${resource.index * 0.3}s;`}
|
|
105
110
|
>
|
|
106
111
|
<BoltIcon className="w-4 h-4 text-orange-500" />
|
|
@@ -110,7 +115,7 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
110
115
|
} else if (resource.type === 'service') {
|
|
111
116
|
return (
|
|
112
117
|
<div
|
|
113
|
-
class="animate-float-in flex items-center gap-2 text-sm text-
|
|
118
|
+
class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text))] px-4 py-2.5 bg-pink-50 dark:bg-pink-500/10 rounded-lg border border-pink-200 dark:border-pink-500/30 shadow-sm"
|
|
114
119
|
style={`animation-delay: ${resource.index * 0.3}s;`}
|
|
115
120
|
>
|
|
116
121
|
<ServerIcon className="w-4 h-4 text-pink-500" />
|
|
@@ -120,7 +125,7 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
120
125
|
} else if (resource.type === 'channel') {
|
|
121
126
|
return (
|
|
122
127
|
<div
|
|
123
|
-
class="animate-float-in flex items-center gap-2 text-sm text-
|
|
128
|
+
class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text))] px-4 py-2.5 bg-indigo-50 dark:bg-indigo-500/10 rounded-lg border border-indigo-200 dark:border-indigo-500/30 shadow-sm"
|
|
124
129
|
style={`animation-delay: ${resource.index * 0.3}s;`}
|
|
125
130
|
>
|
|
126
131
|
<ArrowLeftRightIcon className="w-4 h-4 text-indigo-500" />
|
|
@@ -133,21 +138,21 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
133
138
|
) : (
|
|
134
139
|
<div class="absolute left-0 top-1/2 -translate-y-1/2 space-y-2.5">
|
|
135
140
|
<div
|
|
136
|
-
class="animate-float-in flex items-center gap-2 text-sm text-
|
|
141
|
+
class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-icon-color))] px-4 py-2.5 bg-[rgb(var(--ec-content-hover))] rounded-lg border border-[rgb(var(--ec-page-border))] border-dashed"
|
|
137
142
|
style="animation-delay: 0s;"
|
|
138
143
|
>
|
|
139
144
|
<BoltIcon className="w-4 h-4" />
|
|
140
145
|
<span>Your events</span>
|
|
141
146
|
</div>
|
|
142
147
|
<div
|
|
143
|
-
class="animate-float-in flex items-center gap-2 text-sm text-
|
|
148
|
+
class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-icon-color))] px-4 py-2.5 bg-[rgb(var(--ec-content-hover))] rounded-lg border border-[rgb(var(--ec-page-border))] border-dashed"
|
|
144
149
|
style="animation-delay: 0.3s;"
|
|
145
150
|
>
|
|
146
151
|
<ServerIcon className="w-4 h-4" />
|
|
147
152
|
<span>Your services</span>
|
|
148
153
|
</div>
|
|
149
154
|
<div
|
|
150
|
-
class="animate-float-in flex items-center gap-2 text-sm text-
|
|
155
|
+
class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-icon-color))] px-4 py-2.5 bg-[rgb(var(--ec-content-hover))] rounded-lg border border-[rgb(var(--ec-page-border))] border-dashed"
|
|
151
156
|
style="animation-delay: 0.6s;"
|
|
152
157
|
>
|
|
153
158
|
<ArrowLeftRightIcon className="w-4 h-4" />
|
|
@@ -159,7 +164,12 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
159
164
|
|
|
160
165
|
{/* Arrow indicator */}
|
|
161
166
|
<div class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2">
|
|
162
|
-
<svg
|
|
167
|
+
<svg
|
|
168
|
+
class="w-10 h-10 text-[rgb(var(--ec-icon-color))] animate-pulse"
|
|
169
|
+
viewBox="0 0 24 24"
|
|
170
|
+
fill="none"
|
|
171
|
+
stroke="currentColor"
|
|
172
|
+
>
|
|
163
173
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
|
|
164
174
|
</svg>
|
|
165
175
|
</div>
|
|
@@ -169,7 +179,7 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
169
179
|
<img
|
|
170
180
|
src="/studio-bg.png"
|
|
171
181
|
alt="Studio Design Preview"
|
|
172
|
-
class="rounded-xl shadow-lg border border-
|
|
182
|
+
class="rounded-xl shadow-lg border border-[rgb(var(--ec-page-border))] w-56 h-auto"
|
|
173
183
|
/>
|
|
174
184
|
</div>
|
|
175
185
|
</div>
|
|
@@ -179,54 +189,72 @@ const hasResources = resourcesToShow.length > 0;
|
|
|
179
189
|
{/* Features Section */}
|
|
180
190
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
|
|
181
191
|
<div
|
|
182
|
-
class="group bg-
|
|
192
|
+
class="group bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] rounded-xl p-6 border border-[rgb(var(--ec-page-border))] hover:border-[rgb(var(--ec-accent))] hover:shadow-md transition-all duration-200"
|
|
183
193
|
>
|
|
184
194
|
<div
|
|
185
|
-
class="w-10 h-10 bg-
|
|
195
|
+
class="w-10 h-10 bg-[rgb(var(--ec-content-hover))] rounded-lg flex items-center justify-center mb-4 group-hover:bg-[rgb(var(--ec-accent-subtle))] transition-colors"
|
|
186
196
|
>
|
|
187
|
-
<svg
|
|
197
|
+
<svg
|
|
198
|
+
class="w-5 h-5 text-[rgb(var(--ec-page-text))]"
|
|
199
|
+
viewBox="0 0 24 24"
|
|
200
|
+
fill="none"
|
|
201
|
+
stroke="currentColor"
|
|
202
|
+
stroke-width="2"
|
|
203
|
+
>
|
|
188
204
|
<rect width="8" height="8" x="3" y="3" rx="2"></rect>
|
|
189
205
|
<path d="M7 11v4a2 2 0 0 0 2 2h4"></path>
|
|
190
206
|
<rect width="8" height="8" x="13" y="13" rx="2"></rect>
|
|
191
207
|
</svg>
|
|
192
208
|
</div>
|
|
193
|
-
<h3 class="text-base font-semibold text-
|
|
194
|
-
<p class="text-sm text-
|
|
209
|
+
<h3 class="text-base font-semibold text-[rgb(var(--ec-page-text))] mb-2">Real Resources</h3>
|
|
210
|
+
<p class="text-sm text-[rgb(var(--ec-page-text-muted))] leading-relaxed">
|
|
195
211
|
Drag and drop messages, services, and domains from your catalog. No more copying names or keeping things in sync.
|
|
196
212
|
</p>
|
|
197
213
|
</div>
|
|
198
214
|
|
|
199
215
|
<div
|
|
200
|
-
class="group bg-
|
|
216
|
+
class="group bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] rounded-xl p-6 border border-[rgb(var(--ec-page-border))] hover:border-[rgb(var(--ec-accent))] hover:shadow-md transition-all duration-200"
|
|
201
217
|
>
|
|
202
218
|
<div
|
|
203
|
-
class="w-10 h-10 bg-
|
|
219
|
+
class="w-10 h-10 bg-[rgb(var(--ec-content-hover))] rounded-lg flex items-center justify-center mb-4 group-hover:bg-[rgb(var(--ec-accent-subtle))] transition-colors"
|
|
204
220
|
>
|
|
205
|
-
<svg
|
|
221
|
+
<svg
|
|
222
|
+
class="w-5 h-5 text-[rgb(var(--ec-page-text))]"
|
|
223
|
+
viewBox="0 0 24 24"
|
|
224
|
+
fill="none"
|
|
225
|
+
stroke="currentColor"
|
|
226
|
+
stroke-width="2"
|
|
227
|
+
>
|
|
206
228
|
<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"></path>
|
|
207
229
|
<polyline points="17 21 17 13 7 13 7 21"></polyline>
|
|
208
230
|
<polyline points="7 3 7 8 15 8"></polyline>
|
|
209
231
|
</svg>
|
|
210
232
|
</div>
|
|
211
|
-
<h3 class="text-base font-semibold text-
|
|
212
|
-
<p class="text-sm text-
|
|
233
|
+
<h3 class="text-base font-semibold text-[rgb(var(--ec-page-text))] mb-2">Save & Version</h3>
|
|
234
|
+
<p class="text-sm text-[rgb(var(--ec-page-text-muted))] leading-relaxed">
|
|
213
235
|
Save designs locally and store in Git. All designs and data is owned by you.
|
|
214
236
|
</p>
|
|
215
237
|
</div>
|
|
216
238
|
|
|
217
239
|
<div
|
|
218
|
-
class="group bg-
|
|
240
|
+
class="group bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] rounded-xl p-6 border border-[rgb(var(--ec-page-border))] hover:border-[rgb(var(--ec-accent))] hover:shadow-md transition-all duration-200"
|
|
219
241
|
>
|
|
220
242
|
<div
|
|
221
|
-
class="w-10 h-10 bg-
|
|
243
|
+
class="w-10 h-10 bg-[rgb(var(--ec-content-hover))] rounded-lg flex items-center justify-center mb-4 group-hover:bg-[rgb(var(--ec-accent-subtle))] transition-colors"
|
|
222
244
|
>
|
|
223
|
-
<svg
|
|
245
|
+
<svg
|
|
246
|
+
class="w-5 h-5 text-[rgb(var(--ec-page-text))]"
|
|
247
|
+
viewBox="0 0 24 24"
|
|
248
|
+
fill="none"
|
|
249
|
+
stroke="currentColor"
|
|
250
|
+
stroke-width="2"
|
|
251
|
+
>
|
|
224
252
|
<polyline points="16 18 22 12 16 6"></polyline>
|
|
225
253
|
<polyline points="8 6 2 12 8 18"></polyline>
|
|
226
254
|
</svg>
|
|
227
255
|
</div>
|
|
228
|
-
<h3 class="text-base font-semibold text-
|
|
229
|
-
<p class="text-sm text-
|
|
256
|
+
<h3 class="text-base font-semibold text-[rgb(var(--ec-page-text))] mb-2">Embed Anywhere</h3>
|
|
257
|
+
<p class="text-sm text-[rgb(var(--ec-page-text-muted))] leading-relaxed">
|
|
230
258
|
Drop diagrams directly into documentation pages. One source of truth for your architecture.
|
|
231
259
|
</p>
|
|
232
260
|
</div>
|
|
@@ -6,11 +6,11 @@ export function remarkDirectives() {
|
|
|
6
6
|
visit(tree, (node) => {
|
|
7
7
|
if (node.type === 'containerDirective') {
|
|
8
8
|
const blockTypes = {
|
|
9
|
-
info: 'bg-blue-50 border-l-4 border-blue-500',
|
|
10
|
-
warning: 'bg-yellow-50 border-l-4 border-yellow-500',
|
|
11
|
-
danger: 'bg-red-50 border-l-4 border-red-500',
|
|
12
|
-
tip: 'bg-green-50 border-l-4 border-green-500',
|
|
13
|
-
note: 'bg-gray-50 border-l-4 border-gray-500',
|
|
9
|
+
info: 'bg-blue-50 dark:bg-blue-950/50 border-l-4 border-blue-500 text-blue-700 dark:text-blue-200',
|
|
10
|
+
warning: 'bg-yellow-50 dark:bg-yellow-950/50 border-l-4 border-yellow-500 text-yellow-700 dark:text-yellow-200',
|
|
11
|
+
danger: 'bg-red-50 dark:bg-red-950/50 border-l-4 border-red-500 text-red-700 dark:text-red-200',
|
|
12
|
+
tip: 'bg-green-50 dark:bg-green-950/50 border-l-4 border-green-500 text-green-700 dark:text-green-200',
|
|
13
|
+
note: 'bg-gray-50 dark:bg-gray-950/50 border-l-4 border-gray-500 text-gray-700 dark:text-gray-200',
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
// Lucide icon paths
|
|
@@ -116,7 +116,7 @@ export function remarkDirectives() {
|
|
|
116
116
|
data: {
|
|
117
117
|
hName: 'div',
|
|
118
118
|
hProperties: {
|
|
119
|
-
class: 'prose prose-md w-full !max-w-none ',
|
|
119
|
+
class: 'prose prose-md dark:prose-invert w-full !max-w-none prose-p:my-1 prose-p:text-inherit',
|
|
120
120
|
},
|
|
121
121
|
},
|
|
122
122
|
children: contentChildren,
|
|
@@ -19,8 +19,8 @@ export const mermaid: RemarkPlugin<[]> = () => (tree) => {
|
|
|
19
19
|
node.type = 'html';
|
|
20
20
|
node.value = `
|
|
21
21
|
<div class="mermaid-block pb-4">
|
|
22
|
-
<div class="mermaid border border-
|
|
23
|
-
<p>Loading graph...</p>
|
|
22
|
+
<div class="mermaid border border-[rgb(var(--ec-page-border))] rounded-lg p-1" data-content="${escapeHtml(node.value)}">
|
|
23
|
+
<p class="text-[rgb(var(--ec-page-text-muted))]">Loading graph...</p>
|
|
24
24
|
</div>
|
|
25
25
|
</div>
|
|
26
26
|
`;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { atom } from 'nanostores';
|
|
2
|
+
|
|
3
|
+
const THEME_KEY = 'eventcatalog-theme';
|
|
4
|
+
|
|
5
|
+
export type Theme = 'light' | 'dark';
|
|
6
|
+
|
|
7
|
+
export const themeStore = atom<Theme>('light');
|
|
8
|
+
|
|
9
|
+
// Get system preference
|
|
10
|
+
const getSystemTheme = (): Theme => {
|
|
11
|
+
if (typeof window !== 'undefined' && window.matchMedia) {
|
|
12
|
+
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
13
|
+
}
|
|
14
|
+
return 'light';
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// Apply theme to document via data-theme attribute
|
|
18
|
+
const applyTheme = (theme: Theme) => {
|
|
19
|
+
if (typeof document !== 'undefined') {
|
|
20
|
+
document.documentElement.setAttribute('data-theme', theme);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// Initialize store from localStorage or system preference
|
|
25
|
+
const initStore = () => {
|
|
26
|
+
if (typeof window !== 'undefined') {
|
|
27
|
+
try {
|
|
28
|
+
const stored = localStorage.getItem(THEME_KEY) as Theme | null;
|
|
29
|
+
if (stored && (stored === 'light' || stored === 'dark')) {
|
|
30
|
+
// User has explicitly chosen a theme, use that
|
|
31
|
+
themeStore.set(stored);
|
|
32
|
+
applyTheme(stored);
|
|
33
|
+
} else {
|
|
34
|
+
// No stored preference, use system preference
|
|
35
|
+
const systemTheme = getSystemTheme();
|
|
36
|
+
themeStore.set(systemTheme);
|
|
37
|
+
applyTheme(systemTheme);
|
|
38
|
+
}
|
|
39
|
+
} catch (e) {
|
|
40
|
+
console.warn('Failed to load theme:', e);
|
|
41
|
+
const systemTheme = getSystemTheme();
|
|
42
|
+
applyTheme(systemTheme);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
if (typeof window !== 'undefined') {
|
|
48
|
+
initStore();
|
|
49
|
+
|
|
50
|
+
// Listen for system preference changes
|
|
51
|
+
if (window.matchMedia) {
|
|
52
|
+
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
|
|
53
|
+
// Only follow system preference if user hasn't explicitly set a theme
|
|
54
|
+
const stored = localStorage.getItem(THEME_KEY);
|
|
55
|
+
if (!stored) {
|
|
56
|
+
const newTheme = e.matches ? 'dark' : 'light';
|
|
57
|
+
themeStore.set(newTheme);
|
|
58
|
+
applyTheme(newTheme);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Listen for storage events (cross-tab sync)
|
|
64
|
+
window.addEventListener('storage', (e) => {
|
|
65
|
+
if (e.key === THEME_KEY) {
|
|
66
|
+
initStore();
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Listen for custom events (same-tab sync between instances)
|
|
71
|
+
window.addEventListener('theme-updated', () => {
|
|
72
|
+
initStore();
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export const setTheme = (theme: Theme) => {
|
|
77
|
+
themeStore.set(theme);
|
|
78
|
+
applyTheme(theme);
|
|
79
|
+
if (typeof window !== 'undefined') {
|
|
80
|
+
try {
|
|
81
|
+
localStorage.setItem(THEME_KEY, theme);
|
|
82
|
+
// Dispatch event to notify other store instances/components
|
|
83
|
+
window.dispatchEvent(new CustomEvent('theme-updated'));
|
|
84
|
+
} catch (e) {
|
|
85
|
+
console.warn('Failed to save theme:', e);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const toggleTheme = () => {
|
|
91
|
+
const current = themeStore.get();
|
|
92
|
+
setTheme(current === 'light' ? 'dark' : 'light');
|
|
93
|
+
};
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventCatalog Theme CSS Variables
|
|
3
|
+
*
|
|
4
|
+
* Override these variables in your eventcatalog.styles.css file to customize the theme.
|
|
5
|
+
* Example:
|
|
6
|
+
* :root[data-theme="light"] {
|
|
7
|
+
* --ec-header-bg: #1e293b;
|
|
8
|
+
* --ec-primary: #3b82f6;
|
|
9
|
+
* }
|
|
10
|
+
*
|
|
11
|
+
* Supported themes: light, dark (more can be added)
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/* Default/Light theme */
|
|
15
|
+
:root,
|
|
16
|
+
:root[data-theme="light"] {
|
|
17
|
+
/* Header */
|
|
18
|
+
--ec-header-bg: 255 255 255; /* #ffffff */
|
|
19
|
+
--ec-header-text: 15 23 42; /* #0f172a (slate-900) */
|
|
20
|
+
--ec-header-border: 226 232 240; /* #e2e8f0 (slate-200) */
|
|
21
|
+
|
|
22
|
+
/* Primary brand color */
|
|
23
|
+
--ec-primary: 168 85 247; /* #a855f7 */
|
|
24
|
+
--ec-primary-hover: 147 51 234; /* #9333ea */
|
|
25
|
+
|
|
26
|
+
/* Accent colors - used for selections, highlights, interactive elements */
|
|
27
|
+
--ec-accent: 168 85 247; /* #a855f7 (purple-500) */
|
|
28
|
+
--ec-accent-hover: 147 51 234; /* #9333ea (purple-600) */
|
|
29
|
+
--ec-accent-subtle: 243 232 255; /* #f3e8ff (purple-100) */
|
|
30
|
+
--ec-accent-text: 107 33 168; /* #6b21a8 (purple-800) */
|
|
31
|
+
--ec-accent-gradient-from: 168 85 247; /* #a855f7 (purple-500) */
|
|
32
|
+
--ec-accent-gradient-to: 126 34 206; /* #7e22ce (purple-700) */
|
|
33
|
+
|
|
34
|
+
/* Buttons */
|
|
35
|
+
--ec-button-bg: 15 23 42; /* #0f172a */
|
|
36
|
+
--ec-button-bg-hover: 30 41 59; /* #1e293b */
|
|
37
|
+
--ec-button-text: 255 255 255; /* #ffffff */
|
|
38
|
+
|
|
39
|
+
/* Dropdowns & menus */
|
|
40
|
+
--ec-dropdown-bg: 255 255 255; /* #ffffff */
|
|
41
|
+
--ec-dropdown-text: 51 65 85; /* #334155 (slate-700) */
|
|
42
|
+
--ec-dropdown-hover: 248 250 252; /* #f8fafc (slate-50) */
|
|
43
|
+
--ec-dropdown-border: 226 232 240; /* #e2e8f0 (slate-200) */
|
|
44
|
+
|
|
45
|
+
/* Icons */
|
|
46
|
+
--ec-icon-color: 100 116 139; /* #64748b (slate-500) */
|
|
47
|
+
--ec-icon-hover: 51 65 85; /* #334155 (slate-700) */
|
|
48
|
+
|
|
49
|
+
/* Sidebar / Vertical Nav (icon bar) */
|
|
50
|
+
--ec-sidebar-bg: 255 255 255; /* #ffffff */
|
|
51
|
+
--ec-sidebar-bg-gradient: 248 250 252; /* #f8fafc (slate-50) */
|
|
52
|
+
--ec-sidebar-border: 226 232 240; /* #e2e8f0 (slate-200) */
|
|
53
|
+
--ec-sidebar-text: 71 85 105; /* #475569 (slate-600) */
|
|
54
|
+
--ec-sidebar-active-bg: 15 23 42; /* #0f172a */
|
|
55
|
+
--ec-sidebar-active-text: 255 255 255; /* #ffffff */
|
|
56
|
+
--ec-sidebar-hover-bg: 15 23 42; /* #0f172a - black on hover like active */
|
|
57
|
+
|
|
58
|
+
/* Nested sidebar content */
|
|
59
|
+
--ec-content-bg: 255 255 255; /* #ffffff */
|
|
60
|
+
--ec-content-text: 15 23 42; /* #0f172a (slate-900) */
|
|
61
|
+
--ec-content-text-muted: 100 116 139; /* #64748b (slate-500) */
|
|
62
|
+
--ec-content-text-secondary: 71 85 105; /* #475569 (slate-600) */
|
|
63
|
+
--ec-content-border: 226 232 240; /* #e2e8f0 (slate-200) */
|
|
64
|
+
--ec-content-hover: 248 250 252; /* #f8fafc (slate-50) */
|
|
65
|
+
--ec-content-active: 245 243 255; /* #f5f3ff (violet-50) */
|
|
66
|
+
|
|
67
|
+
/* Input fields */
|
|
68
|
+
--ec-input-bg: 248 250 252; /* #f8fafc (slate-50) */
|
|
69
|
+
--ec-input-border: 226 232 240; /* #e2e8f0 (slate-200) */
|
|
70
|
+
--ec-input-text: 15 23 42; /* #0f172a */
|
|
71
|
+
--ec-input-placeholder: 148 163 184; /* #94a3b8 (slate-400) */
|
|
72
|
+
|
|
73
|
+
/* Group headers */
|
|
74
|
+
--ec-group-icon-bg: 241 245 249; /* #f1f5f9 (slate-100) */
|
|
75
|
+
--ec-group-icon-text: 71 85 105; /* #475569 (slate-600) */
|
|
76
|
+
|
|
77
|
+
/* Main content/docs area */
|
|
78
|
+
--ec-page-bg: 255 255 255; /* #ffffff */
|
|
79
|
+
--ec-page-text: 15 23 42; /* #0f172a */
|
|
80
|
+
--ec-page-text-muted: 100 116 139; /* #64748b */
|
|
81
|
+
--ec-page-border: 226 232 240; /* #e2e8f0 */
|
|
82
|
+
|
|
83
|
+
/* Card/elevated surfaces */
|
|
84
|
+
--ec-card-bg: 255 255 255; /* #ffffff */
|
|
85
|
+
|
|
86
|
+
/* Code blocks */
|
|
87
|
+
--ec-code-bg: 250 250 250; /* #fafafa - light for light mode */
|
|
88
|
+
|
|
89
|
+
/* Badge colors - light mode */
|
|
90
|
+
--ec-badge-domain-bg: 254 249 195; /* yellow-100 */
|
|
91
|
+
--ec-badge-domain-text: 161 98 7; /* yellow-700 */
|
|
92
|
+
--ec-badge-service-bg: 252 231 243; /* pink-100 */
|
|
93
|
+
--ec-badge-service-text: 190 24 93; /* pink-700 */
|
|
94
|
+
--ec-badge-event-bg: 254 243 199; /* amber-100 */
|
|
95
|
+
--ec-badge-event-text: 180 83 9; /* amber-700 */
|
|
96
|
+
--ec-badge-command-bg: 252 231 243; /* pink-100 */
|
|
97
|
+
--ec-badge-command-text: 190 24 93; /* pink-700 */
|
|
98
|
+
--ec-badge-query-bg: 243 232 255; /* purple-100 */
|
|
99
|
+
--ec-badge-query-text: 126 34 206; /* purple-700 */
|
|
100
|
+
--ec-badge-message-bg: 224 231 255; /* indigo-100 */
|
|
101
|
+
--ec-badge-message-text: 67 56 202; /* indigo-700 */
|
|
102
|
+
--ec-badge-design-bg: 204 251 241; /* teal-100 */
|
|
103
|
+
--ec-badge-design-text: 15 118 110; /* teal-700 */
|
|
104
|
+
--ec-badge-channel-bg: 224 231 255; /* indigo-100 */
|
|
105
|
+
--ec-badge-channel-text: 67 56 202; /* indigo-700 */
|
|
106
|
+
--ec-badge-default-bg: 243 244 246; /* gray-100 */
|
|
107
|
+
--ec-badge-default-text: 75 85 99; /* gray-600 */
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Dark theme */
|
|
111
|
+
:root[data-theme="dark"] {
|
|
112
|
+
/*
|
|
113
|
+
* Modern dark theme inspired by Mintlify
|
|
114
|
+
* Uses deep blacks with subtle cool undertones for a refined look
|
|
115
|
+
*/
|
|
116
|
+
|
|
117
|
+
/* Header - deep black with cool border */
|
|
118
|
+
--ec-header-bg: 13 17 23; /* #0d1117 - GitHub dark bg */
|
|
119
|
+
--ec-header-text: 240 246 252; /* #f0f6fc - soft white */
|
|
120
|
+
--ec-header-border: 33 38 45; /* #21262d - subtle border */
|
|
121
|
+
|
|
122
|
+
/* Accent colors - used for selections, highlights, interactive elements */
|
|
123
|
+
--ec-accent: 192 132 252; /* #c084fc (purple-400) */
|
|
124
|
+
--ec-accent-hover: 168 85 247; /* #a855f7 (purple-500) */
|
|
125
|
+
--ec-accent-subtle: 88 28 135 / 0.3; /* purple-900/30 */
|
|
126
|
+
--ec-accent-text: 216 180 254; /* #d8b4fe (purple-300) */
|
|
127
|
+
--ec-accent-gradient-from: 192 132 252; /* #c084fc (purple-400) */
|
|
128
|
+
--ec-accent-gradient-to: 168 85 247; /* #a855f7 (purple-500) */
|
|
129
|
+
|
|
130
|
+
/* Buttons - accent color for better visibility */
|
|
131
|
+
--ec-button-bg: 147 51 234; /* #9333ea - purple-600 */
|
|
132
|
+
--ec-button-bg-hover: 168 85 247; /* #a855f7 - purple-500 */
|
|
133
|
+
--ec-button-text: 255 255 255; /* #ffffff - white text */
|
|
134
|
+
|
|
135
|
+
/* Dropdowns & menus - elevated surface */
|
|
136
|
+
--ec-dropdown-bg: 22 27 34; /* #161b22 - slightly elevated */
|
|
137
|
+
--ec-dropdown-text: 201 209 217; /* #c9d1d9 */
|
|
138
|
+
--ec-dropdown-hover: 33 38 45; /* #21262d */
|
|
139
|
+
--ec-dropdown-border: 48 54 61; /* #30363d */
|
|
140
|
+
|
|
141
|
+
/* Icons - muted gray that pops on hover */
|
|
142
|
+
--ec-icon-color: 139 148 158; /* #8b949e */
|
|
143
|
+
--ec-icon-hover: 240 246 252; /* #f0f6fc */
|
|
144
|
+
|
|
145
|
+
/* Sidebar / Vertical Nav (icon bar) - darkest surface */
|
|
146
|
+
--ec-sidebar-bg: 13 17 23; /* #0d1117 */
|
|
147
|
+
--ec-sidebar-bg-gradient: 22 27 34; /* #161b22 */
|
|
148
|
+
--ec-sidebar-border: 33 38 45; /* #21262d */
|
|
149
|
+
--ec-sidebar-text: 139 148 158; /* #8b949e */
|
|
150
|
+
--ec-sidebar-active-bg: 48 54 61; /* #30363d - subtle highlight */
|
|
151
|
+
--ec-sidebar-active-text: 240 246 252; /* #f0f6fc */
|
|
152
|
+
--ec-sidebar-hover-bg: 33 38 45; /* #21262d */
|
|
153
|
+
|
|
154
|
+
/* Nested sidebar content */
|
|
155
|
+
--ec-content-bg: 13 17 23; /* #0d1117 */
|
|
156
|
+
--ec-content-text: 201 209 217; /* #c9d1d9 - softer than pure white */
|
|
157
|
+
--ec-content-text-muted: 139 148 158; /* #8b949e */
|
|
158
|
+
--ec-content-text-secondary: 139 148 158; /* #8b949e - muted for sidebar children */
|
|
159
|
+
--ec-content-border: 33 38 45; /* #21262d */
|
|
160
|
+
--ec-content-hover: 22 27 34; /* #161b22 */
|
|
161
|
+
--ec-content-active: 33 38 45; /* #21262d */
|
|
162
|
+
|
|
163
|
+
/* Input fields - subtle inset look */
|
|
164
|
+
--ec-input-bg: 13 17 23; /* #0d1117 */
|
|
165
|
+
--ec-input-border: 48 54 61; /* #30363d */
|
|
166
|
+
--ec-input-text: 240 246 252; /* #f0f6fc */
|
|
167
|
+
--ec-input-placeholder: 110 118 129; /* #6e7681 */
|
|
168
|
+
|
|
169
|
+
/* Group headers */
|
|
170
|
+
--ec-group-icon-bg: 33 38 45; /* #21262d */
|
|
171
|
+
--ec-group-icon-text: 201 209 217; /* #c9d1d9 */
|
|
172
|
+
|
|
173
|
+
/* Main content/docs area - base dark surface */
|
|
174
|
+
--ec-page-bg: 13 17 23; /* #0d1117 */
|
|
175
|
+
--ec-page-text: 240 246 252; /* #f0f6fc */
|
|
176
|
+
--ec-page-text-muted: 139 148 158; /* #8b949e */
|
|
177
|
+
--ec-page-border: 33 38 45; /* #21262d */
|
|
178
|
+
|
|
179
|
+
/* Card/elevated surfaces - for depth */
|
|
180
|
+
--ec-card-bg: 22 27 34; /* #161b22 */
|
|
181
|
+
|
|
182
|
+
/* Code blocks */
|
|
183
|
+
--ec-code-bg: 22 27 34; /* #161b22 - elevated dark surface */
|
|
184
|
+
|
|
185
|
+
/* Badge colors - dark mode (subtle with good contrast) */
|
|
186
|
+
--ec-badge-domain-bg: 113 63 18 / 0.3; /* yellow-900/30 */
|
|
187
|
+
--ec-badge-domain-text: 253 224 71; /* yellow-300 */
|
|
188
|
+
--ec-badge-service-bg: 131 24 67 / 0.3; /* pink-900/30 */
|
|
189
|
+
--ec-badge-service-text: 249 168 212; /* pink-300 */
|
|
190
|
+
--ec-badge-event-bg: 120 53 15 / 0.3; /* amber-900/30 */
|
|
191
|
+
--ec-badge-event-text: 252 211 77; /* amber-300 */
|
|
192
|
+
--ec-badge-command-bg: 131 24 67 / 0.3; /* pink-900/30 */
|
|
193
|
+
--ec-badge-command-text: 249 168 212; /* pink-300 */
|
|
194
|
+
--ec-badge-query-bg: 88 28 135 / 0.3; /* purple-900/30 */
|
|
195
|
+
--ec-badge-query-text: 216 180 254; /* purple-300 */
|
|
196
|
+
--ec-badge-message-bg: 49 46 129 / 0.3; /* indigo-900/30 */
|
|
197
|
+
--ec-badge-message-text: 165 180 252; /* indigo-300 */
|
|
198
|
+
--ec-badge-design-bg: 17 94 89 / 0.3; /* teal-900/30 */
|
|
199
|
+
--ec-badge-design-text: 94 234 212; /* teal-300 */
|
|
200
|
+
--ec-badge-channel-bg: 49 46 129 / 0.3; /* indigo-900/30 */
|
|
201
|
+
--ec-badge-channel-text: 165 180 252; /* indigo-300 */
|
|
202
|
+
--ec-badge-default-bg: 63 63 70 / 0.3; /* zinc-700/30 */
|
|
203
|
+
--ec-badge-default-text: 212 212 216; /* zinc-300 */
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Dark mode prose overrides for documentation content */
|
|
207
|
+
:root[data-theme="dark"] .prose {
|
|
208
|
+
--tw-prose-body: rgb(139 148 158); /* #8b949e - muted body text */
|
|
209
|
+
--tw-prose-headings: rgb(201 209 217); /* #c9d1d9 - soft white headings */
|
|
210
|
+
--tw-prose-lead: rgb(110 118 129); /* #6e7681 */
|
|
211
|
+
--tw-prose-links: rgb(168 85 247); /* purple-500 */
|
|
212
|
+
--tw-prose-bold: rgb(201 209 217); /* #c9d1d9 */
|
|
213
|
+
--tw-prose-counters: rgb(110 118 129); /* #6e7681 */
|
|
214
|
+
--tw-prose-bullets: rgb(72 79 88); /* #484f58 */
|
|
215
|
+
--tw-prose-hr: rgb(33 38 45); /* #21262d */
|
|
216
|
+
--tw-prose-quotes: rgb(201 209 217); /* #c9d1d9 */
|
|
217
|
+
--tw-prose-quote-borders: rgb(48 54 61); /* #30363d */
|
|
218
|
+
--tw-prose-captions: rgb(110 118 129); /* #6e7681 */
|
|
219
|
+
--tw-prose-code: rgb(201 209 217); /* #c9d1d9 */
|
|
220
|
+
--tw-prose-pre-code: rgb(139 148 158); /* #8b949e */
|
|
221
|
+
--tw-prose-pre-bg: rgb(22 27 34); /* #161b22 */
|
|
222
|
+
--tw-prose-th-borders: rgb(48 54 61); /* #30363d */
|
|
223
|
+
--tw-prose-td-borders: rgb(33 38 45); /* #21262d */
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
:root[data-theme="dark"] .prose code {
|
|
227
|
+
background-color: rgb(33 38 45); /* #21262d */
|
|
228
|
+
border-radius: 0.25rem;
|
|
229
|
+
padding: 0.125rem 0.375rem;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
:root[data-theme="dark"] .prose pre {
|
|
233
|
+
background-color: rgb(22 27 34); /* #161b22 */
|
|
234
|
+
border: 1px solid rgb(33 38 45); /* #21262d */
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
:root[data-theme="dark"] .prose a {
|
|
238
|
+
color: rgb(168 85 247); /* purple-500 */
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
:root[data-theme="dark"] .prose a:hover {
|
|
242
|
+
color: rgb(192 132 252); /* purple-400 */
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
:root[data-theme="dark"] .prose strong {
|
|
246
|
+
color: rgb(240 246 252); /* #f0f6fc */
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
:root[data-theme="dark"] .prose table th {
|
|
250
|
+
color: rgb(240 246 252); /* #f0f6fc */
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
:root[data-theme="dark"] .prose table td {
|
|
254
|
+
border-color: rgb(33 38 45); /* #21262d */
|
|
255
|
+
}
|