A root child out of order, such as a second root Actions | Blocks go header, body, actions, footer: <Block> can't hold {component} here |
| A child a container doesn’t take | {parent} can't hold {child} here or {parent} needs ... |
| A section inside a section | <Section> can't hold <Section> here, or Sections sit only at block, tab or form level, one deep when it’s nested deeper |
| Tabs inside tabs | Tabs cannot be nested |
| A form inside a form | Forms cannot be nested |
| A form’s last row holds more than its submit | A form ends with one submit button and nothing else |
| A submit button outside a form’s last row | Submit buttons belong in a form's last row |
| A text or date field outside a form | {component} belongs inside a <Form> |
| A table, chart or prose in a column | {component} needs the full width; move it out of the <Column> |
| A stack inside a stack | Stacks cannot hold another stack |
| A collapsed section nobody can open | A collapsed section needs a title or a toggle button |
| A toggle button for a missing section | No section has the handle {handle} |
| A label used twice | "{label}" is used twice in this {group}; labels must be unique, where the group is the component that holds the labels, such as <Actions> |
| A label with no visible text | Labels need visible text |
| A code block with no text | Code blocks need visible text |
| Text over its length | Keep this to {max} characters or fewer |
| Prose nested too deeply | Lists nest at most 2 levels, Quotes cannot hold quotes or Headings and code blocks can't sit in a list or quote |
| Struck text with a link | Struck text can't be a link |
| A link in a linked header’s title | A linked header's title can't hold links |
| A link in a linked item’s title | A linked item's title can't hold links |
A shared field outside a form without onChange | A shared {component} outside a <Form> needs onChange |
| An audience inside another audience | {component} sits inside another audience; audiences can't nest |
| An audience inside a form | {component} sits inside a <Form>; put the audience on the <Form> |
| An audience on a part that can’t take one | {component} can't carry an audience here; move it onto the enclosing {parent} or {component} can't carry an audience; set it on a flow element instead |
| Formatting a container doesn’t allow, or the same mark twice | {component} has formatting that's repeated or not allowed inside {parent} |
| A hand-built tree with an empty text node | Text can't be empty or Text can't have attrs or content |
| A count over its limit | Such as Tabs hold 2 to 6 tabs, Metrics hold at most 6 metrics or Meta lists hold at most 6 items |
| A count on a choice without integration results | Only integration results carry a count |
| A destructive action without a confirm | Destructive actions need a confirm |
| An icon on a toned callout or badge | Only neutral callouts take an icon; toned callouts show their tone's glyph |
| A toned icon without a label | Toned icons need a label |
| A reserved icon on a button or menu | That icon is reserved for Reintersect's own controls |
| A number format that doesn’t fit | Currency values need a currency code, Only currency values take a currency code, Only plain numbers take a unit or Only number columns take a number format |
Progress over its maximum, or a unit without max | Progress value cannot exceed its maximum or Progress needs a max to show a unit |
| A search select’s label | Only search selects take a selectedLabel or A search select's value needs its selectedLabel |
| A donut that adds up to zero | Donut charts need a positive total |
| Duplicate names in a table, chart or select | Column labels must be unique, Series names must be unique, Point labels must be unique or Select option labels must be unique |