Skip to content

Input

CInput es un <input> nativo compatible con v-model. Renderiza un único elemento input.c-input sin estructura adicional. Se usa típicamente dentro de CField.


Importación

js
import { CInput } from '@bedrock/core/vue';
scss
@use '@bedrock/core/input';

Props

PropTipoDefaultDescripción
modelValueString|Number''Valor del input. Vinculado con v-model.
typeString'text'Tipo HTML del input: text, email, password, number, tel, etc.
disabledBooleanfalseDeshabilita el input nativamente.

Cualquier atributo adicional (id, name, placeholder, autocomplete, maxlength…) se reenvía directamente al elemento <input>.


Emits

EventoPayloadDescripción
update:modelValueStringEmitido en cada evento input. Permite usar v-model.

Ejemplos de uso

Básico con v-model

html
<CInput v-model="nombre" placeholder="Tu nombre" />

Tipo email

html
<CInput v-model="email" type="email" autocomplete="email" />

Tipo password

html
<CInput v-model="password" type="password" autocomplete="current-password" />

Deshabilitado

html
<CInput v-model="valor" :disabled="true" />

Dentro de CField

html
<CField field-id="email">
  <template #label>Email</template>
  <CInput id="email" v-model="email" type="email" />
  <template #hint>Te enviaremos el acceso aquí.</template>
</CField>

Estilos en el proyecto consumidor

scss
@use 'bedrock-config' as *;
@use '@bedrock/core/input';

.c-input {
  @include typeset(input);
  width: 100%;
  height: spacing(10);
  padding-block: 0;
  padding-inline: spacing(3);
  border: 1px solid color(border);
  border-radius: spacing(1);
  color: color(text);
  background-color: color(surface);
  outline: none;
  transition: border-color 0.15s;

  &:focus {
    border-color: color(primary);
  }

  &:disabled {
    opacity: 0.5;
    cursor: not-allowed;
  }
}

Publicado bajo licencia MIT.