Enforce Pluma components instead of native HTML elements with Pluma equivalents.
Use this rule to keep application code on the Pluma component vocabulary when Pluma has a prescribed component for a native element.
This rule is intentionally narrower than a broad raw HTML ban. It does not ban
layout elements such as div, section, or nav. It only blocks elements that
have a direct Pluma replacement policy.
The rule also reports static polymorphic element values, including on Pluma
components. A Pluma component only gets an exception when the component's public
API intentionally exposes that native semantic element while Pluma still owns the
behavior and styling. For example, DropdownMenuItem as="label" is allowed
because it remains a menu item; the label tag is just the semantic surface.
Other static native values, such as Box as="button" or Grid as="dl", should
use the matching Pluma component instead.
Use the matching Pluma component instead.
Use FileField instead of native file inputs.
DropdownMenuItem as="label" is allowed because the menu item behavior and
styling remain Pluma-owned, while the label is just the native semantic surface.
| Native element | React replacement | Ember replacement |
|---|---|---|
a | Link or PlainLink | PlumaLink or PlumaPlainLink |
button | PlainButton | PlumaPlainButton |
code | Code | PlumaCode |
details | Accordion | PlumaAccordion |
dl | DescriptionList | PlumaDescriptionList |
dt | DescriptionListTerm | PlumaDescriptionListTerm |
dd | DescriptionListDetails | PlumaDescriptionListDetails |
em | Emphasis | PlumaEmphasis |
form | Form | PlumaForm |
h1-h6 | Heading | PlumaHeading |
hr | Divider | PlumaDivider |
img | Image | PlumaImage |
input type="checkbox" | Checkbox | PlumaCheckbox |
input type="file" | FileField | PlumaFileField |
input type="number" | NumberField | PlumaNumberField |
input type="radio" | Radio | PlumaRadio |
input type="range" | Slider | PlumaSlider |
input type="search" | Search | PlumaSearch |
input and text-like input types | TextField | PlumaTextField |
kbd | KeyboardShortcut | PlumaKeyboardShortcut |
label | TextLabel | PlumaTextLabel |
ul/ol | List | PlumaList |
li | ListItem | PlumaListItem |
p | Paragraph | PlumaParagraph |
select | Select | PlumaSelect |
strong | Strong | PlumaStrong |
summary | AccordionTitle | PlumaAccordionTitle |
table | Table | PlumaTable |
thead | TableThead | PlumaTableThead |
tbody | TableTbody | PlumaTableTbody |
tfoot | TableTfoot | PlumaTableTfoot |
tr | TableTr | PlumaTableTr |
th | TableTh | PlumaTableTh |
td | TableTd | PlumaTableTd |
textarea | TextArea | PlumaTextArea |