Files
Caramel-CRM/resources/js/components/ui/checkbox/Checkbox.vue
T

31 lines
1.2 KiB
Vue
Raw Normal View History

2025-10-20 08:57:51 +02:00
<script setup lang="ts">
2026-02-17 10:35:03 +01:00
import type { CheckboxRootEmits, CheckboxRootProps } from "reka-ui"
import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core"
import { Check } from "lucide-vue-next"
import { CheckboxIndicator, CheckboxRoot, useForwardPropsEmits } from "reka-ui"
import { cn } from "@/lib/utils"
2025-10-20 08:57:51 +02:00
2026-02-17 10:35:03 +01:00
const props = defineProps<CheckboxRootProps & { class?: HTMLAttributes["class"] }>()
2025-10-20 08:57:51 +02:00
const emits = defineEmits<CheckboxRootEmits>()
2026-02-17 10:35:03 +01:00
const delegatedProps = reactiveOmit(props, "class")
2025-10-20 08:57:51 +02:00
const forwarded = useForwardPropsEmits(delegatedProps, emits)
</script>
<template>
<CheckboxRoot
v-bind="forwarded"
:class="
2026-02-17 10:35:03 +01:00
cn('grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',
2025-10-20 08:57:51 +02:00
props.class)"
>
2026-02-17 10:35:03 +01:00
<CheckboxIndicator class="grid place-content-center text-current">
2025-10-20 08:57:51 +02:00
<slot>
2026-02-17 10:35:03 +01:00
<Check class="h-4 w-4" />
2025-10-20 08:57:51 +02:00
</slot>
</CheckboxIndicator>
</CheckboxRoot>
</template>