# Chip A chip — a checkbox or radio styled as a selectable pill. The label is the block body or the `text` attribute, and the chip is interactive — readers can toggle it. Add `defaultChecked` to start it selected, and pick `type` (`checkbox` or `radio`). Use it as `{% chip %}` in Markdown, or call it from Python logic (loops, snippets) via `component('aardvark', 'chip', …)`. ## Label and default state The label is the block body or the `text` attribute. `defaultChecked` starts it selected. React Selected Vue
Source: Markdown ```aardvark {% chip %}React{% endChip %} {% chip defaultChecked=true color='grape' %}Selected{% endChip %} {% chip text='Vue' %} ``` Source: Python ```python component('aardvark', 'chip', children='React') component('aardvark', 'chip', defaultChecked=True, color='grape', children='Selected') component('aardvark', 'chip', text='Vue') ``` In a loop, render a row of chips from data:
Source: Python ```python for tag in ['React', 'Vue', 'Svelte']: component('aardvark', 'chip', children=tag) ``` ## Variants `variant` is `filled` (default), `light`, or `outline`. filled light outline
Source: Markdown ```aardvark {% chip defaultChecked=true %}filled{% endChip %} {% chip variant='light' defaultChecked=true %}light{% endChip %} {% chip variant='outline' defaultChecked=true %}outline{% endChip %} ``` Source: Python ```python component('aardvark', 'chip', defaultChecked=True, children='filled') component('aardvark', 'chip', variant='light', defaultChecked=True, children='light') component('aardvark', 'chip', variant='outline', defaultChecked=True, children='outline') ``` ## Colors, sizes, and radius `color` is any theme color; `size` is `xs`–`xl`; `radius` rounds the pill. green orange large less round
Source: Markdown ```aardvark {% chip color='green' defaultChecked=true %}green{% endChip %} {% chip color='orange' defaultChecked=true %}orange{% endChip %} {% chip size='lg' defaultChecked=true %}large{% endChip %} {% chip radius='sm' defaultChecked=true %}less round{% endChip %} ``` Source: Python ```python component('aardvark', 'chip', color='green', defaultChecked=True, children='green') component('aardvark', 'chip', color='orange', defaultChecked=True, children='orange') component('aardvark', 'chip', size='lg', defaultChecked=True, children='large') component('aardvark', 'chip', radius='sm', defaultChecked=True, children='less round') ``` ## Type and disabled `type='radio'` gives the chip a round selection marker (use it for one-of-many sets); `disabled` makes it non-interactive. radio chip disabled disabled, selected
Source: Markdown ```aardvark {% chip type='radio' defaultChecked=true %}radio chip{% endChip %} {% chip disabled=true %}disabled{% endChip %} {% chip disabled=true defaultChecked=true %}disabled, selected{% endChip %} ``` Source: Python ```python component('aardvark', 'chip', type='radio', defaultChecked=True, children='radio chip') component('aardvark', 'chip', disabled=True, children='disabled') component('aardvark', 'chip', disabled=True, defaultChecked=True, children='disabled, selected') ``` ## With other components Combine chips with a heading and a [button](/components/buttons/button/) to build a small filter row. Filter by framework React Vue Svelte Apply
Source: Markdown ```aardvark Filter by framework {% chip defaultChecked=true %}React{% endChip %} {% chip %}Vue{% endChip %} {% chip %}Svelte{% endChip %} {% button %}Apply{% endButton %} ``` Source: Python ```python component('aardvark', 'chip', defaultChecked=True, children='React') component('aardvark', 'chip', children='Vue') component('aardvark', 'chip', children='Svelte') component('aardvark', 'button', children='Apply') ``` ## Attributes Omit any attribute to take its Mantine default. | Attribute | Valid values | Description | | --- | --- | --- | | `text` | string | The label, when not using the block body. | | `variant` | `filled` (default), `light`, `outline` | Visual style of the pill. | | `color` | theme color name (`blue`, `green`, …) | Fill / accent color when selected. | | `size` | `xs`, `sm`, `md`, `lg`, `xl` | Overall size. | | `radius` | `xs`, `sm`, `md`, `lg`, `xl` | Corner rounding of the pill. | | `type` | `checkbox` (default), `radio` | Selection marker shape and grouping semantics. | | `defaultChecked` | bare flag (`true`) | Start the chip selected. It stays interactive — the reader can toggle it. | | `disabled` | bare flag (`true`) | Render non-interactive. | | `autoContrast` | bare flag (`true`) | Auto-pick a readable label color against `color`. | | `attr` | dict (`attr={…}`) | Raw HTML attributes (e.g. `onchange`) applied to the rendered root. | ## CSS Selectors Target a `{% chip %}` from your own CSS with the island data attribute or the Mantine Styles API part classes: ```css /* Every Chip instance on the page */ [data-aardvark-island="Chip"] { } /* Mantine Styles API parts */ .mantine-Chip-root { } .mantine-Chip-label { } .mantine-Chip-input { } ``` ## Injecting Attributes Pass `attr={…}` to forward raw HTML attributes — including inline event handlers — straight onto the rendered element. Here it is wired to `onchange`, so toggling it logs its checked state to the console and alerts it: React
Source: Markdown ```aardvark {% chip attr={'onchange': ''' const value = this.checked; console.log('attr demo value:', value); alert(value); '''} %}React{% endChip %} ``` Source: Python ```python component('aardvark', 'chip', children='React', attr={'onchange': ''' const value = this.checked; console.log('attr demo value:', value); alert(value); '''}) ```