Ansora UI

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. Use formatDose for a medication dose and formatUnit for everything else that has a unit.
  • font-feature-settings replaces, it never accumulates. Every rule that sets it restates var(--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.