@eventcatalog/core 3.0.0-beta.9 → 3.1.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/README.md +41 -98
- package/dist/__mocks__/astro-content.cjs +32 -0
- package/dist/__mocks__/astro-content.d.cts +13 -0
- package/dist/__mocks__/astro-content.d.ts +13 -0
- package/dist/__mocks__/astro-content.js +7 -0
- 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 +2 -19
- package/dist/catalog-to-astro-content-directory.d.cts +1 -2
- package/dist/catalog-to-astro-content-directory.d.ts +1 -2
- package/dist/catalog-to-astro-content-directory.js +3 -5
- package/dist/{chunk-RAJ7TGWN.js → chunk-2WGZFERB.js} +1 -1
- package/dist/{chunk-R2BJ7MJG.js → chunk-6Z6ARMQS.js} +1 -17
- package/dist/{chunk-TC3R47V6.js → chunk-ESUL7UE6.js} +1 -1
- package/dist/{chunk-2VPX4WIJ.js → chunk-I3CW5KQI.js} +1 -1
- package/dist/{chunk-TT4LZO2Q.js → chunk-KBO4IL2D.js} +1 -1
- package/dist/{chunk-A4MGWK5T.js → chunk-URR33SNK.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog.cjs +20 -64
- package/dist/eventcatalog.config.d.cts +11 -0
- package/dist/eventcatalog.config.d.ts +11 -0
- package/dist/eventcatalog.js +26 -52
- 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 +4 -1
- package/eventcatalog/integrations/eventcatalog-features.ts +69 -0
- package/eventcatalog/public/icons/asyncapi-black.svg +2 -0
- package/eventcatalog/public/icons/graphql-black.svg +1 -0
- package/eventcatalog/public/icons/openapi-black.svg +1 -0
- package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +1010 -0
- package/eventcatalog/src/components/ChatPanel/ChatPanelButton.tsx +24 -0
- 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 +322 -173
- package/eventcatalog/src/components/Grids/MessageGrid.tsx +317 -178
- package/eventcatalog/src/components/Grids/specification-utils.ts +106 -0
- package/eventcatalog/src/components/Header.astro +40 -15
- 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 +28 -15
- 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 +95 -90
- package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +144 -0
- 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 +36 -8
- package/eventcatalog/src/components/SchemaExplorer/ProducersConsumersSection.tsx +17 -13
- package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +37 -10
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsHeader.tsx +152 -109
- package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsPanel.tsx +6 -15
- package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +257 -61
- package/eventcatalog/src/components/SchemaExplorer/SchemaFilters.tsx +64 -126
- package/eventcatalog/src/components/SchemaExplorer/SchemaListItem.tsx +53 -43
- package/eventcatalog/src/components/SchemaExplorer/SchemaViewerModal.tsx +8 -8
- package/eventcatalog/src/components/Search/Search.astro +5 -5
- package/eventcatalog/src/components/Search/SearchDataLoader.astro +25 -0
- package/eventcatalog/src/components/Search/SearchModal.tsx +65 -36
- package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +37 -24
- package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +117 -56
- package/eventcatalog/src/components/SideNav/SideNav.astro +0 -15
- package/eventcatalog/src/components/Tables/Table.tsx +97 -77
- package/eventcatalog/src/components/Tables/columns/ContainersTableColumns.tsx +114 -74
- package/eventcatalog/src/components/Tables/columns/DomainTableColumns.tsx +77 -55
- package/eventcatalog/src/components/Tables/columns/FlowTableColumns.tsx +36 -36
- package/eventcatalog/src/components/Tables/columns/MessageTableColumns.tsx +116 -77
- package/eventcatalog/src/components/Tables/columns/ServiceTableColumns.tsx +111 -94
- package/eventcatalog/src/components/Tables/columns/SharedColumns.tsx +31 -26
- package/eventcatalog/src/components/Tables/columns/TeamsTableColumns.tsx +123 -215
- package/eventcatalog/src/components/Tables/columns/UserTableColumns.tsx +156 -243
- package/eventcatalog/src/components/ThemeToggle.tsx +18 -0
- package/eventcatalog/src/content.config.ts +1 -13
- package/eventcatalog/src/enterprise/ai/chat-api.ts +360 -0
- package/eventcatalog/src/enterprise/auth/[...auth].ts +3 -0
- package/eventcatalog/src/enterprise/auth/login.astro +420 -0
- package/eventcatalog/src/enterprise/collections/index.ts +0 -1
- 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 +14 -11
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +187 -123
- package/eventcatalog/src/pages/_index.astro +213 -573
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.ts +8 -2
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +9 -5
- package/eventcatalog/src/pages/directory/[type]/index.astro +6 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +19 -3
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +7 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +5 -5
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +81 -64
- package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +23 -24
- package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +214 -125
- package/eventcatalog/src/pages/docs/custom/index.astro +2 -2
- package/eventcatalog/src/pages/docs/teams/[id]/index.astro +98 -70
- package/eventcatalog/src/pages/docs/teams/[id].mdx.ts +36 -0
- package/eventcatalog/src/pages/docs/users/[id]/index.astro +60 -45
- package/eventcatalog/src/pages/docs/users/[id].mdx.ts +36 -0
- package/eventcatalog/src/pages/schemas/explorer/_index.data.ts +178 -0
- package/eventcatalog/src/pages/schemas/explorer/index.astro +7 -157
- package/eventcatalog/src/pages/studio.astro +155 -75
- package/eventcatalog/src/remark-plugins/directives.ts +36 -15
- package/eventcatalog/src/remark-plugins/mermaid.ts +2 -2
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/container.ts +10 -1
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/domain.ts +17 -7
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/message.ts +10 -1
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/service.ts +11 -4
- package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/shared.ts +14 -0
- package/eventcatalog/src/stores/{sidebar-store.ts → sidebar-store/index.ts} +1 -1
- 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/collections/channels.ts +0 -2
- package/eventcatalog/src/utils/collections/commands.ts +0 -2
- package/eventcatalog/src/utils/collections/containers.ts +0 -2
- package/eventcatalog/src/utils/collections/domains.ts +0 -2
- package/eventcatalog/src/utils/collections/entities.ts +0 -2
- package/eventcatalog/src/utils/collections/events.ts +0 -2
- package/eventcatalog/src/utils/collections/flows.ts +0 -2
- package/eventcatalog/src/utils/collections/queries.ts +0 -2
- package/eventcatalog/src/utils/collections/schemas.ts +45 -7
- package/eventcatalog/src/utils/collections/services.ts +0 -2
- package/eventcatalog/src/utils/feature.ts +13 -5
- package/eventcatalog/src/utils/node-graphs/services-node-graph.ts +1 -1
- package/eventcatalog/src/utils/resource-files.ts +86 -0
- package/eventcatalog/tailwind.config.mjs +6 -3
- package/package.json +12 -15
- package/default-files-for-collections/changelogs.md +0 -5
- package/default-files-for-collections/channels.md +0 -8
- package/default-files-for-collections/commands.md +0 -8
- package/default-files-for-collections/domains.md +0 -8
- package/default-files-for-collections/events.md +0 -8
- package/default-files-for-collections/flows.md +0 -11
- package/default-files-for-collections/queries.md +0 -8
- package/default-files-for-collections/services.md +0 -8
- package/default-files-for-collections/ubiquitousLanguages.md +0 -7
- package/eventcatalog/src/enterprise/collections/chat-prompts.ts +0 -32
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/Chat.tsx +0 -60
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/ChatMessage.tsx +0 -414
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/ChatSidebar.tsx +0 -169
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/InputModal.tsx +0 -244
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/MentionInput.tsx +0 -211
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/WelcomePromptArea.tsx +0 -176
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/default-prompts.ts +0 -93
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/hooks/ChatProvider.tsx +0 -143
- package/eventcatalog/src/enterprise/eventcatalog-chat/components/windows/ChatWindow.server.tsx +0 -387
- package/eventcatalog/src/enterprise/eventcatalog-chat/pages/api/chat.ts +0 -59
- package/eventcatalog/src/enterprise/eventcatalog-chat/pages/chat/index.astro +0 -104
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/ai-provider.ts +0 -140
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/anthropic.ts +0 -28
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/google.ts +0 -41
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/index.ts +0 -26
- package/eventcatalog/src/enterprise/eventcatalog-chat/providers/openai.ts +0 -61
- package/eventcatalog/src/enterprise/eventcatalog-chat/utils/chat-prompts.ts +0 -50
- package/eventcatalog/src/pages/auth/login.astro +0 -280
- package/eventcatalog/src/pages/chat/feature.astro +0 -179
- package/eventcatalog/src/pages/chat/index.astro +0 -10
- package/eventcatalog/src/pages/docs/_default-docs.mdx +0 -25
- package/eventcatalog/src/pages/docs/index.astro +0 -33
- package/eventcatalog/src/pages/nav-index.json.ts +0 -30
- /package/eventcatalog/src/{pages → enterprise}/auth/error.astro +0 -0
- /package/eventcatalog/src/{middleware-auth.ts → enterprise/auth/middleware/middleware-auth.ts} +0 -0
- /package/eventcatalog/src/{middleware.ts → enterprise/auth/middleware/middleware.ts} +0 -0
- /package/eventcatalog/src/{pages/unauthorized/index.astro → enterprise/auth/unauthorized.astro} +0 -0
- /package/eventcatalog/src/{pages → enterprise}/plans/index.astro +0 -0
- /package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/flow.ts +0 -0
- /package/eventcatalog/src/{components/SideNav/NestedSideBar/sidebar-builder.ts → stores/sidebar-store/state.ts} +0 -0
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
import catalog from '@utils/eventcatalog-config/catalog';
|
|
3
3
|
import Search from '@components/Search/Search.astro';
|
|
4
4
|
import { buildUrl } from '@utils/url-builder';
|
|
5
|
-
import { showEventCatalogBranding, showCustomBranding } from '@utils/feature';
|
|
5
|
+
import { showEventCatalogBranding, showCustomBranding, isEventCatalogChatEnabled } from '@utils/feature';
|
|
6
6
|
import { getSession } from 'auth-astro/server';
|
|
7
7
|
import { isAuthEnabled, isSSR } from '@utils/feature';
|
|
8
8
|
import { EnvironmentDropdown } from './EnvironmentDropdown';
|
|
9
|
+
import ChatPanelButton from './ChatPanel/ChatPanelButton';
|
|
10
|
+
import ThemeToggle from './ThemeToggle';
|
|
9
11
|
|
|
10
12
|
let session = null;
|
|
11
13
|
if (isAuthEnabled()) {
|
|
@@ -23,7 +25,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
23
25
|
|
|
24
26
|
<nav
|
|
25
27
|
id="eventcatalog-header"
|
|
26
|
-
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))]"
|
|
27
29
|
>
|
|
28
30
|
<div class="px-4 sm:px-4 lg:px-4">
|
|
29
31
|
<div class="flex justify-between items-center">
|
|
@@ -42,8 +44,11 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
42
44
|
</a>
|
|
43
45
|
</div>
|
|
44
46
|
|
|
45
|
-
<div class="hidden lg:
|
|
46
|
-
<
|
|
47
|
+
<div class="hidden lg:flex flex-grow -ml-1 items-center">
|
|
48
|
+
<div class="flex-grow max-w-xl">
|
|
49
|
+
<Search />
|
|
50
|
+
</div>
|
|
51
|
+
{isEventCatalogChatEnabled() && <ChatPanelButton client:load />}
|
|
47
52
|
</div>
|
|
48
53
|
|
|
49
54
|
<div class="hidden md:block w-3/12">
|
|
@@ -53,6 +58,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
53
58
|
{catalog.environments && catalog.environments.length > 0 && (
|
|
54
59
|
<EnvironmentDropdown environments={catalog.environments} client:load />
|
|
55
60
|
)}
|
|
61
|
+
<ThemeToggle client:load />
|
|
56
62
|
<div class="relative">
|
|
57
63
|
<button
|
|
58
64
|
id="profile-menu-button"
|
|
@@ -60,6 +66,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
60
66
|
class="flex items-center focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-400 rounded-full"
|
|
61
67
|
aria-expanded="false"
|
|
62
68
|
aria-haspopup="true"
|
|
69
|
+
aria-label="User menu"
|
|
63
70
|
>
|
|
64
71
|
{session.user?.image && !session.user?.image?.includes('googleusercontent.com') ? (
|
|
65
72
|
<img
|
|
@@ -82,15 +89,17 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
82
89
|
</button>
|
|
83
90
|
<div
|
|
84
91
|
id="profile-dropdown"
|
|
85
|
-
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"
|
|
86
93
|
>
|
|
87
|
-
<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))]">
|
|
88
95
|
<div class="font-semibold">{session.user?.name || 'User'}</div>
|
|
89
|
-
{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
|
+
)}
|
|
90
99
|
</div>
|
|
91
100
|
<button
|
|
92
101
|
id="signout-btn"
|
|
93
|
-
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"
|
|
94
103
|
>
|
|
95
104
|
Sign out
|
|
96
105
|
</button>
|
|
@@ -106,27 +115,40 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
106
115
|
{isAuthEnabled() && (
|
|
107
116
|
<button
|
|
108
117
|
id="okta-signin-btn"
|
|
109
|
-
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"
|
|
110
119
|
>
|
|
111
120
|
Sign In
|
|
112
121
|
</button>
|
|
113
122
|
)}
|
|
123
|
+
<ThemeToggle client:load />
|
|
114
124
|
{showEventCatalogBranding() && (
|
|
115
125
|
<ul class="flex space-x-4">
|
|
116
126
|
<li>
|
|
117
127
|
<a
|
|
118
128
|
href="https://discord.com/invite/3rjaZMmrAm"
|
|
119
|
-
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"
|
|
130
|
+
aria-label="Join our Discord community"
|
|
120
131
|
>
|
|
121
|
-
<img
|
|
132
|
+
<img
|
|
133
|
+
src={buildUrl('/icons/discord.svg', true)}
|
|
134
|
+
alt=""
|
|
135
|
+
class="h-6 w-6 hover:opacity-100 transition-opacity"
|
|
136
|
+
aria-hidden="true"
|
|
137
|
+
/>
|
|
122
138
|
</a>
|
|
123
139
|
</li>
|
|
124
140
|
<li>
|
|
125
141
|
<a
|
|
126
142
|
href="https://github.com/event-catalog/eventcatalog"
|
|
127
|
-
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"
|
|
144
|
+
aria-label="View EventCatalog on GitHub"
|
|
128
145
|
>
|
|
129
|
-
<img
|
|
146
|
+
<img
|
|
147
|
+
src={buildUrl('/icons/github.svg', true)}
|
|
148
|
+
alt=""
|
|
149
|
+
class="h-6 w-6 hover:opacity-100 transition-opacity"
|
|
150
|
+
aria-hidden="true"
|
|
151
|
+
/>
|
|
130
152
|
</a>
|
|
131
153
|
</li>
|
|
132
154
|
</ul>
|
|
@@ -136,11 +158,14 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
136
158
|
<li>
|
|
137
159
|
<a
|
|
138
160
|
href={repositoryUrl}
|
|
139
|
-
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"
|
|
162
|
+
aria-label="View repository on GitHub"
|
|
140
163
|
>
|
|
141
164
|
<img
|
|
142
165
|
src={buildUrl('/icons/github.svg', true)}
|
|
166
|
+
alt=""
|
|
143
167
|
class="h-6 w-6 opacity-70 hover:opacity-100 transition-opacity"
|
|
168
|
+
aria-hidden="true"
|
|
144
169
|
/>
|
|
145
170
|
</a>
|
|
146
171
|
</li>
|
|
@@ -156,7 +181,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
|
|
|
156
181
|
<button
|
|
157
182
|
id="menu-toggle"
|
|
158
183
|
type="button"
|
|
159
|
-
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))]"
|
|
160
185
|
aria-label="Toggle menu"
|
|
161
186
|
>
|
|
162
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
|
);
|
|
@@ -1,15 +1,55 @@
|
|
|
1
1
|
import { InformationCircleIcon, ExclamationTriangleIcon } from '@heroicons/react/24/outline';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
type AdmonitionType = 'danger' | 'alert' | 'warning' | 'info' | 'note';
|
|
4
|
+
|
|
5
|
+
interface AdmonitionConfig {
|
|
6
|
+
icon: typeof InformationCircleIcon;
|
|
7
|
+
title: string;
|
|
8
|
+
containerClasses: string;
|
|
9
|
+
iconClasses: string;
|
|
10
|
+
titleClasses: string;
|
|
11
|
+
contentClasses: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const getConfigurationByType = (type: string): AdmonitionConfig => {
|
|
4
15
|
switch (type) {
|
|
5
16
|
case 'danger':
|
|
6
|
-
return { color: 'red', icon: ExclamationTriangleIcon, title: 'Danger' };
|
|
7
17
|
case 'alert':
|
|
8
|
-
return {
|
|
18
|
+
return {
|
|
19
|
+
icon: ExclamationTriangleIcon,
|
|
20
|
+
title: type === 'danger' ? 'Danger' : 'Alert',
|
|
21
|
+
containerClasses: 'bg-red-50 dark:bg-red-950/50 border-red-500',
|
|
22
|
+
iconClasses: 'text-red-500 dark:text-red-400',
|
|
23
|
+
titleClasses: 'text-red-600 dark:text-red-300',
|
|
24
|
+
contentClasses: 'text-red-700 dark:text-red-200',
|
|
25
|
+
};
|
|
9
26
|
case 'warning':
|
|
10
|
-
return {
|
|
27
|
+
return {
|
|
28
|
+
icon: ExclamationTriangleIcon,
|
|
29
|
+
title: 'Warning',
|
|
30
|
+
containerClasses: 'bg-yellow-50 dark:bg-yellow-950/50 border-yellow-500',
|
|
31
|
+
iconClasses: 'text-yellow-500 dark:text-yellow-400',
|
|
32
|
+
titleClasses: 'text-yellow-600 dark:text-yellow-300',
|
|
33
|
+
contentClasses: 'text-yellow-700 dark:text-yellow-200',
|
|
34
|
+
};
|
|
35
|
+
case 'note':
|
|
36
|
+
return {
|
|
37
|
+
icon: InformationCircleIcon,
|
|
38
|
+
title: 'Note',
|
|
39
|
+
containerClasses: 'bg-blue-50 dark:bg-blue-950/50 border-blue-500',
|
|
40
|
+
iconClasses: 'text-blue-500 dark:text-blue-400',
|
|
41
|
+
titleClasses: 'text-blue-600 dark:text-blue-300',
|
|
42
|
+
contentClasses: 'text-blue-700 dark:text-blue-200',
|
|
43
|
+
};
|
|
11
44
|
default:
|
|
12
|
-
return {
|
|
45
|
+
return {
|
|
46
|
+
icon: InformationCircleIcon,
|
|
47
|
+
title: 'Info',
|
|
48
|
+
containerClasses: 'bg-indigo-50 dark:bg-indigo-950/50 border-indigo-500',
|
|
49
|
+
iconClasses: 'text-indigo-500 dark:text-indigo-400',
|
|
50
|
+
titleClasses: 'text-indigo-600 dark:text-indigo-300',
|
|
51
|
+
contentClasses: 'text-indigo-700 dark:text-indigo-200',
|
|
52
|
+
};
|
|
13
53
|
}
|
|
14
54
|
};
|
|
15
55
|
|
|
@@ -25,13 +65,13 @@ export default function Admonition({ children, type = 'info', className = '', ti
|
|
|
25
65
|
const Icon = config.icon;
|
|
26
66
|
|
|
27
67
|
return (
|
|
28
|
-
<div className={
|
|
68
|
+
<div className={`${config.containerClasses} border-l-4 p-4 my-4 ${className} rounded-md not-prose`}>
|
|
29
69
|
<div className="flex flex-col">
|
|
30
70
|
<div className="flex items-center justify-start">
|
|
31
|
-
<Icon className={`h-6 w-6
|
|
32
|
-
<h3 className={`ml-2
|
|
71
|
+
<Icon className={`h-6 w-6 ${config.iconClasses} stroke-2`} aria-hidden="true" />
|
|
72
|
+
<h3 className={`ml-2 ${config.titleClasses} font-bold text-md`}>{title || config.title}</h3>
|
|
33
73
|
</div>
|
|
34
|
-
<div className={`mt-2
|
|
74
|
+
<div className={`mt-2 ${config.contentClasses} text-md`}>{children}</div>
|
|
35
75
|
</div>
|
|
36
76
|
</div>
|
|
37
77
|
);
|
|
@@ -83,16 +83,16 @@ const sortedGroups = Object.entries(groupedAttachments).sort(([a], [b]) => {
|
|
|
83
83
|
<section class="not-prose my-8">
|
|
84
84
|
{title && <h3 class="flex items-center gap-2 text-3xl font-bold mb-4">{title}</h3>}
|
|
85
85
|
|
|
86
|
-
{description && <p class="text-
|
|
86
|
+
{description && <p class="text-[rgb(var(--ec-page-text-muted))] mb-6 prose prose-md">{description}</p>}
|
|
87
87
|
|
|
88
88
|
{
|
|
89
89
|
normalizedAttachments.length === 0 ? (
|
|
90
|
-
<div class="text-
|
|
90
|
+
<div class="text-[rgb(var(--ec-page-text-muted))] text-sm italic">No attachments available.</div>
|
|
91
91
|
) : (
|
|
92
92
|
<div class="space-y-6">
|
|
93
93
|
{sortedGroups.map(([groupType, groupAttachments], index) => (
|
|
94
94
|
<div>
|
|
95
|
-
<h4 class="text-sm font-medium text-
|
|
95
|
+
<h4 class="text-sm font-medium text-[rgb(var(--ec-page-text))] mb-3 uppercase tracking-wider">
|
|
96
96
|
{groupType} ({groupAttachments.length})
|
|
97
97
|
</h4>
|
|
98
98
|
<div class={`grid grid-cols-1 ${columns === 1 ? '' : `md:grid-cols-${Math.min(columns, 3)}`} gap-4`}>
|
|
@@ -105,34 +105,38 @@ 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-
|
|
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-none 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
|
-
<div class="flex-shrink-0 p-2 bg-
|
|
112
|
-
{IconComponent &&
|
|
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">
|
|
112
|
+
{IconComponent && (
|
|
113
|
+
<IconComponent className="w-5 h-5 text-[rgb(var(--ec-icon-color))] group-hover:text-[rgb(var(--ec-accent))]" />
|
|
114
|
+
)}
|
|
113
115
|
</div>
|
|
114
116
|
|
|
115
117
|
<div class="flex-grow min-w-0">
|
|
116
118
|
<div class="flex items-center gap-2">
|
|
117
|
-
<h5 class="text-sm font-medium text-
|
|
119
|
+
<h5 class="text-sm font-medium text-[rgb(var(--ec-page-text))] group-hover:text-[rgb(var(--ec-accent))] truncate">
|
|
118
120
|
{attachment.title || 'Attachment'}
|
|
119
121
|
</h5>
|
|
120
122
|
{isExternal && (
|
|
121
|
-
<Icons.ArrowTopRightOnSquareIcon className="w-3 h-3 text-
|
|
123
|
+
<Icons.ArrowTopRightOnSquareIcon className="w-3 h-3 text-[rgb(var(--ec-icon-color))] group-hover:text-[rgb(var(--ec-accent))] flex-shrink-0" />
|
|
122
124
|
)}
|
|
123
125
|
</div>
|
|
124
126
|
|
|
125
127
|
{attachment.summary && (
|
|
126
|
-
<p class="mt-1 text-xs text-
|
|
128
|
+
<p class="mt-1 text-xs text-[rgb(var(--ec-page-text-muted))] group-hover:text-[rgb(var(--ec-accent-text))] line-clamp-2">
|
|
129
|
+
{attachment.summary}
|
|
130
|
+
</p>
|
|
127
131
|
)}
|
|
128
132
|
|
|
129
133
|
{attachment.description && (
|
|
130
|
-
<p class="mt-1 text-xs text-
|
|
134
|
+
<p class="mt-1 text-xs text-[rgb(var(--ec-page-text-muted))] group-hover:text-[rgb(var(--ec-accent-text))] line-clamp-2">
|
|
131
135
|
{attachment.description}
|
|
132
136
|
</p>
|
|
133
137
|
)}
|
|
134
138
|
|
|
135
|
-
<div class="mt-2 text-xs text-
|
|
139
|
+
<div class="mt-2 text-xs text-[rgb(var(--ec-icon-color))] group-hover:text-[rgb(var(--ec-accent))] truncate">
|
|
136
140
|
{attachment.url.replace(/^https?:\/\//, '')}
|
|
137
141
|
</div>
|
|
138
142
|
</div>
|
|
@@ -5,14 +5,17 @@ const ChannelParameters = (data: CollectionEntry<'channels'>['data']) => {
|
|
|
5
5
|
return (
|
|
6
6
|
<div className="container mx-auto py-4 not-prose space-y-4">
|
|
7
7
|
<div>
|
|
8
|
-
<h4 className="text-2xl font-bold">Channel information</h4>
|
|
8
|
+
<h4 className="text-2xl font-bold text-[rgb(var(--ec-page-text))]">Channel information</h4>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
11
|
<div>
|
|
12
|
-
<p className="text-md">
|
|
12
|
+
<p className="text-md text-[rgb(var(--ec-page-text))]">
|
|
13
13
|
{data.address && (
|
|
14
14
|
<div>
|
|
15
|
-
<span className="font-semibold">Address:</span>
|
|
15
|
+
<span className="font-semibold">Address:</span>{' '}
|
|
16
|
+
<code className="bg-[rgb(var(--ec-content-hover))] p-1 rounded text-[rgb(var(--ec-page-text))]">
|
|
17
|
+
{data.address}
|
|
18
|
+
</code>
|
|
16
19
|
</div>
|
|
17
20
|
)}
|
|
18
21
|
{data.protocols && data.protocols.length > 0 && (
|
|
@@ -22,7 +25,10 @@ const ChannelParameters = (data: CollectionEntry<'channels'>['data']) => {
|
|
|
22
25
|
{data.protocols.map((protocol) => {
|
|
23
26
|
const IconComponent = getIconForProtocol(protocol.toLowerCase());
|
|
24
27
|
return (
|
|
25
|
-
<li
|
|
28
|
+
<li
|
|
29
|
+
key={protocol}
|
|
30
|
+
className="text-sm flex items-center space-x-1 bg-[rgb(var(--ec-content-hover))] rounded-md px-1"
|
|
31
|
+
>
|
|
26
32
|
{IconComponent && <IconComponent className="w-4 h-4" />}
|
|
27
33
|
<span>{protocol}</span>
|
|
28
34
|
</li>
|
|
@@ -36,22 +42,30 @@ const ChannelParameters = (data: CollectionEntry<'channels'>['data']) => {
|
|
|
36
42
|
|
|
37
43
|
{data.parameters && Object.keys(data.parameters).length > 0 && (
|
|
38
44
|
<div className="overflow-x-auto">
|
|
39
|
-
<table className="min-w-full bg-
|
|
45
|
+
<table className="min-w-full bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))]">
|
|
40
46
|
<thead>
|
|
41
|
-
<tr className="bg-
|
|
42
|
-
<th className="py-2 px-4 border-b text-left">Parameter</th>
|
|
43
|
-
<th className="py-2 px-4 border-b text-left">Description</th>
|
|
44
|
-
<th className="py-2 px-4 border-b text-left">Options</th>
|
|
45
|
-
<th className="py-2 px-4 border-b text-left">Default</th>
|
|
47
|
+
<tr className="bg-[rgb(var(--ec-accent))] text-white">
|
|
48
|
+
<th className="py-2 px-4 border-b border-[rgb(var(--ec-page-border))] text-left">Parameter</th>
|
|
49
|
+
<th className="py-2 px-4 border-b border-[rgb(var(--ec-page-border))] text-left">Description</th>
|
|
50
|
+
<th className="py-2 px-4 border-b border-[rgb(var(--ec-page-border))] text-left">Options</th>
|
|
51
|
+
<th className="py-2 px-4 border-b border-[rgb(var(--ec-page-border))] text-left">Default</th>
|
|
46
52
|
</tr>
|
|
47
53
|
</thead>
|
|
48
54
|
<tbody>
|
|
49
55
|
{Object.entries(data.parameters).map(([param, details]) => (
|
|
50
|
-
<tr className="hover:bg-
|
|
51
|
-
<td className="py-2 px-4 border-b">
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
<td className="py-2 px-4 border-b
|
|
56
|
+
<tr className="hover:bg-[rgb(var(--ec-content-hover))]" key={param}>
|
|
57
|
+
<td className="py-2 px-4 border-b border-[rgb(var(--ec-page-border))] text-[rgb(var(--ec-page-text))]">
|
|
58
|
+
{param}
|
|
59
|
+
</td>
|
|
60
|
+
<td className="py-2 px-4 border-b border-[rgb(var(--ec-page-border))] text-[rgb(var(--ec-page-text-muted))]">
|
|
61
|
+
{details.description}
|
|
62
|
+
</td>
|
|
63
|
+
<td className="py-2 px-4 border-b border-[rgb(var(--ec-page-border))] text-[rgb(var(--ec-page-text-muted))]">
|
|
64
|
+
{details.enum ? details.enum.join(', ') : 'N/A'}
|
|
65
|
+
</td>
|
|
66
|
+
<td className="py-2 px-4 border-b border-[rgb(var(--ec-page-border))] text-[rgb(var(--ec-page-text-muted))]">
|
|
67
|
+
{details.default || 'N/A'}
|
|
68
|
+
</td>
|
|
55
69
|
</tr>
|
|
56
70
|
))}
|
|
57
71
|
</tbody>
|