Skip to content

Pin Input

Entrada de código PIN, OTP ou verificação dígito a dígito.

Uso

vue
<script setup lang="ts">
import { PinInput } from '@halfbyte/maka'
import { ref } from 'vue'

const codigo = ref([])
</script>

<template>
  <PinInput v-model="codigo" label="Código de verificação" :length="6" :otp="true" />
</template>

Exemplos

vue
<!-- padrão -->
<PinInput v-model="val" :length="4" />
<PinInput v-model="val" :length="6" :otp="true" />

<!-- com separador 3-3 -->
<PinInput v-model="val" :length="6" :separator="3" />

<!-- mascarado (PIN) -->
<PinInput v-model="val" :length="4" :mask="true" />

<!-- estados -->
<PinInput v-model="val" :length="4" tone="error" />
<PinInput v-model="val" :length="4" tone="success" />
<PinInput v-model="val" :length="4" :disabled="true" />

<!-- tamanhos -->
<PinInput v-model="val" :length="4" size="sm" />
<PinInput v-model="val" :length="4" size="lg" />

Props

PropTipoPadrão
modelValuestring[]
labelstring
lengthnumber4
type"numeric" | "alphabetic" | "alphanumeric""numeric"
maskbooleanfalse
otpbooleanfalse
size"sm" | "md" | "lg""md"
tone"default" | "error" | "success""default"
separatornumber
autoFocusbooleanfalse
invalidbooleanfalse
disabledbooleanfalse
placeholderstring"○"
namestring

Events

EventoPayloadDescrição
update:modelValuestring[]Emitido ao alterar qualquer dígito
completestringEmitido ao preencher todos os dígitos

Notas

  • separator: insere um separador visual entre células. Ex: :separator="3" numa entrada de 6 dígitos forma grupos 3–3.
  • tone="error" aplica animação de shake ao entrar no estado de erro.
  • invalid é mantido por compatibilidade e implica tone="error" automaticamente.