Skip to content
WM KeyboardWM Keyboard
Accessibility

Docs component gallery

Live demos of every custom component available to documentation authors.

Every component in CONTENT_GUIDE.md’s table, rendered live. Import them from @components/*. (The rest of src/components/ is Starlight overrides and homepage furniture, not building blocks for a page.) The conventions live in CONTENT_GUIDE.md.

Keys: press Shift then ?123, or hold Space. Editions: Full edition only Lite edition only All editions. Versions: Since v1.4.

Settings location chip:

WM KeyboardTypingGesturesSpacebar swipes

Left empty, it renders the screenshot-pending placeholder. Given an image (or a <video>), it renders a device frame:

Screenshot pending
An empty PhoneFrame: the placeholder stubs use.

Renders any .wmlayout.json straight from app/src/main/assets/layouts/. Import the file, then pass it in. Keys with alternates show the first one as a corner hint; hover or tap that key for the full long-press set. A layout whose keys carry shift labels gets a ⇧ toggle:

Qafar af (Afar)

Hover or tap a key with a corner hint to see all its long-press characters.

Bishnupriya Manipuri (shift layer demo)

Hover or tap a key with a corner hint to see all its long-press characters.

Renders real theme specs (the same format as .wmtheme.json exports) on a mock keyboard. The showcase set exercises gradients (linear, radial, sweep), translucent keys, pill/cut key shapes, borders, key sheens and the HUE_CYCLE animation:

ThemeSpec-shaped approximations of several built-in themes.

Pass specs to render an actual export file:

The Midnight theme from the addon repository, rendered from its real .wmtheme.json.

Client-filterable, sortable table for big datasets. It’s live on the language overview (843 rows) and dictionaries (333 rows) pages. The data is generated from the app’s registries by docs/scripts/extract_data.py:

40 rows
IdNameScript
enEnglishLatin
bnবাংলা · BanglaBengali
frFrançais · FrenchLatin
deDeutsch · GermanLatin
esEspañol · SpanishLatin
ko한국어 · KoreanHangul
ruРусский · RussianCyrillic
arالعربية · ArabicArabic
elΕλληνικά · GreekGreek
heעברית · HebrewHebrew
hiहिन्दी · HindiDevanagari
ptPortuguês · PortugueseLatin
ukУкраїнська · UkrainianCyrillic
itItaliano · ItalianLatin
nlNederlands · DutchLatin
plPolski · PolishLatin
svSvenska · SwedishLatin
srСрпски · SerbianCyrillic
bgБългарски · BulgarianCyrillic
kaქართული · GeorgianGeorgian
csČeština · CzechLatin
skSlovenčina · SlovakLatin
roRomână · RomanianLatin
huMagyar · HungarianLatin
fiSuomi · FinnishLatin
daDansk · DanishLatin
nbNorsk · NorwegianLatin
hrHrvatski · CroatianLatin
faفارسی · PersianArabic
beБеларуская · BelarusianCyrillic
etEesti · EstonianLatin
ltLietuvių · LithuanianLatin
lvLatviešu · LatvianLatin
slSlovenščina · SlovenianLatin
urاردو · UrduArabic
psپښتو · PashtoArabic
sdسنڌي · SindhiArabic
ugئۇيغۇرچە · UyghurArabic
ckbکوردی · Kurdish (Sorani)Arabic
hyՀայերեն · ArmenianArmenian

Stylised, looping gesture explainers. They illustrate concepts, so use a screen recording when you need the real behaviour. Four types:

space-swipe: a short spacebar swipe switches language
space-hold: hold, then drag through the language picker
long-press: an accent popup on a held key
glide: trace a word without lifting

All four freeze to a static end-state under prefers-reduced-motion.