@eventcatalog/core 3.18.4 → 3.19.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/catalog-to-astro-content-directory.cjs +1 -1
- package/dist/{chunk-DCBPUSHT.js → chunk-7JIM3GZL.js} +1 -1
- package/dist/{chunk-PIWPUXCH.js → chunk-A4JKYK6M.js} +1 -1
- package/dist/{chunk-QNHBAP37.js → chunk-DME6DR6Z.js} +1 -1
- package/dist/{chunk-FQ2UOBJ4.js → chunk-NDGH67WK.js} +1 -1
- package/dist/{chunk-HYO7ONRE.js → chunk-RPN42UQI.js} +3 -3
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog.cjs +2 -2
- package/dist/eventcatalog.js +8 -8
- 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/astro.config.mjs +46 -3
- package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +3 -3
- package/eventcatalog/src/components/ChatPanel/ChatPanelButton.tsx +1 -1
- package/eventcatalog/src/components/CopyAsMarkdown.tsx +9 -9
- package/eventcatalog/src/components/EnvironmentDropdown.tsx +1 -1
- package/eventcatalog/src/components/Grids/DomainGrid.tsx +6 -6
- package/eventcatalog/src/components/Grids/MessageGrid.tsx +5 -5
- package/eventcatalog/src/components/Grids/components.tsx +3 -3
- package/eventcatalog/src/components/Header.astro +6 -6
- package/eventcatalog/src/components/MDX/Accordion/Accordion.tsx +1 -1
- package/eventcatalog/src/components/MDX/Accordion/AccordionGroup.astro +1 -1
- package/eventcatalog/src/components/MDX/Attachments.astro +1 -1
- package/eventcatalog/src/components/MDX/EntityPropertiesTable/EntityPropertiesTable.astro +1 -1
- package/eventcatalog/src/components/MDX/MessageTable/MessageTable.client.tsx +2 -2
- package/eventcatalog/src/components/MDX/NodeGraph/NodeGraphPortal.tsx +1 -1
- package/eventcatalog/src/components/MDX/RemoteFile.astro +1 -1
- package/eventcatalog/src/components/MDX/ResourceGroupTable/ResourceGroupTable.client.tsx +2 -2
- package/eventcatalog/src/components/MDX/SchemaViewer/SchemaViewerRoot.astro +1 -1
- package/eventcatalog/src/components/MDX/Tabs/Tabs.astro +1 -1
- package/eventcatalog/src/components/MDX/Tiles/Tile.astro +1 -1
- package/eventcatalog/src/components/SchemaExplorer/AvroSchemaViewer.tsx +6 -6
- package/eventcatalog/src/components/SchemaExplorer/JSONSchemaViewer.tsx +10 -10
- package/eventcatalog/src/components/SchemaExplorer/OwnersSection.tsx +1 -1
- package/eventcatalog/src/components/SchemaExplorer/ProducersConsumersSection.tsx +2 -2
- package/eventcatalog/src/components/SchemaExplorer/SchemaCodeModal.tsx +2 -2
- package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +3 -3
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsHeader.tsx +5 -5
- package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +3 -3
- package/eventcatalog/src/components/SchemaExplorer/SchemaViewerModal.tsx +2 -2
- package/eventcatalog/src/components/SchemaExplorer/VersionHistoryModal.tsx +2 -2
- package/eventcatalog/src/components/Search/Search.astro +1 -1
- package/eventcatalog/src/components/Search/SearchModal.tsx +1 -1
- package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +1 -1
- package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +2 -2
- package/eventcatalog/src/components/Studio/StudioPageModal.tsx +2 -2
- package/eventcatalog/src/components/Tables/Discover/DiscoverTable.tsx +4 -4
- package/eventcatalog/src/components/Tables/Table.tsx +2 -2
- package/eventcatalog/src/enterprise/auth/error.astro +3 -2
- package/eventcatalog/src/enterprise/auth/login.astro +1 -0
- package/eventcatalog/src/enterprise/auth/unauthorized.astro +2 -2
- package/eventcatalog/src/enterprise/plans/index.astro +15 -15
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +3 -0
- package/eventcatalog/src/layouts/VisualiserLayout.astro +1 -1
- package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +1 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +1 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -1
- package/eventcatalog/src/pages/docs/custom/feature.astro +6 -6
- package/eventcatalog/src/pages/docs/custom/index.astro +6 -6
- package/eventcatalog/src/pages/index.astro +1 -1
- package/eventcatalog/src/pages/schemas/explorer/index.astro +1 -1
- package/eventcatalog/src/pages/studio.astro +3 -3
- package/eventcatalog/src/remark-plugins/directives.ts +1 -1
- package/eventcatalog/src/styles/tailwind.css +84 -0
- package/eventcatalog/src/utils/icon-map.ts +76 -0
- package/package.json +5 -5
- package/eventcatalog/tailwind.config.mjs +0 -103
|
@@ -105,7 +105,7 @@ const sortedGroups = Object.entries(groupedAttachments).sort(([a], [b]) => {
|
|
|
105
105
|
href={attachment.url}
|
|
106
106
|
target={isExternal ? '_blank' : '_self'}
|
|
107
107
|
rel={isExternal ? 'noopener noreferrer' : undefined}
|
|
108
|
-
class="group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg p-4 transition-all duration-200 hover:shadow-md hover:border-[rgb(var(--ec-accent)/0.5)] focus:outline-
|
|
108
|
+
class="group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg p-4 transition-all duration-200 hover:shadow-md hover:border-[rgb(var(--ec-accent)/0.5)] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:ring-offset-2"
|
|
109
109
|
>
|
|
110
110
|
<div class="flex items-start gap-3">
|
|
111
111
|
<div class="flex-shrink-0 p-2 bg-[rgb(var(--ec-content-hover))] rounded-lg group-hover:bg-[rgb(var(--ec-accent-subtle))] transition-colors duration-200">
|
|
@@ -41,7 +41,7 @@ const isComponentEnabled = collection === 'entities';
|
|
|
41
41
|
{
|
|
42
42
|
isComponentEnabled && properties && properties.length > 0 ? (
|
|
43
43
|
<div class="overflow-x-auto relative not-prose">
|
|
44
|
-
<table class="w-full text-sm text-left text-[rgb(var(--ec-page-text-muted))] border border-[rgb(var(--ec-page-border))] rounded-lg shadow-
|
|
44
|
+
<table class="w-full text-sm text-left text-[rgb(var(--ec-page-text-muted))] border border-[rgb(var(--ec-page-border))] rounded-lg shadow-xs">
|
|
45
45
|
<thead class="text-xs text-[rgb(var(--ec-page-text))] uppercase bg-[rgb(var(--ec-content-hover))]">
|
|
46
46
|
<tr>
|
|
47
47
|
<th scope="col" class="py-3 px-6">
|
|
@@ -284,7 +284,7 @@ const MessageTable = (props: MessageTableProps) => {
|
|
|
284
284
|
<div className="overflow-x-auto">
|
|
285
285
|
<div className="inline-block min-w-full py-2 align-middle">
|
|
286
286
|
<div className="max-w-full overflow-hidden">
|
|
287
|
-
<table className="min-w-full table-fixed divide-y divide-[rgb(var(--ec-page-border))] rounded-
|
|
287
|
+
<table className="min-w-full table-fixed divide-y divide-[rgb(var(--ec-page-border))] rounded-xs bg-[rgb(var(--ec-page-bg))]">
|
|
288
288
|
<thead>
|
|
289
289
|
<tr>
|
|
290
290
|
<th
|
|
@@ -373,7 +373,7 @@ const MessageTable = (props: MessageTableProps) => {
|
|
|
373
373
|
</p>
|
|
374
374
|
</div>
|
|
375
375
|
<div>
|
|
376
|
-
<nav className="isolate inline-flex -space-x-px rounded-md shadow-
|
|
376
|
+
<nav className="isolate inline-flex -space-x-px rounded-md shadow-xs" aria-label="Pagination">
|
|
377
377
|
<button
|
|
378
378
|
onClick={() => setCurrentPage(currentPage - 1)}
|
|
379
379
|
disabled={currentPage === 1}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const NodeGraphPortal = (props: any) => {
|
|
2
2
|
return (
|
|
3
3
|
<div
|
|
4
|
-
className="h-[30em] my-6 mb-12 w-full relative !
|
|
4
|
+
className="h-[30em] my-6 mb-12 w-full relative border! border-[rgb(var(--ec-page-border))]! rounded-md overflow-hidden"
|
|
5
5
|
id={`${props.id}-portal`}
|
|
6
6
|
style={{
|
|
7
7
|
maxHeight: props.maxHeight ? `${props.maxHeight}em` : `30em`,
|
|
@@ -141,7 +141,7 @@ if (renderAs === 'auto') {
|
|
|
141
141
|
<div class="remote-file-content">
|
|
142
142
|
{finalRenderAs === 'schema' ? (
|
|
143
143
|
<div class="not-prose my-4">
|
|
144
|
-
{title && <h2 class="text-3xl font-bold mb-2
|
|
144
|
+
{title && <h2 class="text-3xl font-bold mb-2 mt-0!">{title}</h2>}
|
|
145
145
|
<JSONSchemaViewer client:load schema={processedData} maxHeight={maxHeight} expand={false} search={true} />
|
|
146
146
|
</div>
|
|
147
147
|
) : (
|
|
@@ -290,7 +290,7 @@ const ResourceGroupTable = (props: ResourceGroupTableProps) => {
|
|
|
290
290
|
<div className="overflow-x-auto">
|
|
291
291
|
<div className="inline-block min-w-full py-2 align-middle">
|
|
292
292
|
<div className="max-w-full overflow-hidden">
|
|
293
|
-
<table className="min-w-full table-fixed divide-y divide-[rgb(var(--ec-page-border))] rounded-
|
|
293
|
+
<table className="min-w-full table-fixed divide-y divide-[rgb(var(--ec-page-border))] rounded-xs bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))]">
|
|
294
294
|
<thead>
|
|
295
295
|
<tr>
|
|
296
296
|
<th
|
|
@@ -387,7 +387,7 @@ const ResourceGroupTable = (props: ResourceGroupTableProps) => {
|
|
|
387
387
|
</p>
|
|
388
388
|
</div>
|
|
389
389
|
<div>
|
|
390
|
-
<nav className="isolate inline-flex -space-x-px rounded-md shadow-
|
|
390
|
+
<nav className="isolate inline-flex -space-x-px rounded-md shadow-xs" aria-label="Pagination">
|
|
391
391
|
<button
|
|
392
392
|
onClick={() => setCurrentPage(currentPage - 1)}
|
|
393
393
|
disabled={currentPage === 1}
|
|
@@ -76,7 +76,7 @@ try {
|
|
|
76
76
|
data-expand={schema.expand ? 'true' : 'false'}
|
|
77
77
|
data-search={schema.search !== false ? 'true' : 'false'}
|
|
78
78
|
>
|
|
79
|
-
{schema.title && <h2 class="text-2xl font-bold mb-2
|
|
79
|
+
{schema.title && <h2 class="text-2xl font-bold mb-2 mt-0!">{schema.title}</h2>}
|
|
80
80
|
|
|
81
81
|
{/* Render AvroSchemaViewer for Avro schemas */}
|
|
82
82
|
{schema.isAvroSchema ? (
|
|
@@ -41,7 +41,7 @@ const tabsId = Math.random().toString(36).substring(2, 9);
|
|
|
41
41
|
{
|
|
42
42
|
tabItems.map((item) => (
|
|
43
43
|
<button
|
|
44
|
-
class="whitespace-nowrap py-4 px-1 border-b-2 px-6 font-bold text-sm border-transparent text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] hover:border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] focus:outline-
|
|
44
|
+
class="whitespace-nowrap py-4 px-1 border-b-2 px-6 font-bold text-sm border-transparent text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] hover:border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] focus:outline-hidden tab-button"
|
|
45
45
|
data-tab={item.id}
|
|
46
46
|
aria-selected="false"
|
|
47
47
|
>
|
|
@@ -28,7 +28,7 @@ function startsWithProtocol(str: string) {
|
|
|
28
28
|
<a
|
|
29
29
|
href={startsWithProtocol(href) ? href : buildUrl(href)}
|
|
30
30
|
target={openWindow ? '_blank' : '_self'}
|
|
31
|
-
class="tile-card block relative bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl p-8 h-48 transition-all duration-300 ease-out hover:border-[rgb(var(--ec-accent)/0.5)] focus:outline-
|
|
31
|
+
class="tile-card block relative bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl p-8 h-48 transition-all duration-300 ease-out hover:border-[rgb(var(--ec-accent)/0.5)] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:ring-offset-2 overflow-hidden"
|
|
32
32
|
>
|
|
33
33
|
<!-- Icon centered in card with grid background -->
|
|
34
34
|
<div class="relative h-full flex items-center justify-center">
|
|
@@ -320,12 +320,12 @@ export default function AvroSchemaViewer({
|
|
|
320
320
|
|
|
321
321
|
return (
|
|
322
322
|
<div
|
|
323
|
-
className={`${heightClass} ${overflowClass} flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md shadow-
|
|
323
|
+
className={`${heightClass} ${overflowClass} flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md shadow-xs`}
|
|
324
324
|
style={containerStyle}
|
|
325
325
|
>
|
|
326
326
|
{/* Toolbar */}
|
|
327
327
|
{searchBool && (
|
|
328
|
-
<div className="flex-shrink-0 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] pt-4 px-4 pb-3 border-b border-[rgb(var(--ec-page-border))] shadow-
|
|
328
|
+
<div className="flex-shrink-0 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] pt-4 px-4 pb-3 border-b border-[rgb(var(--ec-page-border))] shadow-xs">
|
|
329
329
|
<div className="flex flex-col sm:flex-row gap-3">
|
|
330
330
|
<div className="flex-1 relative">
|
|
331
331
|
<input
|
|
@@ -334,7 +334,7 @@ export default function AvroSchemaViewer({
|
|
|
334
334
|
value={searchQuery}
|
|
335
335
|
onChange={(e) => setSearchQuery(e.target.value)}
|
|
336
336
|
placeholder="Search fields..."
|
|
337
|
-
className="w-full px-3 py-1.5 pr-20 text-sm border border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] placeholder:text-[rgb(var(--ec-input-placeholder))] rounded-md focus:outline-
|
|
337
|
+
className="w-full px-3 py-1.5 pr-20 text-sm border border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] placeholder:text-[rgb(var(--ec-input-placeholder))] rounded-md focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:border-transparent"
|
|
338
338
|
onKeyDown={(e) => {
|
|
339
339
|
if (e.key === 'Enter') {
|
|
340
340
|
e.preventDefault();
|
|
@@ -373,7 +373,7 @@ export default function AvroSchemaViewer({
|
|
|
373
373
|
{onOpenFullscreen && (
|
|
374
374
|
<button
|
|
375
375
|
onClick={onOpenFullscreen}
|
|
376
|
-
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-
|
|
376
|
+
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
|
|
377
377
|
title="Open in fullscreen"
|
|
378
378
|
>
|
|
379
379
|
<svg
|
|
@@ -394,13 +394,13 @@ export default function AvroSchemaViewer({
|
|
|
394
394
|
)}
|
|
395
395
|
<button
|
|
396
396
|
onClick={handleExpandAll}
|
|
397
|
-
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-
|
|
397
|
+
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
|
|
398
398
|
>
|
|
399
399
|
Expand All
|
|
400
400
|
</button>
|
|
401
401
|
<button
|
|
402
402
|
onClick={handleCollapseAll}
|
|
403
|
-
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-
|
|
403
|
+
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
|
|
404
404
|
>
|
|
405
405
|
Collapse All
|
|
406
406
|
</button>
|
|
@@ -228,7 +228,7 @@ const NestedVariantSelector = ({
|
|
|
228
228
|
<select
|
|
229
229
|
value={selectedIndex}
|
|
230
230
|
onChange={(e) => setSelectedIndex(parseInt(e.target.value))}
|
|
231
|
-
className="form-select text-xs border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-
|
|
231
|
+
className="form-select text-xs border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-xs focus:border-[rgb(var(--ec-accent))] focus:ring focus:ring-[rgb(var(--ec-accent)/0.2)] py-1"
|
|
232
232
|
>
|
|
233
233
|
{variants.map((variant: any, index: number) => (
|
|
234
234
|
<option key={index} value={index}>
|
|
@@ -293,7 +293,7 @@ const SchemaProperty = ({ name, details, isRequired, level, isListItem = false,
|
|
|
293
293
|
aria-expanded={isExpanded}
|
|
294
294
|
aria-controls={contentId}
|
|
295
295
|
onClick={() => setIsExpanded(!isExpanded)}
|
|
296
|
-
className="property-toggle text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] pt-0.5 focus:outline-
|
|
296
|
+
className="property-toggle text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] pt-0.5 focus:outline-hidden w-3 text-center flex-shrink-0"
|
|
297
297
|
>
|
|
298
298
|
<span className={`icon-collapsed font-mono text-xs ${isExpanded ? 'hidden' : ''}`}>></span>
|
|
299
299
|
<span className={`icon-expanded font-mono text-xs ${!isExpanded ? 'hidden' : ''}`}>v</span>
|
|
@@ -396,7 +396,7 @@ const SchemaProperty = ({ name, details, isRequired, level, isListItem = false,
|
|
|
396
396
|
<select
|
|
397
397
|
value={selectedVariantIndex}
|
|
398
398
|
onChange={(e) => setSelectedVariantIndex(parseInt(e.target.value))}
|
|
399
|
-
className="form-select text-xs border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-
|
|
399
|
+
className="form-select text-xs border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-xs focus:border-[rgb(var(--ec-accent))] focus:ring focus:ring-[rgb(var(--ec-accent)/0.2)] py-1"
|
|
400
400
|
>
|
|
401
401
|
{details.variants.map((variant: any, index: number) => (
|
|
402
402
|
<option key={index} value={index}>
|
|
@@ -667,12 +667,12 @@ export default function JSONSchemaViewer({
|
|
|
667
667
|
return (
|
|
668
668
|
<div
|
|
669
669
|
id={id}
|
|
670
|
-
className={`${heightClass} ${overflowClass} flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md shadow-
|
|
670
|
+
className={`${heightClass} ${overflowClass} flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-md shadow-xs`}
|
|
671
671
|
style={containerStyle}
|
|
672
672
|
>
|
|
673
673
|
{/* Toolbar */}
|
|
674
674
|
{searchBool && (
|
|
675
|
-
<div className="flex-shrink-0 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] pt-4 px-4 mb-4 pb-3 border-b border-[rgb(var(--ec-page-border))] shadow-
|
|
675
|
+
<div className="flex-shrink-0 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] pt-4 px-4 mb-4 pb-3 border-b border-[rgb(var(--ec-page-border))] shadow-xs">
|
|
676
676
|
<div className="flex flex-col sm:flex-row gap-3">
|
|
677
677
|
<div className="flex-1 relative">
|
|
678
678
|
<input
|
|
@@ -681,7 +681,7 @@ export default function JSONSchemaViewer({
|
|
|
681
681
|
value={searchQuery}
|
|
682
682
|
onChange={(e) => setSearchQuery(e.target.value)}
|
|
683
683
|
placeholder="Search properties..."
|
|
684
|
-
className="w-full px-3 py-1.5 pr-20 text-sm border border-[rgb(var(--ec-input-border))] rounded-md bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-
|
|
684
|
+
className="w-full px-3 py-1.5 pr-20 text-sm border border-[rgb(var(--ec-input-border))] rounded-md bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:border-transparent"
|
|
685
685
|
onKeyDown={(e) => {
|
|
686
686
|
if (e.key === 'Enter') {
|
|
687
687
|
e.preventDefault();
|
|
@@ -720,7 +720,7 @@ export default function JSONSchemaViewer({
|
|
|
720
720
|
{onOpenFullscreen && (
|
|
721
721
|
<button
|
|
722
722
|
onClick={onOpenFullscreen}
|
|
723
|
-
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-
|
|
723
|
+
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
|
|
724
724
|
title="Open in fullscreen"
|
|
725
725
|
>
|
|
726
726
|
<svg
|
|
@@ -741,13 +741,13 @@ export default function JSONSchemaViewer({
|
|
|
741
741
|
)}
|
|
742
742
|
<button
|
|
743
743
|
onClick={handleExpandAll}
|
|
744
|
-
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-
|
|
744
|
+
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
|
|
745
745
|
>
|
|
746
746
|
Expand All
|
|
747
747
|
</button>
|
|
748
748
|
<button
|
|
749
749
|
onClick={handleCollapseAll}
|
|
750
|
-
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-
|
|
750
|
+
className="px-3 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-content-hover))] rounded-md hover:bg-[rgb(var(--ec-content-active))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
|
|
751
751
|
>
|
|
752
752
|
Collapse All
|
|
753
753
|
</button>
|
|
@@ -790,7 +790,7 @@ export default function JSONSchemaViewer({
|
|
|
790
790
|
<select
|
|
791
791
|
value={selectedVariantIndex}
|
|
792
792
|
onChange={(e) => setSelectedVariantIndex(parseInt(e.target.value))}
|
|
793
|
-
className="form-select text-sm border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-
|
|
793
|
+
className="form-select text-sm border-[rgb(var(--ec-input-border))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] rounded-md shadow-xs focus:border-[rgb(var(--ec-accent))] focus:ring focus:ring-[rgb(var(--ec-accent)/0.2)] flex-1 sm:flex-initial"
|
|
794
794
|
>
|
|
795
795
|
{variants.map((variant: any, index: number) => (
|
|
796
796
|
<option key={index} value={index}>
|
|
@@ -42,7 +42,7 @@ export default function OwnersSection({ message, isExpanded, onToggle }: OwnersS
|
|
|
42
42
|
<a
|
|
43
43
|
key={`${owner.id}-${idx}`}
|
|
44
44
|
href={owner.href}
|
|
45
|
-
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-[rgb(var(--ec-accent))] hover:shadow-
|
|
45
|
+
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-[rgb(var(--ec-accent))] hover:shadow-xs transition-all"
|
|
46
46
|
title={owner.name}
|
|
47
47
|
>
|
|
48
48
|
<div className="flex items-center justify-center w-5 h-5 bg-gradient-to-b from-[rgb(var(--ec-accent-gradient-from))] to-[rgb(var(--ec-accent-gradient-to))] rounded-full">
|
|
@@ -54,7 +54,7 @@ export default function ProducersConsumersSection({ message, isExpanded, onToggl
|
|
|
54
54
|
<a
|
|
55
55
|
key={`${producer.id}-${idx}`}
|
|
56
56
|
href={buildUrl(`/docs/services/${producer.id}/${producer.version}`)}
|
|
57
|
-
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-
|
|
57
|
+
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-xs transition-all"
|
|
58
58
|
title={`View ${producer.id}`}
|
|
59
59
|
>
|
|
60
60
|
<div className="flex items-center justify-center w-5 h-5 bg-gradient-to-b from-pink-500 to-pink-600 rounded-full">
|
|
@@ -75,7 +75,7 @@ export default function ProducersConsumersSection({ message, isExpanded, onToggl
|
|
|
75
75
|
<a
|
|
76
76
|
key={`${consumer.id}-${idx}`}
|
|
77
77
|
href={buildUrl(`/docs/services/${consumer.id}/${consumer.version}`)}
|
|
78
|
-
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-
|
|
78
|
+
className="inline-flex items-center gap-1.5 pl-1 pr-3 py-1 text-xs font-medium text-[rgb(var(--ec-page-text))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-full hover:border-pink-400 dark:hover:border-pink-500 hover:shadow-xs transition-all"
|
|
79
79
|
title={`View ${consumer.id}`}
|
|
80
80
|
>
|
|
81
81
|
<div className="flex items-center justify-center w-5 h-5 bg-gradient-to-b from-pink-500 to-pink-600 rounded-full">
|
|
@@ -20,7 +20,7 @@ export default function SchemaCodeModal({ isOpen, onOpenChange, message, onCopy,
|
|
|
20
20
|
<Dialog.Root open={isOpen} onOpenChange={onOpenChange}>
|
|
21
21
|
<Dialog.Portal>
|
|
22
22
|
<Dialog.Overlay className="fixed inset-0 bg-black/50 data-[state=open]:animate-overlayShow z-50" />
|
|
23
|
-
<Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-white shadow-xl focus:outline-
|
|
23
|
+
<Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-white shadow-xl focus:outline-hidden data-[state=open]:animate-contentShow z-[100] flex flex-col">
|
|
24
24
|
{/* Header */}
|
|
25
25
|
<div className="flex items-center justify-between p-6 border-b border-gray-200 flex-shrink-0">
|
|
26
26
|
<div className="flex items-center gap-3">
|
|
@@ -80,7 +80,7 @@ export default function SchemaCodeModal({ isOpen, onOpenChange, message, onCopy,
|
|
|
80
80
|
<Dialog.Close asChild>
|
|
81
81
|
<button
|
|
82
82
|
type="button"
|
|
83
|
-
className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-
|
|
83
|
+
className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition-colors"
|
|
84
84
|
>
|
|
85
85
|
Close
|
|
86
86
|
</button>
|
|
@@ -94,7 +94,7 @@ export default function SchemaContentViewer({
|
|
|
94
94
|
return (
|
|
95
95
|
<a
|
|
96
96
|
href={specUrl}
|
|
97
|
-
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-
|
|
97
|
+
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-xs"
|
|
98
98
|
title="View full specification"
|
|
99
99
|
>
|
|
100
100
|
<svg
|
|
@@ -118,7 +118,7 @@ export default function SchemaContentViewer({
|
|
|
118
118
|
{onOpenFullscreen && (
|
|
119
119
|
<button
|
|
120
120
|
onClick={onOpenFullscreen}
|
|
121
|
-
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-
|
|
121
|
+
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-xs"
|
|
122
122
|
title="Open in fullscreen"
|
|
123
123
|
>
|
|
124
124
|
<ArrowsPointingOutIcon className="h-3.5 w-3.5" />
|
|
@@ -127,7 +127,7 @@ export default function SchemaContentViewer({
|
|
|
127
127
|
)}
|
|
128
128
|
<button
|
|
129
129
|
onClick={onCopy}
|
|
130
|
-
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-
|
|
130
|
+
className="inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-content-hover))] hover:text-[rgb(var(--ec-page-text))] rounded-md transition-colors shadow-xs"
|
|
131
131
|
title="Copy code"
|
|
132
132
|
>
|
|
133
133
|
<ClipboardDocumentIcon className="h-3.5 w-3.5" />
|
|
@@ -70,7 +70,7 @@ export default function SchemaDetailsHeader({
|
|
|
70
70
|
<select
|
|
71
71
|
value={selectedVersion || message.data.version}
|
|
72
72
|
onChange={(e) => onVersionChange(e.target.value)}
|
|
73
|
-
className="appearance-none text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] border border-[rgb(var(--ec-page-border))] rounded-md pl-2.5 pr-7 py-1 focus:outline-
|
|
73
|
+
className="appearance-none text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-content-hover))] border border-[rgb(var(--ec-page-border))] rounded-md pl-2.5 pr-7 py-1 focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent))] focus:border-[rgb(var(--ec-accent))] cursor-pointer hover:bg-[rgb(var(--ec-input-bg))] transition-colors"
|
|
74
74
|
>
|
|
75
75
|
{availableVersions.map((v) => (
|
|
76
76
|
<option key={v.data.version} value={v.data.version}>
|
|
@@ -127,7 +127,7 @@ export default function SchemaDetailsHeader({
|
|
|
127
127
|
onClick={() => onViewModeChange('code')}
|
|
128
128
|
className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
|
|
129
129
|
schemaViewMode === 'code'
|
|
130
|
-
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-
|
|
130
|
+
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-xs'
|
|
131
131
|
: 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
|
|
132
132
|
}`}
|
|
133
133
|
title="View raw code"
|
|
@@ -140,7 +140,7 @@ export default function SchemaDetailsHeader({
|
|
|
140
140
|
onClick={() => onViewModeChange('schema')}
|
|
141
141
|
className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
|
|
142
142
|
schemaViewMode === 'schema'
|
|
143
|
-
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-
|
|
143
|
+
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-xs'
|
|
144
144
|
: 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
|
|
145
145
|
}`}
|
|
146
146
|
title="View as schema"
|
|
@@ -154,7 +154,7 @@ export default function SchemaDetailsHeader({
|
|
|
154
154
|
onClick={() => onViewModeChange('diff')}
|
|
155
155
|
className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
|
|
156
156
|
schemaViewMode === 'diff'
|
|
157
|
-
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-
|
|
157
|
+
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-xs'
|
|
158
158
|
: 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
|
|
159
159
|
}`}
|
|
160
160
|
title="View version diffs"
|
|
@@ -176,7 +176,7 @@ export default function SchemaDetailsHeader({
|
|
|
176
176
|
onClick={() => onViewModeChange('api')}
|
|
177
177
|
className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded transition-all ${
|
|
178
178
|
schemaViewMode === 'api'
|
|
179
|
-
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-
|
|
179
|
+
? 'bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] text-[rgb(var(--ec-page-text))] shadow-xs'
|
|
180
180
|
: 'text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))]'
|
|
181
181
|
}`}
|
|
182
182
|
title="API access"
|
|
@@ -357,7 +357,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
357
357
|
{/* Split View - Full Height */}
|
|
358
358
|
<div className="flex-1 flex gap-4 overflow-hidden">
|
|
359
359
|
{/* Left: Schema List */}
|
|
360
|
-
<div className="w-[320px] flex-shrink-0 flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg overflow-hidden shadow-
|
|
360
|
+
<div className="w-[320px] flex-shrink-0 flex flex-col bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg overflow-hidden shadow-xs">
|
|
361
361
|
{/* Search Header */}
|
|
362
362
|
<div className="flex-shrink-0 p-3 border-b border-[rgb(var(--ec-page-border))]">
|
|
363
363
|
{/* Search + Format Filter Row */}
|
|
@@ -372,7 +372,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
372
372
|
placeholder="Search schemas..."
|
|
373
373
|
value={searchQuery}
|
|
374
374
|
onChange={(e) => setSearchQuery(e.target.value)}
|
|
375
|
-
className="w-full rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-input-bg))] py-2 pl-9 pr-8 text-sm text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:border-[rgb(var(--ec-accent))] focus:outline-
|
|
375
|
+
className="w-full rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-input-bg))] py-2 pl-9 pr-8 text-sm text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:border-[rgb(var(--ec-accent))] focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent)/0.3)] transition-all"
|
|
376
376
|
/>
|
|
377
377
|
{searchQuery && (
|
|
378
378
|
<button onClick={() => setSearchQuery('')} className="absolute inset-y-0 right-0 flex items-center pr-2.5">
|
|
@@ -385,7 +385,7 @@ export default function SchemaExplorer({ schemas, apiAccessEnabled = false }: Sc
|
|
|
385
385
|
<select
|
|
386
386
|
value={selectedSchemaType}
|
|
387
387
|
onChange={(e) => setSelectedSchemaType(e.target.value)}
|
|
388
|
-
className="flex-shrink-0 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-input-bg))] border border-[rgb(var(--ec-page-border))] rounded-md px-2 py-2 focus:outline-
|
|
388
|
+
className="flex-shrink-0 text-xs font-medium text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-input-bg))] border border-[rgb(var(--ec-page-border))] rounded-md px-2 py-2 focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent)/0.3)] focus:border-[rgb(var(--ec-accent))] cursor-pointer hover:bg-[rgb(var(--ec-content-hover))] transition-colors"
|
|
389
389
|
>
|
|
390
390
|
<option value="all">All formats</option>
|
|
391
391
|
{schemaTypes.map((type) => {
|
|
@@ -27,7 +27,7 @@ export default function SchemaViewerModal({
|
|
|
27
27
|
<Dialog.Root open={isOpen} onOpenChange={onOpenChange}>
|
|
28
28
|
<Dialog.Portal>
|
|
29
29
|
<Dialog.Overlay className="fixed inset-0 bg-black/50 data-[state=open]:animate-overlayShow z-50" />
|
|
30
|
-
<Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] shadow-xl focus:outline-
|
|
30
|
+
<Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] shadow-xl focus:outline-hidden data-[state=open]:animate-contentShow z-[100] flex flex-col">
|
|
31
31
|
{/* Header */}
|
|
32
32
|
<div className="flex items-center justify-between p-6 border-b border-[rgb(var(--ec-page-border))] flex-shrink-0">
|
|
33
33
|
<div className="flex items-center gap-3">
|
|
@@ -64,7 +64,7 @@ export default function SchemaViewerModal({
|
|
|
64
64
|
<Dialog.Close asChild>
|
|
65
65
|
<button
|
|
66
66
|
type="button"
|
|
67
|
-
className="px-4 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-md hover:bg-[rgb(var(--ec-content-hover))] focus:outline-
|
|
67
|
+
className="px-4 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-md hover:bg-[rgb(var(--ec-content-hover))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:ring-offset-2 transition-colors"
|
|
68
68
|
>
|
|
69
69
|
Close
|
|
70
70
|
</button>
|
|
@@ -22,7 +22,7 @@ export default function VersionHistoryModal({
|
|
|
22
22
|
<Dialog.Root open={isOpen} onOpenChange={onOpenChange}>
|
|
23
23
|
<Dialog.Portal>
|
|
24
24
|
<Dialog.Overlay className="fixed inset-0 bg-black/50 data-[state=open]:animate-overlayShow z-50" />
|
|
25
|
-
<Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-white shadow-xl focus:outline-
|
|
25
|
+
<Dialog.Content className="fixed inset-4 md:inset-8 rounded-lg bg-white shadow-xl focus:outline-hidden data-[state=open]:animate-contentShow z-[100] flex flex-col">
|
|
26
26
|
{/* Header */}
|
|
27
27
|
<div className="flex items-center justify-between p-6 border-b border-gray-200 flex-shrink-0">
|
|
28
28
|
<div className="flex items-center gap-3">
|
|
@@ -59,7 +59,7 @@ export default function VersionHistoryModal({
|
|
|
59
59
|
<Dialog.Close asChild>
|
|
60
60
|
<button
|
|
61
61
|
type="button"
|
|
62
|
-
className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-
|
|
62
|
+
className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition-colors"
|
|
63
63
|
>
|
|
64
64
|
Close
|
|
65
65
|
</button>
|
|
@@ -11,7 +11,7 @@ import SearchModal from './SearchModal.tsx';
|
|
|
11
11
|
name="search"
|
|
12
12
|
placeholder="Search EventCatalog"
|
|
13
13
|
autocomplete="off"
|
|
14
|
-
class="block w-full rounded-md caret-transparent border-0 py-1.5 pr-14
|
|
14
|
+
class="block w-full rounded-md caret-transparent border-0 py-1.5 pr-14 pl-10! text-[rgb(var(--ec-header-text))] bg-[rgb(var(--ec-dropdown-bg))] shadow-xs ring-1 ring-inset ring-[rgb(var(--ec-dropdown-border))] placeholder:text-[rgb(var(--ec-icon-color))] font-light sm:text-sm sm:leading-6"
|
|
15
15
|
/>
|
|
16
16
|
<MagnifyingGlassIcon className="absolute inset-y-0 left-0 h-9 w-8 flex items-center pl-4 text-[rgb(var(--ec-icon-color))]" />
|
|
17
17
|
<div class="absolute inset-y-0 right-0 flex py-1.5 pr-6">
|
|
@@ -387,7 +387,7 @@ export default function SearchModal() {
|
|
|
387
387
|
/>
|
|
388
388
|
<Combobox.Input
|
|
389
389
|
ref={inputRef}
|
|
390
|
-
className="h-12 w-full border-0 bg-transparent pl-11 pr-4 text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:ring-0 sm:text-sm focus:outline-
|
|
390
|
+
className="h-12 w-full border-0 bg-transparent pl-11 pr-4 text-[rgb(var(--ec-page-text))] placeholder:text-[rgb(var(--ec-icon-color))] focus:ring-0 sm:text-sm focus:outline-hidden"
|
|
391
391
|
placeholder="Search..."
|
|
392
392
|
onChange={(event) => setQuery(event.target.value)}
|
|
393
393
|
value={query}
|
|
@@ -190,7 +190,7 @@ export default function SearchBar({ nodes, onSelectResult, onSearchChange }: Pro
|
|
|
190
190
|
placeholder="Search resources..."
|
|
191
191
|
value={searchQuery}
|
|
192
192
|
onChange={(e) => handleSearchChange(e.target.value)}
|
|
193
|
-
className="w-full
|
|
193
|
+
className="w-full pl-9! pr-8! py-2! text-sm! bg-[rgb(var(--ec-input-bg))]! border! border-[rgb(var(--ec-input-border))]! rounded-lg! focus:outline-hidden! focus:ring-2! focus:ring-[rgb(var(--ec-accent))]! focus:border-transparent! text-[rgb(var(--ec-input-text))]! placeholder:text-[rgb(var(--ec-input-placeholder))]!"
|
|
194
194
|
/>
|
|
195
195
|
{searchQuery && (
|
|
196
196
|
<button
|
|
@@ -910,7 +910,7 @@ export default function NestedSideBar() {
|
|
|
910
910
|
'group flex items-center justify-between w-full px-3 py-1.5 rounded-lg cursor-pointer text-left transition-colors hover:bg-[rgb(var(--ec-content-hover))] active:bg-[rgb(var(--ec-content-hover))]';
|
|
911
911
|
const parentClasses = itemHasChildren ? 'font-medium' : '';
|
|
912
912
|
const activeClasses = isActive
|
|
913
|
-
? 'bg-[rgb(var(--ec-accent-subtle))] hover:bg-[rgb(var(--ec-accent-subtle))]
|
|
913
|
+
? 'bg-[rgb(var(--ec-accent-subtle))] hover:bg-[rgb(var(--ec-accent-subtle))] rounded-none!'
|
|
914
914
|
: '';
|
|
915
915
|
|
|
916
916
|
// Leaf item with href → render as link
|
|
@@ -1122,7 +1122,7 @@ export default function NestedSideBar() {
|
|
|
1122
1122
|
onClick={() => navigateToFavorite(fav)}
|
|
1123
1123
|
className={cn(
|
|
1124
1124
|
'group flex items-center justify-between w-full px-3 py-1.5 rounded-lg cursor-pointer text-left transition-colors hover:bg-amber-500/10 active:bg-amber-500/20',
|
|
1125
|
-
isActive && 'bg-[rgb(var(--ec-accent-subtle))] hover:bg-[rgb(var(--ec-accent-subtle))]
|
|
1125
|
+
isActive && 'bg-[rgb(var(--ec-accent-subtle))] hover:bg-[rgb(var(--ec-accent-subtle))] rounded-none!'
|
|
1126
1126
|
)}
|
|
1127
1127
|
>
|
|
1128
1128
|
<div className="flex items-center gap-2.5 min-w-0 flex-1">
|
|
@@ -52,7 +52,7 @@ const StudioPageModal: React.FC = () => {
|
|
|
52
52
|
<Dialog.Root open={isOpen} onOpenChange={setIsOpen}>
|
|
53
53
|
<Dialog.Portal>
|
|
54
54
|
<Dialog.Overlay className="fixed inset-0 bg-black/50 data-[state=open]:animate-overlayShow z-50" />
|
|
55
|
-
<Dialog.Content className="fixed top-1/2 left-1/2 w-[90vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg bg-white p-6 shadow-xl focus:outline-
|
|
55
|
+
<Dialog.Content className="fixed top-1/2 left-1/2 w-[90vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg bg-white p-6 shadow-xl focus:outline-hidden data-[state=open]:animate-contentShow z-[100]">
|
|
56
56
|
<Dialog.Title className="text-lg font-semibold text-gray-900 mb-3">Open EventCatalog Studio</Dialog.Title>
|
|
57
57
|
|
|
58
58
|
<Dialog.Description className="text-sm text-gray-600 mb-6">
|
|
@@ -134,7 +134,7 @@ const StudioPageModal: React.FC = () => {
|
|
|
134
134
|
<Dialog.Close asChild>
|
|
135
135
|
<button
|
|
136
136
|
type="button"
|
|
137
|
-
className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-
|
|
137
|
+
className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 transition-colors"
|
|
138
138
|
onClick={() => setIsOpen(false)}
|
|
139
139
|
>
|
|
140
140
|
Close
|
|
@@ -441,7 +441,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
|
|
|
441
441
|
value={globalFilter}
|
|
442
442
|
onChange={(value) => setGlobalFilter(String(value))}
|
|
443
443
|
placeholder={`Search ${collectionLabel.toLowerCase()}...`}
|
|
444
|
-
className="w-full px-3 py-2 text-sm bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-page-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-
|
|
444
|
+
className="w-full px-3 py-2 text-sm bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-page-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] focus:border-[rgb(var(--ec-accent))] transition-colors"
|
|
445
445
|
/>
|
|
446
446
|
|
|
447
447
|
{/* Message Filters Section */}
|
|
@@ -695,7 +695,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
|
|
|
695
695
|
value={tableFilter}
|
|
696
696
|
onChange={(e) => setTableFilter(e.target.value)}
|
|
697
697
|
placeholder="Filter..."
|
|
698
|
-
className="pl-9 pr-3 py-1.5 text-sm w-48 bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-page-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-
|
|
698
|
+
className="pl-9 pr-3 py-1.5 text-sm w-48 bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-page-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] focus:border-[rgb(var(--ec-accent))] transition-colors"
|
|
699
699
|
/>
|
|
700
700
|
{tableFilter && (
|
|
701
701
|
<button
|
|
@@ -709,7 +709,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
|
|
|
709
709
|
</div>
|
|
710
710
|
|
|
711
711
|
{/* Table */}
|
|
712
|
-
<div className="rounded-xl border border-[rgb(var(--ec-page-border))] overflow-hidden shadow-
|
|
712
|
+
<div className="rounded-xl border border-[rgb(var(--ec-page-border))] overflow-hidden shadow-xs">
|
|
713
713
|
<table className="min-w-full divide-y divide-[rgb(var(--ec-page-border))]">
|
|
714
714
|
<thead className="bg-[rgb(var(--ec-content-hover))] sticky top-0 z-10 border-b-2 border-[rgb(var(--ec-page-border))]">
|
|
715
715
|
{table.getHeaderGroups().map((headerGroup, index) => (
|
|
@@ -822,7 +822,7 @@ export function DiscoverTable<T extends DiscoverTableData>({
|
|
|
822
822
|
onChange={(e) => {
|
|
823
823
|
table.setPageSize(Number(e.target.value));
|
|
824
824
|
}}
|
|
825
|
-
className="px-3 py-2 text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg hover:border-[rgb(var(--ec-icon-color))] focus:outline-
|
|
825
|
+
className="px-3 py-2 text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg hover:border-[rgb(var(--ec-icon-color))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] transition-colors"
|
|
826
826
|
>
|
|
827
827
|
{[10, 20, 30, 40, 50].map((pageSize) => (
|
|
828
828
|
<option key={pageSize} value={pageSize}>
|
|
@@ -353,7 +353,7 @@ export const Table = <T extends TCollectionTypes>({
|
|
|
353
353
|
onChange={(e) => {
|
|
354
354
|
table.setPageSize(Number(e.target.value));
|
|
355
355
|
}}
|
|
356
|
-
className="px-3 py-2 text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg hover:border-[rgb(var(--ec-icon-color))] focus:outline-
|
|
356
|
+
className="px-3 py-2 text-sm text-[rgb(var(--ec-page-text-muted))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg hover:border-[rgb(var(--ec-icon-color))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] transition-colors"
|
|
357
357
|
>
|
|
358
358
|
{[10, 20, 30, 40, 50].map((pageSize) => (
|
|
359
359
|
<option key={pageSize} value={pageSize}>
|
|
@@ -428,7 +428,7 @@ function Filter<T extends TCollectionTypes>({ column }: { column: Column<TData<T
|
|
|
428
428
|
value={(columnFilterValue ?? '') as string}
|
|
429
429
|
onChange={(value) => column.setFilterValue(value)}
|
|
430
430
|
placeholder={!column?.columnDef?.meta?.filterVariant ? `Search (${uniqueCount})...` : 'Search...'}
|
|
431
|
-
className="w-full px-3 py-2 text-sm bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-input-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-
|
|
431
|
+
className="w-full px-3 py-2 text-sm bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-input-border))] rounded-lg placeholder:text-[rgb(var(--ec-input-placeholder))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent)/0.2)] focus:border-[rgb(var(--ec-accent))] transition-colors"
|
|
432
432
|
list={column.id + 'list'}
|
|
433
433
|
/>
|
|
434
434
|
</div>
|