Welcome to Vanilla Breeze
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
How to link a vocabulary concept inline so the popover enhancement and the glossary page both pick it up. First mention in , subsequent mentions plain.
The site has a single glossary generated from site/src/_data/vocabulary.json. When you mention one of those concepts in article prose, link to it. Two things light up:
id="term-{@id}"), so the link is always valid even without JS./js/definition-popover.js, generated at build) fetches /definitions.json on first interaction and shows the definition in a native popover anchored to the term. Modifier-clicks fall through to the glossary page.Two forms, depending on whether this is the first mention of the concept on the page.
Wrap the link in <dfn>. The data-concept attribute carries the SKOS @id from vocabulary.json. The href deep-links to the term's anchor on the glossary page so the link is meaningful with no JS.
<p>We use <dfn><a href="/glossary/#term-progressive-enhancement" data-concept="progressive-enhancement">progressive enhancement</a></dfn> to ensure content is available before scripts load.</p>
Plain anchor — no <dfn>. <dfn> marks the defining instance; using it on every mention would be wrong semantically and visually noisy.
<p>This <a href="/glossary/#term-progressive-enhancement" data-concept="progressive-enhancement">progressive enhancement</a> approach also benefits search engine indexing.</p>
<dfn> per concept per page. Subsequent mentions on the same page should be plain anchors.<code>, <pre>, or another <a>. Code samples carry their own typography contract; nested anchors are invalid HTML.concepts: [...]. The meta-tag contract already emits <meta name="concept"> + <link rel="tag"> + <link rel="glossary"> automatically.@idOpen site/src/_data/vocabulary.json and search for the concept's pref-label. The @id is the slug-form (e.g. "meta-tag-contract", "data-provenance", "page-info"). The href is always /glossary/#term-{@id} — that's what the build emits and what the popover script expects.
If the concept isn't in the vocabulary yet but should be, add it to vocabulary.json first (see the SKOS shape used by sibling entries) and re-run npm run build. The glossary page, /definitions.json, and head metadata regenerate from that single source.
/definitions.json in sessionStorage under vb:definitions. One fetch per browsing session.<meta name="concept"><glossary-index> — the wrapper that adds search filter + scroll-spy