ScaleRocket/Web

Input

Composant de champ de saisie avec etat d'erreur, placeholder et support des types.

Apercu

Le composant Input de packages/ui est un wrapper style autour de l'element natif <input>. Il fournit un style coherent, des anneaux de focus et un etat d'erreur.

Import

import { Input } from "@saas/ui";

Utilisation de base

<Input type="email" placeholder="you@example.com" />

Types

Le composant prend en charge tous les types d'input HTML standard :

<Input type="text" placeholder="Full name" />
<Input type="email" placeholder="you@example.com" />
<Input type="password" placeholder="Password" />
<Input type="number" placeholder="0" />
<Input type="url" placeholder="https://..." />
<Input type="search" placeholder="Search..." />

Etat d'erreur

Affichez les erreurs de validation en combinant le champ avec un message d'erreur :

<div>
  <Input
    type="email"
    placeholder="you@example.com"
    className="border-red-500 focus-visible:ring-red-500"
    aria-invalid="true"
  />
  <p className="mt-1 text-sm text-red-500">Please enter a valid email address.</p>
</div>

Ajoutez les classes border-red-500 et focus-visible:ring-red-500 pour indiquer visuellement l'erreur.

Avec des labels

Associez toujours les champs de saisie a des labels pour l'accessibilite :

<div className="space-y-2">
  <label htmlFor="email" className="text-sm font-medium text-gray-700">
    Email
  </label>
  <Input id="email" type="email" placeholder="you@example.com" />
</div>

Input controle

const [value, setValue] = useState("");

<Input
  value={value}
  onChange={(e) => setValue(e.target.value)}
  placeholder="Type here..."
/>

Etat desactive

<Input disabled placeholder="Cannot edit" />

Le champ est visuellement attenue et non interactif lorsque disabled est defini.

Props

PropTypeDefautDescription
typestring"text"Type d'input HTML
placeholderstringTexte de placeholder
disabledbooleanfalseDesactive le champ
classNamestringClasses CSS supplementaires

Tous les attributs HTML standard de <input> sont egalement acceptes (par ex. onChange, value, name, required, aria-*).

Styles par defaut

ClasseFonction
flex h-10 w-full rounded-md borderChamp pleine largeur avec hauteur coherente
border-gray-300Couleur de bordure par defaut
px-3 py-2 text-smPadding interieur et taille de police
focus-visible:outline-none focus-visible:ring-2Anneau de focus lors de la navigation au clavier
disabled:cursor-not-allowed disabled:opacity-50Apparence desactivee

Conseils

  • Utilisez type="search" pour les champs de recherche ; certains navigateurs ajoutent automatiquement un bouton d'effacement.
  • Pour le telechargement de fichiers, utilisez type="file" mais envisagez une zone de depot personnalisee pour une meilleure experience utilisateur.
  • Combinez avec une bibliotheque de formulaires comme React Hook Form pour la validation et la gestion de la soumission.

Fini ? Marquez cette page comme terminée.

On this page