From af80afee17a60212904b92a8a003ceb40f033758 Mon Sep 17 00:00:00 2001 From: Dimitrie Hoekstra Date: Thu, 6 Aug 2026 11:25:56 +0200 Subject: [PATCH] Link certified node cards to their documentation pages The connector cards in the Certified Nodes showcase looked interactive but were plain divs, on /pricing/ and on /integrations/ alike, so clicking one did nothing. Both showcases now link each card to that node's documentation page, using the same targets the header's By Integration menu already uses. Also fixes the certified fallback in the /integrations/ grid card, which read node.collection where a catalogue entry only carries collections, and normalises the trailing slash on documentation paths taken from a catalogue url so a click does not go through a redirect. --- nuxt/components/CertifiedNodes.vue | 8 +++++++ nuxt/components/certified/NodeTile.vue | 23 ++++++++++++++++--- nuxt/components/integrations/Card.vue | 11 ++------- .../integrations/CertifiedShowcase.vue | 10 +++++++- nuxt/content.config.ts | 1 + nuxt/content/certified-nodes.yml | 14 +++++++++++ nuxt/utils/integrations-ui.ts | 13 +++++++++++ nuxt/utils/integrations.ts | 6 ++++- 8 files changed, 72 insertions(+), 14 deletions(-) diff --git a/nuxt/components/CertifiedNodes.vue b/nuxt/components/CertifiedNodes.vue index c352163366..e2923e0689 100644 --- a/nuxt/components/CertifiedNodes.vue +++ b/nuxt/components/CertifiedNodes.vue @@ -14,6 +14,12 @@ const ACCENT: Record = { indigo: 'bg-indigo-600', red: 'bg-red-6 const accentClass = (b: Bundle) => ACCENT[b.accent] ?? 'bg-gray-500' const tileClass = (b: Bundle, node: { both?: boolean }) => node.both ? 'bg-gradient-to-br from-indigo-600 to-red-600' : accentClass(b) + +// Same event the /node-red/ certified grid emits (src/node-red/index.njk), so +// clicks on a connector aggregate across every place it is featured. +const capture = useCapture() +const captureNodeClick = (name: string, bundle: Bundle) => + capture('certified-node-click', { node: name, collection: bundle.tier, page: location.pathname })