Label
Error Label
A label with the error message between it and the field: the entire error styling hangs on a single aria-invalid attribute.
What you can change
- the field name through label, the message through error and the typed value through defaultValue
- the normal focus color through accent
- background — the component surface; empty means no surface, taking the page colour
A link for your AI agent: preview, code and instructions.
Preview
Use it with AI
- 1. Copy the link.
- 2. Write to your agent in your own words and drop the link into the sentence.
- 3. The agent opens the link and installs the component from the registry.
put this on the home page as the hero:
https://vibeui.ru/c/label-007?lang=en&theme=dark
Not sure where to paste it? Step-by-step guide
Show the full instructions
What the link says, spelled out. Use it when your agent cannot open links — paste this text instead.
Loading…
For developers
The install command lives in the “Component source” block below — a signed link that stays valid for 24 hours.
Technical notes
The component is self-contained: one file, no dependencies, a palette in local variables --vibeui-label-007-*. It is a server component: useId is the only hook. The single source of state is the field's aria-invalid: the label turns red by the :has(input[aria-invalid="true"]) rule, and the border and the focus ring by a selector on the same attribute. There is no separate "error" class, so the states cannot drift apart. The message stands between the label and the field: on a phone the keyboard covers the bottom of the screen and text under the field is not visible. An icon drawn with a border is added to the colour — colour must not be the only sign of an error. The message is tied to the field through aria-describedby. The palette is built on light-dark(): the block follows the surrounding color-scheme, there is no surface by default, and it appears only through the background prop.
Tags
- label
- error
- validation
- a11y
Component source
The same file your agent installs. Here in case you would rather copy it by hand.
Loading…