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.
Placeholder text via data attributes. Fill any element with lorem ipsum, specify word counts, sentence counts, or list items. Auto-detects language for CJK, Arabic, and Cyrillic corpuses.
The data-lorem attribute fills any text-containing element with placeholder text. Built-in corpuses for Latin, CJK, Arabic, and Cyrillic keep the browser bundle lean (~4KB) without requiring external dependencies.
<p data-lorem></p>
DOMContentLoaded, finds all elements with data-loremlang attribute (or its ancestors)textContent (or innerHTML for list items)data-lorem-filled and translate="no"| Attribute | Type | Description |
|---|---|---|
data-lorem |
string | Controls output. See Values table below. |
data-lorem-filled |
boolean | Set automatically after content is injected. Used as CSS hook for wireframe integration. |
data-lorem-init |
boolean | Set automatically to prevent double-binding. Do not set manually. |
| Value | Result | Example |
|---|---|---|
| (empty) | ~50 words of lorem ipsum | <p data-lorem></p> |
50 | 50 words | <p data-lorem="50"></p> |
3 sentences | 3 full sentences | <p data-lorem="3 sentences"></p> |
heading | 5 words (heading-length) | <h2 data-lorem="heading"></h2> |
5 items | 5 <li> elements (on <ul>/<ol>) | <ul data-lorem="5 items"></ul> |
cjk | CJK placeholder corpus | <p data-lorem="cjk"></p> |
arabic | Arabic placeholder corpus | <p data-lorem="arabic"></p> |
cyrillic | Cyrillic placeholder corpus | <p data-lorem="cyrillic"></p> |
Pass a number to get that many words.
<p data-lorem="50"></p>
Use N sentences for full sentences (singular sentence also works).
<p data-lorem="3 sentences"></p>
Use heading for short, heading-length text (5 words).
<h2 data-lorem="heading"></h2>
On <ul> or <ol>, use N items to generate <li> elements.
<ul data-lorem="5 items"></ul>
The corpus auto-detects from the lang attribute on the element or any ancestor. You can also force a specific corpus by name.
| Language codes | Corpus |
|---|---|
ja, zh, ko | CJK (Chinese/Japanese/Korean) |
ar, fa, ur, he | Arabic |
ru, uk, bg, sr | Cyrillic |
| any other / none | Latin (default) |
<!-- Auto-detected from lang attribute --><p lang="ja" data-lorem></p><p lang="ar" data-lorem dir="rtl"></p><p lang="ru" data-lorem></p> <!-- Explicit corpus override --><p data-lorem="cjk"></p><p data-lorem="arabic"></p><p data-lorem="cyrillic"></p>
Replace the content and remove data-lorem. No structural changes needed.
<!-- Prototype --><p data-lorem="3 sentences"></p> <!-- Production: replace content, remove data-lorem --><p>Our platform helps teams ship faster with modern tooling.</p>
In data-wireframe="lo" mode, elements with data-lorem-filled get abstract text-block styling: extra letter-spacing and reduced opacity.
<!-- In lo-fidelity wireframe, lorem text gets abstract appearance --><html data-wireframe="lo"> <body> <p data-lorem></p> <!-- Text renders with extra letter-spacing and reduced opacity --> </body></html>
Elements added to the DOM after page load are automatically filled via a MutationObserver.
<section> <h2>Accessibility</h2> <ul> <li>Sets <code>translate="no"</code> on filled elements so translation tools skip placeholder text</li> <li>Does <strong>not</strong> set <code>aria-hidden</code> — screen readers should still read placeholder content during testing to verify document structure</li> <li>Filled list items use semantic <code><li></code> elements</li> </ul></section>