Skip to content
Granularity
  • Docs
  • Components
  • Foundations
  • Patterns
  • Playground
⌘KSearch
  • enEnglish
  • ruРусскийComplete
Source on GitHubCore versionv0.41.0
  • Docs
  • Components
  • Foundations
  • Patterns
  • Playground
  • enEnglish
  • ruРусскийComplete
v0.41.0

Legal

  • Legal
  • Licensing
  • Compliance
  • Privacy
  • Terms
  • Cookies
  • Accessibility statement
  • Security
  1. Legal
  2. Accessibility statement

Accessibility statement

WCAG 2.2 AA, partially conformant: what is verified automatically, what is not verified at all, and when each of the known exceptions will be closed.

Pre-launch draft: written, not reviewed by a lawyer.

The declared level

This portal aims at conformance with WCAG 2.2, level AA on every page and in both locales.

Not AAA, and that is not caution. Some of its criteria — 7:1 contrast, no time limits — are incompatible with dense technical layout, and claiming the unreachable is worse than claiming the real: a promise that cannot be kept devalues the ones that can.

Conformance status

Partially conformant. Every automated check passes on every template in both themes, and there is no outstanding debt. But there has not been a single real verification with a screen reader, and automation catches roughly a third of real barriers — so full conformance cannot be claimed.

That is the one thing worth taking away from this page. A green run is not conformance but its lower bound; the rest is listed in the exceptions below, together with when it will be closed.

How it is verified

Everything listed runs on every pull request and fails the build. A check that can be skipped without consequence is always skipped.

WhatOn what
axe-core, rule sets wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa29 page templates × 2 themes
1.4.10 Reflow at 320 × 256 CSS pixels14 templates
2.5.8 Target Size, 24 px, with both exceptions of the criterion3 templates
Keyboard traversal: order, visible ring, no trap7 templates × 2 themes
Escape closes disclosures and returns the focusmenu, locale panel, command palette
Contrast computed by the library’s own function16 token pairs × 2 themes
Lighthouse, the accessibility categorythe key routes

By templates rather than by pages: a template is replicated, and a violation in it is a violation on all of its pages. The list covers every layout that exists at least once, and a gate makes sure none of its addresses turns into a 404 — otherwise the check would be scanning the error page and staying green.

What automation does not verify

The list is honest rather than fine print. Automation does not verify, and does not pretend to verify:

  • whether an `alt` and the reading order are meaningful;
  • whether a link name is understandable out of context;
  • how a live-region announcement actually sounds;
  • behaviour with a real screen reader and real zoom.

Known exceptions

This section is mandatory, and not as a formality: a statement without a list of exceptions convinces nobody who has read a real one.

  1. No verification with a real screen reader

    Automation catches roughly a third of real barriers. It says nothing about whether an alt is meaningful, whether the reading order makes sense, whether a link name is understandable out of context, or how a live region actually sounds. None of that has been checked on this portal by a person.

    Plan: VoiceOver + Safari and NVDA + Firefox on the key routes — the home page, the search, a component page and the playground — before the launch, and quarterly afterwards.

  2. No manual zoom and touch verification

    Reflow is measured in an emulated 320-pixel window, and target size in an emulated 390-pixel one. Real browser zoom at 200% and 400% and real fingers on a real device are a different thing, and they have not been tried.

    Plan: Together with the screen-reader pass, before the launch.

  3. The live demos are library components

    A demo on a component page is not a picture: it is the component itself, and it is subject to the same criteria. A barrier found in one is a finding about the library, not about the site, and the portal can only report it. Of 108 catalogue entries, 48 have a keyboard contract described in the library; the rest do not, and for them there is nothing to check against.

    Plan: The keyboard contract is being extended in the library repository; the portal counts the coverage on every build and names it out loud.

  4. The playground is not built yet

    The /playground page is a stub. When it becomes a sandbox that executes code, its accessibility will be a separate claim: an editable code area has its own criteria, and inheriting this statement would be wrong.

    Plan: A separate section of this statement on the day the sandbox appears.

  5. Parts of the site are still stubs

    Pages that have not been written yet show a working plan block, and it quotes the Russian specification. On an English page it is marked with lang="ru", so a screen reader announces it by the rules of the right language — but it stays untranslated, and that is a deliberate choice rather than an oversight.

    Plan: Each block disappears together with its stub when the page gets real content.

The debt baseline

There are no known violations deferred "for later": the baseline is empty. It does not stay empty by itself — the trick is that whatever is listed in it does not fail the run while everything new does, so a violation gets fixed rather than appended to the list.

What it was verified with

On none. The checks ran in Chromium driven by Playwright — that is a browser, not a screen reader, and passing one off as the other in an accessibility statement would devalue the whole document.

VoiceOver + Safari on macOS and iOS and NVDA + Firefox on Windows are planned. As soon as a pass happens, its date and its findings will appear here.

How to report a barrier

If something on this site turned out to be inaccessible, write to accessibility@granularity.tech. We answer within five working days. Describe the page, the assistive technology and what did not work — that is enough; reproducing it is our job.

A barrier in a live demo is most likely a finding about the library rather than about the site. Write here anyway: we will work out where it belongs and file the issue ourselves.

The legal status of this statement

This statement is voluntary. Directive (EU) 2019/882 — the European Accessibility Act — has applied since 28 June 2025 and covers e-commerce; the portal sells nothing, and no obligation under it has arisen. It will arise on the day a purchase button appears on the site, and building the site accessible from the start is cheaper than bringing it into conformance later.

The composition of the delivery, the SBOM and the answers for questionnaires are on the compliance page.

This version is in force from: 2026-09-02

Last reviewed: 2026-09-02

On this page

  • The declared level
  • Conformance status
  • How it is verified
  • What automation does not verify
  • Known exceptions
  • The debt baseline
  • What it was verified with
  • How to report a barrier
  • The legal status of this statement

Sections

  • Documentation
  • Components
  • Foundations
  • Patterns
  • Examples

Resources

  • Architecture
  • Changelog
  • Roadmap
  • Blog
  • Design
  • Contributing
  • About

Legal

  • Licensing
  • Compliance
  • Privacy
  • Terms
  • Cookies
  • Accessibility statement
  • Security

Ecosystem

  • Core
  • Charts
  • Chrono
  • Code
  • Dashboard
  • Datasource
  • Devtools
  • Editor
  • Forms Schema
  • Media
  • Test Kit
  • Unplugin

This portal is built with Granularity itself.

Apache-2.0 with an ethical-use clause — not an OSI licence.

Core version: 0.41.0