diff --git a/registry/.eleventy.js b/registry/.eleventy.js index bf2e04927dd..f512ec44cdb 100644 --- a/registry/.eleventy.js +++ b/registry/.eleventy.js @@ -131,6 +131,11 @@ module.exports = function(eleventyConfig) { return collectExternalServices(provider); }); + // Connection types that declare at least one external service, unchanged. + eleventyConfig.addFilter("getExternalServiceConnections", (conns) => + (conns || []).filter((conn) => conn.external_services && conn.external_services.length > 0), + ); + // Groups a provider's uri_schemes by the Airflow feature that routes them to // the provider. Listing only registered schemes per feature avoids a matrix // whose empty cells read as "unsupported" when the feature just doesn't apply diff --git a/registry/src/css/main.css b/registry/src/css/main.css index 52026786943..fca7395209a 100644 --- a/registry/src/css/main.css +++ b/registry/src/css/main.css @@ -3945,13 +3945,15 @@ main { background: rgb(from var(--color-purple-500) r g b / 0.1); } -/* Connection Builder Card */ -.provider-detail-page .connections-card { +/* Connections and External Services cards share padding and heading style. */ +.provider-detail-page .connections-card, +.provider-detail-page .external-services-card { padding: var(--space-5); margin-bottom: var(--space-6); } -.provider-detail-page .connections-card > h3 { +.provider-detail-page .connections-card > h3, +.provider-detail-page .external-services-card > h3 { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--text-primary); @@ -3961,12 +3963,19 @@ main { gap: var(--space-2); } -.provider-detail-page .connections-card > h3 svg { +.provider-detail-page .connections-card > h3 svg, +.provider-detail-page .external-services-card > h3 svg { width: 1rem; height: 1rem; color: var(--color-green-400); } +.provider-detail-page .external-services-card > p { + font-size: var(--text-sm); + color: var(--text-secondary); + margin-bottom: var(--space-3); +} + .provider-detail-page .connections-card .no-connections { font-size: var(--text-sm); color: var(--text-secondary); @@ -4004,14 +4013,13 @@ main { border-color: var(--color-green-400); } -/* Per-connection external services matrix */ -.provider-detail-page .connections-card .conn-external-services-table { +/* External services table (one row per connection type). */ +.provider-detail-page .external-services-card .external-services-table { width: 100%; - margin-top: var(--space-4); border-collapse: collapse; } -.provider-detail-page .connections-card .conn-external-services-header th { +.provider-detail-page .external-services-card .external-services-header th { padding: var(--space-2) var(--space-3); font-size: var(--text-sm); font-weight: var(--font-semibold); @@ -4020,20 +4028,25 @@ main { background: var(--bg-tertiary); } -.provider-detail-page .connections-card .conn-external-services-row { +.provider-detail-page .external-services-card .external-services-row { border-top: 1px solid var(--border-primary); } -.provider-detail-page .connections-card .conn-external-services-row td { +.provider-detail-page .external-services-card .external-services-row td { padding: var(--space-2) var(--space-3); vertical-align: top; } -.provider-detail-page .connections-card .conn-external-services-row td:first-child { +.provider-detail-page .external-services-card .external-services-name { white-space: nowrap; } -.provider-detail-page .connections-card .conn-external-services-list { +.provider-detail-page .external-services-card .external-services-name code { + font-family: var(--font-mono); + font-size: var(--text-sm); +} + +.provider-detail-page .external-services-card .external-services-list { color: var(--text-secondary); font-size: var(--text-sm); } diff --git a/registry/src/provider-version.njk b/registry/src/provider-version.njk index 8889f58bb9b..c1c448b40de 100644 --- a/registry/src/provider-version.njk +++ b/registry/src/provider-version.njk @@ -37,6 +37,8 @@ eleventyComputed: {% set sourceUrl = pv.provider.source_url %} {% endif %} +{% set externalServiceConns = conns | getExternalServiceConnections %} + {% set totalModules = 0 %} {% for t in types %}{% set totalModules = totalModules + (moduleCounts[t.id] or 0) %}{% endfor %} @@ -257,30 +259,6 @@ eleventyComputed: {% endfor %} - {% set hasExternalServices = false %} - {% for conn in conns %} - {% if conn.external_services and conn.external_services.length > 0 %}{% set hasExternalServices = true %}{% endif %} - {% endfor %} - {% if hasExternalServices %} - - - - - - - - - {% for conn in conns %} - {% if conn.external_services and conn.external_services.length > 0 %} - - - - - {% endif %} - {% endfor %} - -
Connection typeExternal services (examples)
{{ conn.conn_type or conn.connection_type }}{{ conn.external_services | join(", ") }}
- {% endif %}