# All files / js/components/ui/pin-input PinInput.vue

0% Statements 0/6
100% Branches 0/0
0% Functions 0/1
0% Lines 0/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26

     <script setup lang="ts" generic="Type extends 'text' | 'number' = 'text'">
    import type { PinInputRootEmits, PinInputRootProps } from "reka-ui"
    import type { HTMLAttributes } from "vue"
    import { reactiveOmit } from "@vueuse/core"
    import { PinInputRoot, useForwardPropsEmits } from "reka-ui"
    import { cn } from "@/lib/utils"

    const props = withDefaults(defineProps<PinInputRootProps<Type> & { class?: HTMLAttributes["class"] }>(), {
      modelValue: () => [],
    })
    const emits = defineEmits<PinInputRootEmits<Type>>()

    const delegatedProps = reactiveOmit(props, "class")

    const forwarded = useForwardPropsEmits(delegatedProps, emits)
    </script>

    <template>
      <PinInputRoot
        data-slot="pin-input"
        v-bind="forwarded" :class="cn('flex items-center gap-2 has-disabled:opacity-50 disabled:cursor-not-allowed', props.class)"
      >
        <slot />
      </PinInputRoot>
    </template>