Rules
What holds in every screen built on Ansora UI.
- Search first, write second. Before writing a component, check this catalog and
shadcn search @ansora. A duplicate component is worse than none. - Colours only from the semantic layer. See Colour.
- Green never means a state. States are neutral, amber and red.
- No control below 24 × 24 px, in either density.
- Numbers go through
@ansora/core—formatNumber,formatUnit,formatDose,formatDuration,formatDate. Never hand-format a value, never join a unit with an ASCII space. UseformatDosefor a medication dose andformatUnitfor everything else that has a unit. font-feature-settingsreplaces, it never accumulates. Every rule that sets it restatesvar(--ff-base).- User-facing and screen-reader strings are Czech; everything developer-facing is English.
- A component exposes view state, it does not swallow it. A filter, a tab or a range
arrives as
value+onChange, and the screen puts it in the URL.
The full reasoning, and the history behind each rule, lives in the repository: the
ansora-visual-language and web-ui-conventions skills under plugins/ansora-ui/skills/,
and @ansora/conventions, which installs the same conventions into your project for your
coding agent.