Skip to content

[Docs] Brand marks for cookbook recipes and their architecture diagrams - #693

Merged
ashish-kumar2-glean merged 5 commits into
mainfrom
ashish2/0819-cookbook-brand-icons
Aug 20, 2026
Merged

[Docs] Brand marks for cookbook recipes and their architecture diagrams#693
ashish-kumar2-glean merged 5 commits into
mainfrom
ashish2/0819-cookbook-brand-icons

Conversation

@ashish-kumar2-glean

@ashish-kumar2-glean ashish-kumar2-glean commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Cookbook recipes built on third-party products fall back to a generic glyph today — the Glean icon set is a product glyph set, not a brand one, so it has no mark for any of them.

Adds seven marks the way Lovable is already carried, and makes them resolve in architecture diagrams as well as on cards.

Marks

File
cursor.svg Cursor logomark, flat #26251e
n8n.svg n8n logomark, wordmark removed, square viewBox
github.svg GitHub Invertocat, flat #24292E
gmail.svg Gmail envelope, five Google colours
gong.svg Gong starburst, trademark #8039DF
google-calendar.svg Google Calendar, six Google colours
glean-trigger.svg Glean Trigger lockup — wordmark and bolt on #343CED

Component changes

src/components/Cookbook/brandIcons.ts — seven BRAND_ICON_SRC entries.
src/components/Cookbook/categories.tsx — export AdaptiveBrandIcon for reuse.
src/components/Cookbook/RecipeLayout.tsx — two changes, both described below.

Brand marks resolve in architecture nodes. CategoryTile resolves a recipe's icon through BRAND_ICON_SRC first, but architecture nodes called getIcon(node.icon, 'glean') directly. A brand key there returned null and rendered nothing, so a mark would appear on the card and silently vanish from the diagram. ArchNodeIcon now resolves brand mark → Glean set → category default. It is a separate component because the brand path needs useBaseUrl, which cannot be called from inside the nodes' .map().

Emphasized nodes can name their own mark. The guard was if (node.emphasized) — always the Glean wordmark, "whatever icon it declares". A trigger node wants the Glean Trigger lockup instead, so it is now node.emphasized && !brand. Every existing emphasized node declares no icon, so none of them change.

Why non-adaptive

All seven are registered adaptive: false. Gmail and Calendar are multi-colour, Gong is a trademark purple, and Glean Trigger carries a solid blue field — forcing currentColor would destroy each of them. For the flat marks the reason is the one Lovable already sits on: the category tile's pastel background has no dark-mode override, so a flat dark mark reads in either theme on its own colours, and recolouring a trademark is an alteration most brand guidelines forbid.

Contrast against the category pastels: Cursor 13.2:1, GitHub 12.6:1.

Consumed by gleanwork/glean-cookbook#47

That PR points the four trigger recipes' architecture nodes at gmail, gong, google-calendar and glean-trigger. This PR must merge firstgetIcon returns null for an unknown key, so the reverse order leaves those nodes rendering blank. The emphasized-node change above is also what makes its glean-trigger assignments take effect at all.

Verification

Built the site against this branch plus #47 and confirmed each page renders its marks:

page marks
customer-email-draft-agent gmail + glean-trigger
gong-call-follow-up-n8n gong + glean-trigger
pre-meeting-brief google-calendar + glean-trigger + cursor
github-pr-review-monitor github + glean-trigger

icon-usage.test.ts passes; production build clean.

@vercel

vercel Bot commented Aug 19, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
glean-developer-site Ready Ready Preview Aug 20, 2026 8:21am

Request Review

Two cookbook trigger recipes are built on Cursor Automations and n8n. The
Glean icon set has no mark for either, so both fall back to a generic glyph.

Carried the same way as Lovable: a static SVG plus a BRAND_ICON_SRC entry,
non-adaptive so each mark keeps its own colours -- the tile pastel has no
dark-mode override, and recolouring a trademark to currentColor is an
alteration most brand guidelines forbid.

n8n publishes a lockup, so the wordmark paths are removed and the logomark
centred in a square viewBox.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ashish-kumar2-glean
ashish-kumar2-glean force-pushed the ashish2/0819-cookbook-brand-icons branch from b2e0186 to aa676fd Compare August 19, 2026 04:45
@ashish-kumar2-glean
ashish-kumar2-glean marked this pull request as ready for review August 19, 2026 04:52
@ashish-kumar2-glean
ashish-kumar2-glean requested a review from a team as a code owner August 19, 2026 04:52
Architecture nodes went straight to getIcon(name, 'glean'), so a brand key
returned null and rendered nothing -- the same fallback the recipe cards
already handle via BRAND_ICON_SRC.

Extracts ArchNodeIcon, which resolves a brand mark first and then falls
through to the Glean set and the category default. Its own component because
the brand path needs useBaseUrl, which cannot be called inside the nodes' map.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Official Invertocat from github.githubassets.com: single path, flat #24292E,
square viewBox, 12.6:1 against every category pastel.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Comment thread src/components/Cookbook/RecipeLayout.tsx Outdated
@ashish-kumar2-glean ashish-kumar2-glean changed the title [Docs] Add Cursor and n8n brand icons for cookbook recipe tiles [Docs] Brand icons for cookbook recipes: Cursor, n8n, GitHub Aug 19, 2026
Extracting ArchNodeIcon collapsed the final branch and changed the
no-icon-no-category fallback from feather Box to glean-app. No node in the
current registry hits it, but it was an unintended behaviour change.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds four marks the trigger recipes need for their architecture diagrams.
All four are registered adaptive: false -- Gmail and Calendar are
multi-colour, Gong is a trademark purple, and Glean Trigger carries a solid
blue field, so forcing currentColor would destroy each of them.

ArchNodeIcon previously hardcoded emphasized nodes to the Glean wordmark
'whatever icon it declares'. A trigger node wants the Glean Trigger lockup,
so the guard is now 'emphasized && !brand': an emphasized node still falls
back to the wordmark unless it names a brand icon of its own. Existing
emphasized nodes declare no icon, so none of them change.

The recipes that consume these keys are in gleanwork/glean-cookbook#47.
getIcon returns null for an unknown key, so this must merge first or those
nodes render blank.
@ashish-kumar2-glean ashish-kumar2-glean changed the title [Docs] Brand icons for cookbook recipes: Cursor, n8n, GitHub [Docs] Brand marks for cookbook recipes and their architecture diagrams Aug 20, 2026
@ashish-kumar2-glean
ashish-kumar2-glean merged commit c802cc9 into main Aug 20, 2026
4 checks passed
@ashish-kumar2-glean
ashish-kumar2-glean deleted the ashish2/0819-cookbook-brand-icons branch August 20, 2026 09:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants