@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
|
@@ -47,24 +47,28 @@ const MessageCard = memo(({ message, compact = false }: { message: any; compact?
|
|
|
47
47
|
return (
|
|
48
48
|
<a
|
|
49
49
|
href={buildUrl(`/docs/${message.collection}/${message.data.id}/${message.data.version}`)}
|
|
50
|
-
className={`group block bg-
|
|
50
|
+
className={`group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-${color}-200 dark:border-${color}-500/30 rounded-lg shadow-sm hover:shadow-md hover:border-${color}-300 dark:hover:border-${color}-500/50 transition-all`}
|
|
51
51
|
>
|
|
52
52
|
<div className={compact ? 'p-3' : 'p-4'}>
|
|
53
53
|
<div className="flex items-center gap-2 mb-1">
|
|
54
|
-
<div className={`flex items-center justify-center w-7 h-7 bg-${color}-100 rounded-md`}>
|
|
55
|
-
<Icon className={`h-4 w-4 text-${color}-600`} />
|
|
54
|
+
<div className={`flex items-center justify-center w-7 h-7 bg-${color}-100 dark:bg-${color}-500/20 rounded-md`}>
|
|
55
|
+
<Icon className={`h-4 w-4 text-${color}-600 dark:text-${color}-400`} />
|
|
56
56
|
</div>
|
|
57
57
|
<h3
|
|
58
|
-
className={`font-semibold text-
|
|
58
|
+
className={`font-semibold text-[rgb(var(--ec-page-text))] group-hover:text-${color}-600 dark:group-hover:text-${color}-400 transition-colors truncate ${compact ? 'text-sm' : 'text-base'}`}
|
|
59
59
|
>
|
|
60
60
|
{message.data.name}
|
|
61
61
|
</h3>
|
|
62
|
-
<span
|
|
62
|
+
<span
|
|
63
|
+
className={`text-[10px] text-${color}-600 dark:text-${color}-400 font-medium bg-${color}-50 dark:bg-${color}-500/20 px-1.5 py-0.5 rounded flex-shrink-0`}
|
|
64
|
+
>
|
|
63
65
|
v{message.data.version}
|
|
64
66
|
</span>
|
|
65
67
|
</div>
|
|
66
68
|
{message.data.summary && (
|
|
67
|
-
<p className={`text-
|
|
69
|
+
<p className={`text-[rgb(var(--ec-page-text-muted))] line-clamp-2 ${compact ? 'text-xs mt-1' : 'text-sm mt-2'}`}>
|
|
70
|
+
{message.data.summary}
|
|
71
|
+
</p>
|
|
68
72
|
)}
|
|
69
73
|
</div>
|
|
70
74
|
</a>
|
|
@@ -78,20 +82,28 @@ const ContainerCard = memo(({ container, type }: { container: any; type: 'reads'
|
|
|
78
82
|
return (
|
|
79
83
|
<a
|
|
80
84
|
href={buildUrl(`/docs/containers/${container.data.id}/${container.data.version}`)}
|
|
81
|
-
className={`group block bg-
|
|
82
|
-
type === 'reads'
|
|
85
|
+
className={`group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border rounded-lg shadow-sm hover:shadow-md transition-all ${
|
|
86
|
+
type === 'reads'
|
|
87
|
+
? 'border-amber-200 dark:border-amber-500/30 hover:border-amber-300 dark:hover:border-amber-500/50'
|
|
88
|
+
: 'border-violet-200 dark:border-violet-500/30 hover:border-violet-300 dark:hover:border-violet-500/50'
|
|
83
89
|
}`}
|
|
84
90
|
>
|
|
85
91
|
<div className="p-3">
|
|
86
92
|
<div className="flex items-center gap-2">
|
|
87
|
-
<div
|
|
88
|
-
|
|
93
|
+
<div
|
|
94
|
+
className={`flex items-center justify-center w-7 h-7 bg-${colorClass}-100 dark:bg-${colorClass}-500/20 rounded-md`}
|
|
95
|
+
>
|
|
96
|
+
<CircleStackIcon className={`h-4 w-4 text-${colorClass}-600 dark:text-${colorClass}-400`} />
|
|
89
97
|
</div>
|
|
90
|
-
<h3
|
|
98
|
+
<h3
|
|
99
|
+
className={`font-semibold text-[rgb(var(--ec-page-text))] text-sm group-hover:text-${colorClass}-600 dark:group-hover:text-${colorClass}-400 transition-colors truncate`}
|
|
100
|
+
>
|
|
91
101
|
{container.data.name}
|
|
92
102
|
</h3>
|
|
93
103
|
</div>
|
|
94
|
-
{container.data.summary &&
|
|
104
|
+
{container.data.summary && (
|
|
105
|
+
<p className="text-xs text-[rgb(var(--ec-page-text-muted))] mt-1.5 line-clamp-2">{container.data.summary}</p>
|
|
106
|
+
)}
|
|
95
107
|
</div>
|
|
96
108
|
</a>
|
|
97
109
|
);
|
|
@@ -105,14 +117,16 @@ const SpecificationCard = memo(
|
|
|
105
117
|
return (
|
|
106
118
|
<a
|
|
107
119
|
href={getSpecUrl(spec, serviceId, serviceVersion)}
|
|
108
|
-
className={`group flex items-center gap-3 p-3 bg-
|
|
120
|
+
className={`group flex items-center gap-3 p-3 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-${color}-200 dark:border-${color}-500/30 rounded-lg shadow-sm hover:shadow-md hover:border-${color}-300 dark:hover:border-${color}-500/50 transition-all`}
|
|
109
121
|
>
|
|
110
122
|
<img src={buildUrl(`/icons/${getSpecIcon(spec.type)}.svg`, true)} alt={`${spec.type} icon`} className="h-6 w-6" />
|
|
111
123
|
<div className="flex-1 min-w-0">
|
|
112
|
-
<h3
|
|
124
|
+
<h3
|
|
125
|
+
className={`font-semibold text-[rgb(var(--ec-page-text))] text-sm group-hover:text-${color}-600 dark:group-hover:text-${color}-400 transition-colors truncate`}
|
|
126
|
+
>
|
|
113
127
|
{spec.name || spec.filename}
|
|
114
128
|
</h3>
|
|
115
|
-
<p className="text-xs text-
|
|
129
|
+
<p className="text-xs text-[rgb(var(--ec-page-text-muted))]">{getSpecLabel(spec.type)}</p>
|
|
116
130
|
</div>
|
|
117
131
|
</a>
|
|
118
132
|
);
|
|
@@ -140,19 +154,21 @@ const CollapsibleMessageSection = memo(
|
|
|
140
154
|
const hasContent = messages.length > 0;
|
|
141
155
|
|
|
142
156
|
return (
|
|
143
|
-
<div className="bg-
|
|
157
|
+
<div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-sm overflow-hidden">
|
|
144
158
|
<div
|
|
145
159
|
onClick={() => setIsCollapsed(!isCollapsed)}
|
|
146
|
-
className={`flex items-center justify-between px-5 py-4 cursor-pointer hover:bg-
|
|
160
|
+
className={`flex items-center justify-between px-5 py-4 cursor-pointer hover:bg-[rgb(var(--ec-content-hover))] transition-colors ${!isCollapsed && hasContent ? 'border-b border-[rgb(var(--ec-page-border))]' : ''}`}
|
|
147
161
|
>
|
|
148
162
|
<div className="flex items-center gap-3">
|
|
149
|
-
<div className={`flex items-center justify-center w-8 h-8 bg-${color}-100 rounded-lg`}>
|
|
150
|
-
<Icon className={`h-4 w-4 text-${color}-600`} />
|
|
163
|
+
<div className={`flex items-center justify-center w-8 h-8 bg-${color}-100 dark:bg-${color}-500/20 rounded-lg`}>
|
|
164
|
+
<Icon className={`h-4 w-4 text-${color}-600 dark:text-${color}-400`} />
|
|
151
165
|
</div>
|
|
152
|
-
<h2 className="text-base font-bold text-
|
|
153
|
-
<span className="text-sm text-
|
|
166
|
+
<h2 className="text-base font-bold text-[rgb(var(--ec-page-text))]">{title}</h2>
|
|
167
|
+
<span className="text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] px-2 py-0.5 rounded-full font-medium">
|
|
168
|
+
{messages.length}
|
|
169
|
+
</span>
|
|
154
170
|
</div>
|
|
155
|
-
<div className="text-
|
|
171
|
+
<div className="text-[rgb(var(--ec-icon-color))]">
|
|
156
172
|
{isCollapsed ? <ChevronDownIcon className="h-5 w-5" /> : <ChevronUpIcon className="h-5 w-5" />}
|
|
157
173
|
</div>
|
|
158
174
|
</div>
|
|
@@ -166,7 +182,7 @@ const CollapsibleMessageSection = memo(
|
|
|
166
182
|
</div>
|
|
167
183
|
) : (
|
|
168
184
|
<div className="text-center py-4">
|
|
169
|
-
<p className="text-sm text-
|
|
185
|
+
<p className="text-sm text-[rgb(var(--ec-icon-color))]">{emptyText}</p>
|
|
170
186
|
</div>
|
|
171
187
|
)}
|
|
172
188
|
</div>
|
|
@@ -182,19 +198,21 @@ const CollapsibleContainerSection = memo(
|
|
|
182
198
|
const [isCollapsed, setIsCollapsed] = useState(false);
|
|
183
199
|
|
|
184
200
|
return (
|
|
185
|
-
<div className="bg-
|
|
201
|
+
<div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-sm overflow-hidden">
|
|
186
202
|
<div
|
|
187
203
|
onClick={() => setIsCollapsed(!isCollapsed)}
|
|
188
|
-
className={`flex items-center justify-between px-5 py-4 cursor-pointer hover:bg-
|
|
204
|
+
className={`flex items-center justify-between px-5 py-4 cursor-pointer hover:bg-[rgb(var(--ec-content-hover))] transition-colors ${!isCollapsed ? 'border-b border-[rgb(var(--ec-page-border))]' : ''}`}
|
|
189
205
|
>
|
|
190
206
|
<div className="flex items-center gap-3">
|
|
191
|
-
<div className={`flex items-center justify-center w-8 h-8 bg-${color}-100 rounded-lg`}>
|
|
192
|
-
<CircleStackIcon className={`h-4 w-4 text-${color}-600`} />
|
|
207
|
+
<div className={`flex items-center justify-center w-8 h-8 bg-${color}-100 dark:bg-${color}-500/20 rounded-lg`}>
|
|
208
|
+
<CircleStackIcon className={`h-4 w-4 text-${color}-600 dark:text-${color}-400`} />
|
|
193
209
|
</div>
|
|
194
|
-
<h2 className="text-base font-bold text-
|
|
195
|
-
<span className="text-sm text-
|
|
210
|
+
<h2 className="text-base font-bold text-[rgb(var(--ec-page-text))]">{title}</h2>
|
|
211
|
+
<span className="text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] px-2 py-0.5 rounded-full font-medium">
|
|
212
|
+
{containers.length}
|
|
213
|
+
</span>
|
|
196
214
|
</div>
|
|
197
|
-
<div className="text-
|
|
215
|
+
<div className="text-[rgb(var(--ec-icon-color))]">
|
|
198
216
|
{isCollapsed ? <ChevronDownIcon className="h-5 w-5" /> : <ChevronUpIcon className="h-5 w-5" />}
|
|
199
217
|
</div>
|
|
200
218
|
</div>
|
|
@@ -221,26 +239,28 @@ export default function MessageGridV2({ service, embeded = false, specifications
|
|
|
221
239
|
return (
|
|
222
240
|
<div className="w-full">
|
|
223
241
|
{/* Service Header - Doc style */}
|
|
224
|
-
<div className="border-b border-
|
|
242
|
+
<div className="border-b border-[rgb(var(--ec-page-border))] md:pb-4">
|
|
225
243
|
<div className="flex items-start justify-between">
|
|
226
244
|
<div>
|
|
227
|
-
<h2 className="text-2xl md:text-4xl font-bold text-
|
|
228
|
-
{service.data.summary &&
|
|
245
|
+
<h2 className="text-2xl md:text-4xl font-bold text-[rgb(var(--ec-page-text))]">{service.data.name}</h2>
|
|
246
|
+
{service.data.summary && (
|
|
247
|
+
<p className="text-lg pt-2 text-[rgb(var(--ec-page-text-muted))] font-light">{service.data.summary}</p>
|
|
248
|
+
)}
|
|
229
249
|
</div>
|
|
230
250
|
<div className="flex items-center gap-2 flex-shrink-0">
|
|
231
251
|
<a
|
|
232
252
|
href={buildUrl(`/docs/services/${service.data.id}/${service.data.version}`)}
|
|
233
|
-
className="inline-flex items-center gap-1.5 px-3 py-2 text-sm font-medium text-
|
|
253
|
+
className="inline-flex items-center gap-1.5 px-3 py-2 text-sm 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-lg hover:bg-[rgb(var(--ec-content-hover))] hover:border-[rgb(var(--ec-page-text-muted))] transition-all"
|
|
234
254
|
>
|
|
235
255
|
View docs
|
|
236
|
-
<ArrowTopRightOnSquareIcon className="h-4 w-4 text-
|
|
256
|
+
<ArrowTopRightOnSquareIcon className="h-4 w-4 text-[rgb(var(--ec-icon-color))]" />
|
|
237
257
|
</a>
|
|
238
258
|
<a
|
|
239
259
|
href={buildUrl(`/visualiser/services/${service.data.id}/${service.data.version}`)}
|
|
240
|
-
className="inline-flex items-center gap-1.5 px-3 py-2 text-sm font-medium text-white bg-
|
|
260
|
+
className="inline-flex items-center gap-1.5 px-3 py-2 text-sm font-medium text-white bg-zinc-800 dark:bg-zinc-700 rounded-lg hover:bg-zinc-900 dark:hover:bg-zinc-600 transition-all"
|
|
241
261
|
>
|
|
242
262
|
Visualizer
|
|
243
|
-
<ArrowTopRightOnSquareIcon className="h-4 w-4 text-
|
|
263
|
+
<ArrowTopRightOnSquareIcon className="h-4 w-4 text-zinc-400" />
|
|
244
264
|
</a>
|
|
245
265
|
</div>
|
|
246
266
|
</div>
|
|
@@ -252,8 +272,8 @@ export default function MessageGridV2({ service, embeded = false, specifications
|
|
|
252
272
|
{hasSpecs && (
|
|
253
273
|
<div>
|
|
254
274
|
<div className="flex items-center gap-2 mb-4">
|
|
255
|
-
<h3 className="text-lg font-semibold text-
|
|
256
|
-
<span className="text-sm text-
|
|
275
|
+
<h3 className="text-lg font-semibold text-[rgb(var(--ec-page-text))]">Specifications</h3>
|
|
276
|
+
<span className="text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] px-2.5 py-0.5 rounded-full font-medium">
|
|
257
277
|
{specifications.length}
|
|
258
278
|
</span>
|
|
259
279
|
</div>
|
|
@@ -274,9 +294,9 @@ export default function MessageGridV2({ service, embeded = false, specifications
|
|
|
274
294
|
{hasMessages && (
|
|
275
295
|
<div>
|
|
276
296
|
<div className="flex items-center gap-2 mb-4">
|
|
277
|
-
<BoltIcon className="h-5 w-5 text-orange-500" />
|
|
278
|
-
<h3 className="text-lg font-semibold text-
|
|
279
|
-
<span className="text-sm text-
|
|
297
|
+
<BoltIcon className="h-5 w-5 text-orange-500 dark:text-orange-400" />
|
|
298
|
+
<h3 className="text-lg font-semibold text-[rgb(var(--ec-page-text))]">Messages</h3>
|
|
299
|
+
<span className="text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] px-2.5 py-0.5 rounded-full font-medium">
|
|
280
300
|
{receives.length + sends.length}
|
|
281
301
|
</span>
|
|
282
302
|
</div>
|
|
@@ -305,9 +325,9 @@ export default function MessageGridV2({ service, embeded = false, specifications
|
|
|
305
325
|
{hasContainers && (
|
|
306
326
|
<div>
|
|
307
327
|
<div className="flex items-center gap-2 mb-4">
|
|
308
|
-
<CircleStackIcon className="h-5 w-5 text-amber-500" />
|
|
309
|
-
<h3 className="text-lg font-semibold text-
|
|
310
|
-
<span className="text-sm text-
|
|
328
|
+
<CircleStackIcon className="h-5 w-5 text-amber-500 dark:text-amber-400" />
|
|
329
|
+
<h3 className="text-lg font-semibold text-[rgb(var(--ec-page-text))]">Data Sources</h3>
|
|
330
|
+
<span className="text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] px-2.5 py-0.5 rounded-full font-medium">
|
|
311
331
|
{readsFrom.length + writesTo.length}
|
|
312
332
|
</span>
|
|
313
333
|
</div>
|
|
@@ -325,10 +345,10 @@ export default function MessageGridV2({ service, embeded = false, specifications
|
|
|
325
345
|
{/* Empty State */}
|
|
326
346
|
{!hasMessages && !hasContainers && !hasSpecs && (
|
|
327
347
|
<div className="text-center py-12">
|
|
328
|
-
<div className="flex items-center justify-center w-16 h-16 mx-auto mb-4 bg-
|
|
329
|
-
<ServerIcon className="h-8 w-8 text-
|
|
348
|
+
<div className="flex items-center justify-center w-16 h-16 mx-auto mb-4 bg-[rgb(var(--ec-content-hover))] rounded-2xl">
|
|
349
|
+
<ServerIcon className="h-8 w-8 text-[rgb(var(--ec-icon-color))]" />
|
|
330
350
|
</div>
|
|
331
|
-
<p className="text-
|
|
351
|
+
<p className="text-[rgb(var(--ec-page-text-muted))]">
|
|
332
352
|
This service has no message flows, container relationships, or specifications defined.
|
|
333
353
|
</p>
|
|
334
354
|
</div>
|
|
@@ -7,6 +7,7 @@ import { getSession } from 'auth-astro/server';
|
|
|
7
7
|
import { isAuthEnabled, isSSR } from '@utils/feature';
|
|
8
8
|
import { EnvironmentDropdown } from './EnvironmentDropdown';
|
|
9
9
|
import ChatPanelButton from './ChatPanel/ChatPanelButton';
|
|
10
|
+
import ThemeToggle from './ThemeToggle';
|
|
10
11
|
|
|
11
12
|
let session = null;
|
|
12
13
|
if (isAuthEnabled()) {
|
|
@@ -24,7 +25,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
24
25
|
|
|
25
26
|
<nav
|
|
26
27
|
id="eventcatalog-header"
|
|
27
|
-
class="fixed top-0 left-0 right-0 h-header bg-
|
|
28
|
+
class="fixed top-0 left-0 right-0 h-header bg-[rgb(var(--ec-header-bg))] border-b border-[rgb(var(--ec-header-border))] py-3 font-bold text-xl z-10 text-[rgb(var(--ec-header-text))]"
|
|
28
29
|
>
|
|
29
30
|
<div class="px-4 sm:px-4 lg:px-4">
|
|
30
31
|
<div class="flex justify-between items-center">
|
|
@@ -57,6 +58,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
57
58
|
{catalog.environments && catalog.environments.length > 0 && (
|
|
58
59
|
<EnvironmentDropdown environments={catalog.environments} client:load />
|
|
59
60
|
)}
|
|
61
|
+
<ThemeToggle client:load />
|
|
60
62
|
<div class="relative">
|
|
61
63
|
<button
|
|
62
64
|
id="profile-menu-button"
|
|
@@ -87,15 +89,17 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
87
89
|
</button>
|
|
88
90
|
<div
|
|
89
91
|
id="profile-dropdown"
|
|
90
|
-
class="hidden absolute right-0 mt-2 w-48 bg-
|
|
92
|
+
class="hidden absolute right-0 mt-2 w-48 bg-[rgb(var(--ec-dropdown-bg))] rounded-lg shadow-md py-1 z-50 border-2 border-[rgb(var(--ec-dropdown-border))] overflow-hidden"
|
|
91
93
|
>
|
|
92
|
-
<div class="px-4 py-2 text-sm text-
|
|
94
|
+
<div class="px-4 py-2 text-sm text-[rgb(var(--ec-dropdown-text))] border-b border-[rgb(var(--ec-dropdown-border))]">
|
|
93
95
|
<div class="font-semibold">{session.user?.name || 'User'}</div>
|
|
94
|
-
{session.user?.email &&
|
|
96
|
+
{session.user?.email && (
|
|
97
|
+
<div class="text-[rgb(var(--ec-icon-color))] text-xs mt-0.5">{session.user.email}</div>
|
|
98
|
+
)}
|
|
95
99
|
</div>
|
|
96
100
|
<button
|
|
97
101
|
id="signout-btn"
|
|
98
|
-
class="block w-full text-left px-4 py-2 text-sm text-
|
|
102
|
+
class="block w-full text-left px-4 py-2 text-sm text-[rgb(var(--ec-dropdown-text))] hover:bg-[rgb(var(--ec-dropdown-hover))] transition-colors font-medium"
|
|
99
103
|
>
|
|
100
104
|
Sign out
|
|
101
105
|
</button>
|
|
@@ -111,17 +115,18 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
111
115
|
{isAuthEnabled() && (
|
|
112
116
|
<button
|
|
113
117
|
id="okta-signin-btn"
|
|
114
|
-
class="bg-
|
|
118
|
+
class="bg-[rgb(var(--ec-button-bg))] hover:bg-[rgb(var(--ec-button-bg-hover))] text-[rgb(var(--ec-button-text))] text-sm font-medium px-4 py-2 rounded-lg transition-all shadow-sm hover:shadow focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500"
|
|
115
119
|
>
|
|
116
120
|
Sign In
|
|
117
121
|
</button>
|
|
118
122
|
)}
|
|
123
|
+
<ThemeToggle client:load />
|
|
119
124
|
{showEventCatalogBranding() && (
|
|
120
125
|
<ul class="flex space-x-4">
|
|
121
126
|
<li>
|
|
122
127
|
<a
|
|
123
128
|
href="https://discord.com/invite/3rjaZMmrAm"
|
|
124
|
-
class="block p-1.5 rounded-lg hover:bg-
|
|
129
|
+
class="block p-1.5 rounded-lg hover:bg-[rgb(var(--ec-dropdown-hover))] transition-colors"
|
|
125
130
|
aria-label="Join our Discord community"
|
|
126
131
|
>
|
|
127
132
|
<img
|
|
@@ -135,7 +140,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
135
140
|
<li>
|
|
136
141
|
<a
|
|
137
142
|
href="https://github.com/event-catalog/eventcatalog"
|
|
138
|
-
class="block p-1.5 rounded-lg hover:bg-
|
|
143
|
+
class="block p-1.5 rounded-lg hover:bg-[rgb(var(--ec-dropdown-hover))] transition-colors"
|
|
139
144
|
aria-label="View EventCatalog on GitHub"
|
|
140
145
|
>
|
|
141
146
|
<img
|
|
@@ -153,7 +158,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
153
158
|
<li>
|
|
154
159
|
<a
|
|
155
160
|
href={repositoryUrl}
|
|
156
|
-
class="block p-1.5 rounded-lg hover:bg-
|
|
161
|
+
class="block p-1.5 rounded-lg hover:bg-[rgb(var(--ec-dropdown-hover))] transition-colors focus:outline-none"
|
|
157
162
|
aria-label="View repository on GitHub"
|
|
158
163
|
>
|
|
159
164
|
<img
|
|
@@ -176,7 +181,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
176
181
|
<button
|
|
177
182
|
id="menu-toggle"
|
|
178
183
|
type="button"
|
|
179
|
-
class="text-
|
|
184
|
+
class="text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-icon-hover))] focus:outline-none focus:text-[rgb(var(--ec-icon-hover))]"
|
|
180
185
|
aria-label="Toggle menu"
|
|
181
186
|
>
|
|
182
187
|
<svg viewBox="0 0 24 24" class="h-6 w-6 fill-current">
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/react';
|
|
2
2
|
import { ChevronDownIcon } from '@heroicons/react/20/solid';
|
|
3
3
|
import { UserGroupIcon, UserIcon } from '@heroicons/react/24/outline';
|
|
4
|
+
import './PillListFlat.styles.css';
|
|
4
5
|
|
|
5
6
|
interface Props {
|
|
6
7
|
title: string;
|
|
@@ -17,30 +18,36 @@ interface Props {
|
|
|
17
18
|
const OwnersList = ({ title, owners, emptyMessage }: Props) => {
|
|
18
19
|
return (
|
|
19
20
|
<div>
|
|
20
|
-
<div className="mx-auto w-full max-w-lg divide-y divide-
|
|
21
|
+
<div className="mx-auto w-full max-w-lg divide-y divide-[rgb(var(--ec-page-border))] rounded-xl">
|
|
21
22
|
<Disclosure as="div" className="" defaultOpen={owners.length <= 5}>
|
|
22
23
|
<DisclosureButton className="group flex w-full items-center justify-start space-x-4">
|
|
23
|
-
<span className="text-sm text-
|
|
24
|
-
|
|
24
|
+
<span className="text-sm text-[rgb(var(--ec-page-text))] font-semibold group-data-[hover]:opacity-80 capitalize">
|
|
25
|
+
{' '}
|
|
26
|
+
{title}{' '}
|
|
27
|
+
</span>
|
|
28
|
+
<ChevronDownIcon className="size-5 fill-[rgb(var(--ec-icon-color))] group-data-[hover]:opacity-80 group-data-[open]:rotate-180" />
|
|
25
29
|
</DisclosureButton>
|
|
26
|
-
<DisclosurePanel className="mt-2 text-sm/5 text-
|
|
30
|
+
<DisclosurePanel className="mt-2 text-sm/5 text-[rgb(var(--ec-page-text-muted))]">
|
|
27
31
|
<ul role="list" className="space-y-2">
|
|
28
32
|
{owners.map((item) => {
|
|
29
33
|
return (
|
|
30
34
|
<li
|
|
31
|
-
className="has-tooltip rounded-md text-
|
|
35
|
+
className="owner-item has-tooltip rounded-md text-[rgb(var(--ec-page-text-muted))] group px-1 w-full hover:text-white hover:font-normal"
|
|
32
36
|
key={item.href}
|
|
33
37
|
>
|
|
34
38
|
<a className={`flex items-center space-x-2`} href={item.href}>
|
|
35
39
|
{item.type === 'users' && (
|
|
36
|
-
<UserIcon className="h-4 w-4 text-
|
|
40
|
+
<UserIcon className="h-4 w-4 text-[rgb(var(--ec-page-text))] group-hover:text-white" strokeWidth={1} />
|
|
37
41
|
)}
|
|
38
42
|
{item.type === 'teams' && (
|
|
39
|
-
<UserGroupIcon
|
|
43
|
+
<UserGroupIcon
|
|
44
|
+
className="h-4 w-4 text-[rgb(var(--ec-page-text))] group-hover:text-white"
|
|
45
|
+
strokeWidth={1}
|
|
46
|
+
/>
|
|
40
47
|
)}
|
|
41
48
|
<span className="font-light text-sm truncate">{item.label}</span>
|
|
42
49
|
{item.label.length > 24 && (
|
|
43
|
-
<span className="tooltip rounded relative shadow-lg p-1 font-normal text-xs bg-
|
|
50
|
+
<span className="tooltip rounded relative shadow-lg p-1 font-normal text-xs bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] border border-[rgb(var(--ec-page-border))] ml-[30px] mt-12">
|
|
44
51
|
{item.label}
|
|
45
52
|
</span>
|
|
46
53
|
)}
|
|
@@ -50,14 +57,14 @@ const OwnersList = ({ title, owners, emptyMessage }: Props) => {
|
|
|
50
57
|
})}
|
|
51
58
|
{owners.length === 0 && (
|
|
52
59
|
<li className="inline mr-2 leading-6 text-sm">
|
|
53
|
-
<span className="text-
|
|
60
|
+
<span className="text-[rgb(var(--ec-page-text-muted))]">{emptyMessage}</span>
|
|
54
61
|
</li>
|
|
55
62
|
)}
|
|
56
63
|
</ul>
|
|
57
64
|
</DisclosurePanel>
|
|
58
65
|
</Disclosure>
|
|
59
66
|
</div>
|
|
60
|
-
<div className="border-b border-
|
|
67
|
+
<div className="border-b border-[rgb(var(--ec-page-border))] my-4"></div>
|
|
61
68
|
</div>
|
|
62
69
|
);
|
|
63
70
|
};
|
|
@@ -5,4 +5,16 @@
|
|
|
5
5
|
.has-tooltip:hover .tooltip {
|
|
6
6
|
visibility: visible;
|
|
7
7
|
z-index: 100;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.pill-item:hover {
|
|
11
|
+
background: linear-gradient(to left, rgb(var(--ec-accent-gradient-from)), rgb(var(--ec-accent-gradient-to)));
|
|
12
|
+
color: white;
|
|
13
|
+
font-weight: normal;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.owner-item:hover {
|
|
17
|
+
background: linear-gradient(to left, rgb(var(--ec-accent-gradient-from)), rgb(var(--ec-accent-gradient-to)));
|
|
18
|
+
color: white;
|
|
19
|
+
font-weight: normal;
|
|
8
20
|
}
|
|
@@ -66,10 +66,7 @@ const PillList = ({ title, pills, emptyMessage, color = 'gray', limit = 10, ...p
|
|
|
66
66
|
const PillIcon = item.icon ? (icons as any)[item.icon] : null;
|
|
67
67
|
|
|
68
68
|
return (
|
|
69
|
-
<li
|
|
70
|
-
className=" has-tooltip rounded-md text-gray-600 group px-1 w-full hover:bg-gradient-to-l hover:from-purple-500 hover:to-purple-700 hover:text-white hover:font-normal "
|
|
71
|
-
key={item.href}
|
|
72
|
-
>
|
|
69
|
+
<li className="pill-item has-tooltip rounded-md text-[rgb(var(--ec-page-text-muted))] group px-1 w-full" key={item.href}>
|
|
73
70
|
<a className={`leading-3`} href={href} target={item.target ?? '_self'}>
|
|
74
71
|
<span className="space-x-2 flex items-center">
|
|
75
72
|
{Icon && !PillIcon && <Icon className="h-4 w-4 shrink-0" />}
|
|
@@ -78,7 +75,7 @@ const PillList = ({ title, pills, emptyMessage, color = 'gray', limit = 10, ...p
|
|
|
78
75
|
{item.label} {item.tag && <>({item.tag})</>}
|
|
79
76
|
</span>
|
|
80
77
|
{item.label.length > 24 && (
|
|
81
|
-
<span className="tooltip rounded relative shadow-lg p-1 font-normal text-xs bg-
|
|
78
|
+
<span className="tooltip rounded relative shadow-lg p-1 font-normal text-xs bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] border border-[rgb(var(--ec-page-border))] ml-[30px] mt-12">
|
|
82
79
|
{item.label} {item.tag && <>({item.tag})</>}
|
|
83
80
|
</span>
|
|
84
81
|
)}
|
|
@@ -91,13 +88,16 @@ const PillList = ({ title, pills, emptyMessage, color = 'gray', limit = 10, ...p
|
|
|
91
88
|
|
|
92
89
|
return (
|
|
93
90
|
<div className="">
|
|
94
|
-
<div className="mx-auto w-full max-w-lg divide-y divide-
|
|
91
|
+
<div className="mx-auto w-full max-w-lg divide-y divide-[rgb(var(--ec-page-border))] rounded-xl">
|
|
95
92
|
<Disclosure as="div" className="" defaultOpen={pills.length <= limit}>
|
|
96
93
|
<DisclosureButton className="group flex w-full items-center justify-start space-x-4">
|
|
97
|
-
<span className="text-sm text-
|
|
98
|
-
|
|
94
|
+
<span className="text-sm text-[rgb(var(--ec-page-text))] font-semibold group-data-[hover]:opacity-80 capitalize">
|
|
95
|
+
{' '}
|
|
96
|
+
{title}{' '}
|
|
97
|
+
</span>
|
|
98
|
+
<ChevronDownIcon className="size-5 ml-2 fill-[rgb(var(--ec-icon-color))] group-data-[hover]:opacity-80 group-data-[open]:rotate-180" />
|
|
99
99
|
</DisclosureButton>
|
|
100
|
-
<DisclosurePanel className="mt-2 text-sm/5 text-
|
|
100
|
+
<DisclosurePanel className="mt-2 text-sm/5 text-[rgb(var(--ec-page-text-muted))]">
|
|
101
101
|
<div className="space-y-2">
|
|
102
102
|
{groupedPills.ungrouped.length > 0 && (
|
|
103
103
|
<ul role="list" className="space-y-2">
|
|
@@ -115,10 +115,10 @@ const PillList = ({ title, pills, emptyMessage, color = 'gray', limit = 10, ...p
|
|
|
115
115
|
e.stopPropagation();
|
|
116
116
|
toggleSubgroup(subgroupName);
|
|
117
117
|
}}
|
|
118
|
-
className="p-1 hover:bg-
|
|
118
|
+
className="p-1 hover:bg-[rgb(var(--ec-content-hover))] rounded-md"
|
|
119
119
|
>
|
|
120
120
|
<div className={`transition-transform duration-150 ${isCollapsed ? '' : 'rotate-180'}`}>
|
|
121
|
-
<ChevronDownIcon className="h-3 w-3 text-
|
|
121
|
+
<ChevronDownIcon className="h-3 w-3 text-[rgb(var(--ec-icon-color))]" />
|
|
122
122
|
</div>
|
|
123
123
|
</button>
|
|
124
124
|
<button
|
|
@@ -126,7 +126,7 @@ const PillList = ({ title, pills, emptyMessage, color = 'gray', limit = 10, ...p
|
|
|
126
126
|
e.stopPropagation();
|
|
127
127
|
toggleSubgroup(subgroupName);
|
|
128
128
|
}}
|
|
129
|
-
className="flex-grow flex items-center justify-between px-2 py-0.5 text-xs font-bold rounded-md text-
|
|
129
|
+
className="flex-grow flex items-center justify-between px-2 py-0.5 text-xs font-bold rounded-md text-[rgb(var(--ec-page-text))] uppercase"
|
|
130
130
|
>
|
|
131
131
|
{subgroupName} ({subgroupPills.length})
|
|
132
132
|
</button>
|
|
@@ -134,7 +134,7 @@ const PillList = ({ title, pills, emptyMessage, color = 'gray', limit = 10, ...p
|
|
|
134
134
|
<div
|
|
135
135
|
className={`overflow-hidden transition-[height] duration-150 ease-out ${isCollapsed ? 'h-0' : 'h-auto'}`}
|
|
136
136
|
>
|
|
137
|
-
<ul role="list" className="space-y-2 border-l border-
|
|
137
|
+
<ul role="list" className="space-y-2 border-l border-[rgb(var(--ec-page-border))] ml-[9px] pl-4 pt-2">
|
|
138
138
|
{subgroupPills.map(renderPillItem)}
|
|
139
139
|
</ul>
|
|
140
140
|
</div>
|
|
@@ -144,14 +144,14 @@ const PillList = ({ title, pills, emptyMessage, color = 'gray', limit = 10, ...p
|
|
|
144
144
|
|
|
145
145
|
{pills.length === 0 && emptyMessage && (
|
|
146
146
|
<div className="inline mr-2 leading-tight text-xs">
|
|
147
|
-
<span className="text-
|
|
147
|
+
<span className="text-[rgb(var(--ec-icon-color))]">{emptyMessage}</span>
|
|
148
148
|
</div>
|
|
149
149
|
)}
|
|
150
150
|
</div>
|
|
151
151
|
</DisclosurePanel>
|
|
152
152
|
</Disclosure>
|
|
153
153
|
</div>
|
|
154
|
-
<div className="border-b border-
|
|
154
|
+
<div className="border-b border-[rgb(var(--ec-page-border))] my-4"></div>
|
|
155
155
|
</div>
|
|
156
156
|
);
|
|
157
157
|
};
|
|
@@ -15,7 +15,9 @@ const currentPath = Astro.url.pathname;
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
<div class="space-y-2 pb-4">
|
|
18
|
-
<span
|
|
18
|
+
<span
|
|
19
|
+
class="text-xs text-[rgb(var(--ec-page-text))] font-semibold group-data-[hover]:text-[rgb(var(--ec-page-text))]/80 capitalize"
|
|
20
|
+
>
|
|
19
21
|
{title || `Versions (${collectionItem.data.versions?.length})`}
|
|
20
22
|
</span>
|
|
21
23
|
<ul role="list" class="space-y-2">
|
|
@@ -23,14 +25,16 @@ const currentPath = Astro.url.pathname;
|
|
|
23
25
|
versions.map((version) => {
|
|
24
26
|
const isCurrent = currentPath.includes(version);
|
|
25
27
|
return (
|
|
26
|
-
<li class="rounded-md px-1 group w-full hover:
|
|
28
|
+
<li class="version-item rounded-md px-1 group w-full hover:text-white hover:font-normal">
|
|
27
29
|
<a
|
|
28
30
|
class={`flex items-center space-x-2 cursor-pointer`}
|
|
29
31
|
href={buildUrl(`/docs/${collectionItem.collection}/${collectionItem.data.id}/${version}`)}
|
|
30
32
|
>
|
|
31
33
|
{/* {Icon && <Icon class={`h-4 w-4`} />} */}
|
|
32
|
-
<HistoryIcon className="h-4 w-4 text-
|
|
33
|
-
<span
|
|
34
|
+
<HistoryIcon className="h-4 w-4 text-[rgb(var(--ec-page-text-muted))] group-hover:text-white" strokeWidth={1} />
|
|
35
|
+
<span
|
|
36
|
+
class={`font-light text-xs text-[rgb(var(--ec-page-text))] group-hover:text-white ${isCurrent ? 'underline ' : ''}`}
|
|
37
|
+
>
|
|
34
38
|
{version === collectionItem.data.latestVersion ? `v${version} (latest)` : `v${version}`}
|
|
35
39
|
</span>
|
|
36
40
|
</a>
|
|
@@ -39,9 +43,15 @@ const currentPath = Astro.url.pathname;
|
|
|
39
43
|
})
|
|
40
44
|
}
|
|
41
45
|
</ul>
|
|
42
|
-
<div class="border-b border-
|
|
46
|
+
<div class="border-b border-[rgb(var(--ec-page-border))] pt-2"></div>
|
|
43
47
|
</div>
|
|
44
48
|
|
|
49
|
+
<style>
|
|
50
|
+
.version-item:hover {
|
|
51
|
+
background: linear-gradient(to left, rgb(var(--ec-accent-gradient-from)), rgb(var(--ec-accent-gradient-to)));
|
|
52
|
+
}
|
|
53
|
+
</style>
|
|
54
|
+
|
|
45
55
|
<script>
|
|
46
56
|
document.getElementById('version')?.addEventListener('change', (e: any) => {
|
|
47
57
|
if (!e.target) return;
|
|
@@ -12,7 +12,7 @@ declare global {
|
|
|
12
12
|
|
|
13
13
|
export default function Example({ title, children }: any) {
|
|
14
14
|
return (
|
|
15
|
-
<div className="border border-
|
|
15
|
+
<div className="border border-[rgb(var(--ec-page-border))] rounded-md px-4 shadow-sm py-2 accordion bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))]">
|
|
16
16
|
<Disclosure as="div" key={title} className="">
|
|
17
17
|
{({ open }) => {
|
|
18
18
|
useEffect(() => {
|
|
@@ -30,7 +30,7 @@ export default function Example({ title, children }: any) {
|
|
|
30
30
|
|
|
31
31
|
return (
|
|
32
32
|
<div>
|
|
33
|
-
<DisclosureButton className="flex w-full items-start justify-between text-left text-
|
|
33
|
+
<DisclosureButton className="flex w-full items-start justify-between text-left text-[rgb(var(--ec-page-text))]">
|
|
34
34
|
<span className="text-base font-semibold leading-7">{title}</span>
|
|
35
35
|
<span className="ml-6 flex h-7 items-center">
|
|
36
36
|
{open ? (
|
|
@@ -41,7 +41,7 @@ export default function Example({ title, children }: any) {
|
|
|
41
41
|
</span>
|
|
42
42
|
</DisclosureButton>
|
|
43
43
|
<DisclosurePanel as="dd" className="pr-12 py-4 prose prose-sm max-w-none">
|
|
44
|
-
<div className="text-base leading-7 text-
|
|
44
|
+
<div className="text-base leading-7 text-[rgb(var(--ec-page-text-muted))]">{children}</div>
|
|
45
45
|
</DisclosurePanel>
|
|
46
46
|
</div>
|
|
47
47
|
);
|