Checkbox
Custom-styled checkboxes with list layout.
Usage
<label class="zui-checkbox">
<input type="checkbox" checked />
Accept terms
</label>import { Checkbox } from '@mrmartineau/zui/react'
<Checkbox defaultChecked>Accept terms</Checkbox>---
import { Checkbox } from '@mrmartineau/zui/astro'
---
<Checkbox checked>Accept terms</Checkbox>import { Checkbox } from '@mrmartineau/zui/solid'
<Checkbox defaultChecked>Accept terms</Checkbox><script lang="ts">
import { Checkbox } from '@mrmartineau/zui/svelte'
let accepted = $state(true)
</script>
<Checkbox bind:checked={accepted}>Accept terms</Checkbox><template>
<Checkbox checked>Accept terms</Checkbox>
</template>
<script setup>
import { Checkbox } from '@mrmartineau/zui/vue'
</script>Checkbox List
Use .zui-checkbox-list for vertical grouping.
<fieldset class="zui-field-set">
<legend class="zui-field-legend">Interests</legend>
<div class="zui-checkbox-list">
<label class="zui-checkbox">
<input type="checkbox" checked />
Music
</label>
<label class="zui-checkbox">
<input type="checkbox" />
Sports
</label>
<label class="zui-checkbox">
<input type="checkbox" checked />
Travel
</label>
<label class="zui-checkbox">
<input type="checkbox" />
Reading
</label>
</div>
</fieldset>import { Checkbox, FieldSet, FieldLegend } from '@mrmartineau/zui/react'
<FieldSet>
<FieldLegend>Interests</FieldLegend>
<div className="zui-checkbox-list">
<Checkbox defaultChecked>Music</Checkbox>
<Checkbox>Sports</Checkbox>
<Checkbox defaultChecked>Travel</Checkbox>
<Checkbox>Reading</Checkbox>
</div>
</FieldSet>---
import { Checkbox, FieldSet, FieldLegend } from '@mrmartineau/zui/astro'
---
<FieldSet>
<FieldLegend>Interests</FieldLegend>
<div class="zui-checkbox-list">
<Checkbox checked>Music</Checkbox>
<Checkbox>Sports</Checkbox>
<Checkbox checked>Travel</Checkbox>
<Checkbox>Reading</Checkbox>
</div>
</FieldSet>import { Checkbox, FieldSet, FieldLegend } from '@mrmartineau/zui/solid'
<FieldSet>
<FieldLegend>Interests</FieldLegend>
<div class="zui-checkbox-list">
<Checkbox defaultChecked>Music</Checkbox>
<Checkbox>Sports</Checkbox>
<Checkbox defaultChecked>Travel</Checkbox>
<Checkbox>Reading</Checkbox>
</div>
</FieldSet><script lang="ts">
import { Checkbox, FieldSet, FieldLegend } from '@mrmartineau/zui/svelte'
let music = $state(true)
let sports = $state(false)
let travel = $state(true)
let reading = $state(false)
</script>
<FieldSet>
<FieldLegend>Interests</FieldLegend>
<div class="zui-checkbox-list">
<Checkbox bind:checked={music}>Music</Checkbox>
<Checkbox bind:checked={sports}>Sports</Checkbox>
<Checkbox bind:checked={travel}>Travel</Checkbox>
<Checkbox bind:checked={reading}>Reading</Checkbox>
</div>
</FieldSet><template>
<FieldSet>
<FieldLegend>Interests</FieldLegend>
<div class="zui-checkbox-list">
<Checkbox checked>Music</Checkbox>
<Checkbox>Sports</Checkbox>
<Checkbox checked>Travel</Checkbox>
<Checkbox>Reading</Checkbox>
</div>
</FieldSet>
</template>
<script setup>
import { Checkbox, FieldSet, FieldLegend } from '@mrmartineau/zui/vue'
</script>Disabled
<label class="zui-checkbox">
<input type="checkbox" disabled checked />
Disabled checked
</label>
<label class="zui-checkbox">
<input type="checkbox" disabled />
Disabled unchecked
</label>import { Checkbox } from '@mrmartineau/zui/react'
<Checkbox disabled defaultChecked>Disabled checked</Checkbox>
<Checkbox disabled>Disabled unchecked</Checkbox>---
import { Checkbox } from '@mrmartineau/zui/astro'
---
<Checkbox disabled checked>Disabled checked</Checkbox>
<Checkbox disabled>Disabled unchecked</Checkbox>import { Checkbox } from '@mrmartineau/zui/solid'
<Checkbox disabled defaultChecked>Disabled checked</Checkbox>
<Checkbox disabled>Disabled unchecked</Checkbox><script lang="ts">
import { Checkbox } from '@mrmartineau/zui/svelte'
</script>
<Checkbox disabled checked>Disabled checked</Checkbox>
<Checkbox disabled>Disabled unchecked</Checkbox><template>
<Checkbox disabled checked>Disabled checked</Checkbox>
<Checkbox disabled>Disabled unchecked</Checkbox>
</template>
<script setup>
import { Checkbox } from '@mrmartineau/zui/vue'
</script>Shape
A squircle is a rounded square with smooth corners. The checkbox box is inside the label, so put zui-squircle-all on a parent element. Every ZUI component inside it gets a squircle shape. Browsers without corner-shape support show normal rounded corners. To make squircle the default everywhere, see Squircle.
<div class="zui-squircle-all">
<label class="zui-checkbox">
<input type="checkbox" checked />
Squircle checkbox
</label>
</div>import { Checkbox } from '@mrmartineau/zui/react'
<div className="zui-squircle-all">
<Checkbox defaultChecked>Squircle checkbox</Checkbox>
</div>---
import { Checkbox } from '@mrmartineau/zui/astro'
---
<div class="zui-squircle-all">
<Checkbox checked>Squircle checkbox</Checkbox>
</div>import { Checkbox } from '@mrmartineau/zui/solid'
<div class="zui-squircle-all">
<Checkbox defaultChecked>Squircle checkbox</Checkbox>
</div><script lang="ts">
import { Checkbox } from '@mrmartineau/zui/svelte'
let checked = $state(true)
</script>
<div class="zui-squircle-all">
<Checkbox bind:checked={checked}>Squircle checkbox</Checkbox>
</div><template>
<div class="zui-squircle-all">
<Checkbox checked>Squircle checkbox</Checkbox>
</div>
</template>
<script setup>
import { Checkbox } from '@mrmartineau/zui/vue'
</script>CSS custom properties
Set these on :root, on a wrapper, or on the element. See Component custom properties.
| Property | Default | Description |
|---|---|---|
--zui-checkbox-size |
1.25em |
Width and height of the box |
--zui-checkbox-radius |
var(--radius-sm) |
Border radius of the box |
--zui-checkbox-accent |
var(--color-accent) |
Border colour, and fill colour when checked |