Skip to content
Magma Design System
Price table features row<mds-price-table-features-row>Generated from @maggioli-design-system/magma@2.3.0dist/documentation.json. Encapsulation: shadow.
Common incorrect uses of <mds-price-table-features-row>. Each entry pairs the wrong form with the right one and a one-line reason. System-wide rules (boolean-as-string, shadow piercing, Tailwind color utilities, raw native event listening) live in agents/anti-patterns.md - they apply here too but are not repeated.
Do Not Use the Row Outside Its Parent
<mds-price-table-features-row> is a compound child that must be a direct slot child of <mds-price-table-features>. Using it standalone or inside any other element breaks the layout: the row is a display: table-row box meant for the <table> that <mds-price-table-features> renders around its slot.
<!-- INCORRECT -->
<div class="my-table">
<mds-price-table-features-row>
<mds-price-table-features-cell type="label">Funzione</mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
</mds-price-table-features-row>
</div>
<!-- CORRECT -->
<mds-price-table>
<mds-price-table-features label="Funzionalita'">
<mds-price-table-features-row>
<mds-price-table-features-cell type="label">Funzione</mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
</mds-price-table-features-row>
</mds-price-table-features>
</mds-price-table>
Do Not Slot Arbitrary HTML Directly into the Row
The row’s default slot expects only <mds-price-table-features-cell> children. Raw HTML elements bypass the automatic equal-width distribution and break column alignment across rows.
<!-- INCORRECT -->
<mds-price-table-features-row>
<span>Funzione avanzata</span>
<span>Si'</span>
<span>No</span>
</mds-price-table-features-row>
<!-- CORRECT -->
<mds-price-table-features-row>
<mds-price-table-features-cell type="label">Funzione avanzata</mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="unsupported"></mds-price-table-features-cell>
</mds-price-table-features-row>
Do Not Omit the Label Cell
Every row should begin with a type="label" cell that names the feature. Omitting it leaves the row without a readable identifier, which makes the comparison table unusable for sighted users and screen readers alike.
<!-- INCORRECT -->
<mds-price-table-features-row>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="unsupported"></mds-price-table-features-cell>
</mds-price-table-features-row>
<!-- CORRECT -->
<mds-price-table-features-row>
<mds-price-table-features-cell type="label">Backup automatico</mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="unsupported"></mds-price-table-features-cell>
</mds-price-table-features-row>
Do Not Customize via Inline Styles or Undocumented Parts
The only supported customization surface is the four --mds-price-table-features-row-* CSS custom properties. Applying inline style attributes or targeting shadow internals couples your code to the implementation and breaks on minor releases.
/* INCORRECT */
mds-price-table-features-row {
background-color: #f5f5f5;
}
mds-price-table-features-row >>> .internal-row-class {
color: red;
}
/* CORRECT */
mds-price-table-features-row {
--mds-price-table-features-row-background: rgb(var(--magma-surface-muted));
--mds-price-table-features-row-color: rgb(var(--magma-text-muted));
}
Do Not Mismatch Cell Count Across Rows
All rows inside a <mds-price-table-features> must have the same number of cells. The equal-width calculation runs per row in isolation, so mismatched counts produce misaligned columns.
<!-- INCORRECT - row A has 4 cells, row B has 3 -->
<mds-price-table-features>
<mds-price-table-features-row>
<mds-price-table-features-cell type="label">Funzione A</mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="unsupported"></mds-price-table-features-cell>
</mds-price-table-features-row>
<mds-price-table-features-row>
<mds-price-table-features-cell type="label">Funzione B</mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="unsupported"></mds-price-table-features-cell>
</mds-price-table-features-row>
</mds-price-table-features>
<!-- CORRECT - every row has the same number of cells -->
<mds-price-table-features>
<mds-price-table-features-row>
<mds-price-table-features-cell type="label">Funzione A</mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="unsupported"></mds-price-table-features-cell>
</mds-price-table-features-row>
<mds-price-table-features-row>
<mds-price-table-features-cell type="label">Funzione B</mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="supported"></mds-price-table-features-cell>
<mds-price-table-features-cell type="unsupported"></mds-price-table-features-cell>
</mds-price-table-features-row>
</mds-price-table-features>