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.
Content trust indicators for declaring authorship provenance. CSS-only trust badges for human, AI-assisted, AI-generated, editor-reviewed, and draft content.
The data-trust attribute declares content provenance on any block element. It provides CSS-only visual indicators that communicate how content was produced and what review it received.
Trust levels can be applied at the page level (on <article>) or scoped to individual sections. Compound values support content that has been both generated and reviewed.
<!-- Whole-page trust level --><article data-trust="ai-assisted"> <h1>Migration Guide</h1> <p>This guide was written with AI assistance.</p></article> <!-- Section-level trust --><article data-trust="ai-assisted"> <section data-trust="human"> <h2>When to Migrate</h2> <p>Written from direct experience...</p> </section> <section data-trust="ai-generated"> <h2>API Reference</h2> <p>Auto-generated from the OpenAPI spec...</p> </section></article>
| Token | Meaning | Visual Treatment |
|---|---|---|
human |
Written entirely by a human | No indicator (the default assumption) |
ai-assisted |
Human-written with AI tooling | Subtle border accent |
ai-generated |
Primarily AI-generated content | Background tint + border accent |
editor-reviewed |
Reviewed and approved by editor | Green border accent |
draft |
Unreviewed work in progress | Dashed border + muted opacity |
Add the labeled class to show a visible text badge via ::before. Without this class, trust indicators are purely structural (border and background only).
<!-- Add .labeled to show a visible badge --><section data-trust="ai-assisted" class="labeled"> <h2>Getting Started</h2> <p>AI-assisted content with a visible badge.</p></section> <section data-trust="ai-generated" class="labeled"> <h2>API Reference</h2> <p>AI-generated content with a visible badge.</p></section> <section data-trust="draft" class="labeled"> <h2>Roadmap</h2> <p>Unreviewed work in progress.</p></section>
Space-separated tokens allow composable trust declarations. The ~= CSS selector matches individual tokens within the compound value.
<!-- Compound values for content that has been both generated and reviewed --><section data-trust="ai-generated editor-reviewed"> <h2>Release Notes</h2> <p>AI-drafted from commit history, reviewed and approved by the release manager.</p></section>
Trust indicators and <ins>/<del> change tracking are complementary. data-trust declares the authorship model; inline edits show specific changes, including when a human corrects an AI suggestion.
<!-- Trust + change tracking together --><article data-trust="ai-assisted"> <p> The migration requires <del datetime="2026-02-15" data-author="claude" data-reason="correction"> Node.js 16 </del> <ins datetime="2026-02-15" data-author="tpowell" data-reason="review"> Node.js 20 LTS </ins> or later. </p></article>
Trust indicator colors are exposed as custom properties that themes can override.
/* Theme-overridable trust colors */[data-trust] { --trust-color-ai-assisted: oklch(65% 0.15 250); --trust-color-ai-generated: oklch(65% 0.18 290); --trust-color-reviewed: oklch(60% 0.18 145); --trust-color-draft: oklch(70% 0.15 75);}
No JavaScript is needed for trust indicators. The data-trust attribute is queryable via standard DOM methods.
<section> <h2>Why <code>data-trust</code> Instead of a Class</h2> <ul> <li><strong>Queryable.</strong> <code>document.querySelectorAll('[data-trust~="ai-generated"]')</code> finds all AI content</li> <li><strong>Composable.</strong> Space-separated tokens matched by the <code>~=</code> selector</li> <li><strong>Semantic.</strong> Data attributes declare <em>what the content is</em>, not <em>how it looks</em></li> <li><strong>Machine-readable.</strong> Crawlers and tools can extract trust signals without understanding CSS classes</li> </ul></section> <section> <h2>Accessibility</h2> <ul> <li>Trust indicators are visual-only decorations; the DOM content and ARIA attributes are unaffected</li> <li>The <code>.labeled</code> badges use <code>::before</code> pseudo-elements. Screen readers may or may not announce pseudo-element content depending on the browser</li> <li>For critical trust disclosure, include the trust level in visible text content (e.g., in a <code><page-meta></code> or <code><page-info></code> component)</li> </ul></section>