Checkbox 
Base checkbox form
Usage 
Simple Usage 
preview
vue
<template>
  <p-checkbox>Checklist Label</p-checkbox>
</template>With Subtext 
preview
vue
<template>
  <p-checkbox>
    <div>Checklist Label</div>
    <p-caption>Text</p-caption>
  </p-checkbox>
</template>Disabled State 
preview
vue
<template>
  <p-checkbox disabled>
    Checkbox Label
  </p-checkbox>
</template>Readonly State 
preview
vue
<template>
  <p-checkbox readonly>
    Checkbox Label
  </p-checkbox>
</template>Binding v-model 
preview
Result :
falsevue
<template>
  <p-checkbox v-model="modelA">Text</p-checkbox>
</template>Custom v-model value 
By default, value of toggle is always Boolean, but you can change it with value and unchecked-value.
preview
Result :
disagreevue
<template>
  <p-checkbox
    v-model="model"
    value="agree"
    unchecked-value="disagree">
    Active
  </p-checkbox>
</template>Array v-model 
If v-model state is an array it will append the value instead of replacing it.
preview
Selected :
[]vue
<template>
  <div class="flex flex-col space-y-3">
    <p-checkbox v-model="selected" value="apple">Apple</p-checkbox>
    <p-checkbox v-model="selected" value="grape">Grape</p-checkbox>
    <p-checkbox v-model="selected" value="pineapple">Pineapple</p-checkbox>
    <p-checkbox v-model="selected" :value="{ id: 1, name: 'Tarjono' }">Object</p-checkbox>
    <p-checkbox v-model="selected" :value="['Item 1']">Array</p-checkbox>
  </div>
</template>Indeterminate (3-state) 
Indeterminate is condition between checked and unchecked. It's usefull for case like: selectAll feature.
preview
Result :
[
  "apple"
]vue
<template>
  <div class="flex flex-col space-y-3">
    <p-checkbox
      v-model="selectAll"
      :indeterminate="indeterminate">
      Select All
    </p-checkbox>
    <template v-for="item of items">
      <p-checkbox v-model="result" :value="item" class="ml-4">
        {{ item }}
      </p-checkbox>
    </template>
  </div>
</template>
<script setup>
  const items  = ref(['apple', 'grape', 'orange'])
  const result = ref([])
  const selectAll = computed({
    get () {
      return result.value.length === items.value.length
    },
    set (value) {
      if (selectAll.value !== value)
        result.value = value ? [...items.value] : []
    },
  })
  const indeterminate = computed(() => {
    return result.value.length > 0
      && result.value.length < items.value.length
  })
</script>Custom Appearance 
It's possible to create checkbox with custom appearance. If don't wanna see "check-appearance", don't forget to add value none in prop appearance.
preview
Selected :
[]vue
<template>
  <div class="flex flex-col space-y-3">
    <p-checkbox appearance="none" v-model="selected" value="Olivia Withness">
      <template #default>
        <p-card
          element="div"
          class="px-4 py-2 hover:shadow-md hover:border-subtle hover:dark:border-dark-subtle ease-in-out duration-200 min-w-[223px]"
          sectioned>
          <div class="flex items-center space-x-3">
            <IconBee class="text-muted dark:text-dark-muted" />
            <div>
              Olivia Withness
              <p-caption>olivia@eth.com</p-caption>
            </div>
          </div>
        </p-card>
      </template>
    </p-checkbox>
    <p-checkbox appearance="none" v-model="selected" value="Hyuga Kojiro">
      <template #default>
        <p-card
          element="div"
          class="px-4 py-2 hover:shadow-md hover:border-subtle hover:dark:border-dark-subtle ease-in-out duration-200 min-w-[223px]"
          sectioned>
          <div class="flex items-center space-x-3">
            <IconBee class="text-muted dark:text-dark-muted" />
            <div>
              Hyuga Kojiro
              <p-caption>hyuga@gmail.com</p-caption>
            </div>
          </div>
        </p-card>
      </template>
    </p-checkbox>
    <p-checkbox appearance="none" v-model="selected" value="Marsha Timoty" disabled>
      <template #default>
        <p-card
          element="div"
          class="px-4 py-2 hover:shadow-md hover:border-subtle hover:dark:border-dark-subtle ease-in-out duration-200 min-w-[223px]"
          sectioned>
          <div class="flex items-center space-x-3">
            <IconBee class="text-muted dark:text-dark-muted" />
            <div>
              Marsha Timoty
              <p-caption>timoty@marsha.com</p-caption>
            </div>
          </div>
        </p-card>
      </template>
    </p-checkbox>
  </div>
</template>API 
Props 
| Props | Type | Default | Description | 
|---|---|---|---|
| checked | Boolean | false | Checked condition. if it is true, Checkbox will be checked on first time | 
| value | Any | true | Checked value | 
| uncheckedValue | Any | false | Unchecked value | 
| disabled | Boolean | false | Disabled state | 
| readonly | Boolean | false | Readonly state | 
| indeterminate | Boolean | false | Indeterminate state | 
| modelValue | Any | - | v-modelvalue | 
Slots 
| Name | Description | 
|---|---|
| default | Content to place in toggle | 
Events 
| Name | Arguments | Description | 
|---|---|---|
| change | Boolean | Event when value changed |