componente · @solu30/ui-kit/input
TagInput
Campo que arma una lista de etiquetas: se escribe, se agrega y se sacan de a una.
7 sitios de import en 5 de 15 verticales — un archivo que la importa cuenta una vez, monte una instancia o veinte.
- cmp-packages
- dietaly
- gestorsalon
- luigi
- raquetea
El componente, montado
Cargando el espécimen…
export function ComboTagMatrix() {
const [crew, setCrew] = useState('')
const [toppings, setToppings] = useState<string[]>(['dulce-de-leche'])
const [allergens, setAllergens] = useState<string[]>(['gluten', 'frutos secos'])
return (
<Stage label="Combobox, MultiSelect y TagInput · ninguno tiene error" tall wide>
<div className="grid w-full grid-cols-1 gap-3 sm:grid-cols-2">
<Combobox
label="Tripulación de guardia"
options={CREW_OPTIONS}
value={crew}
onChange={setCrew}
onCreate={(name) => setCrew(name)}
placeholder="Buscar o agregar..."
/>
<Combobox
label="Proveedor de catering"
options={CREW_OPTIONS}
value=""
onChange={() => {}}
error="No hay proveedores habilitados para esta fecha"
/>
<MultiSelect
label="Toppings incluidos"
options={TOPPING_OPTIONS}
value={toppings}
onChange={setToppings}
showSelectAll
summaryAfter={3}
/>
<div className="flex flex-col gap-1.5">
<TagInput
label="Alérgenos declarados"
value={allergens}
onChange={setAllergens}
placeholder="Agregar alérgeno..."
/>
<span className="text-xs text-content/50">
TagInput no tiene error: una lista mal cargada no se puede marcar en rojo — KIT-023.
</span>
</div>
</div>
</Stage>
)
}De specimens/input.tsx · ComboTagMatrix: el espécimen del Muestrario, no un ejemplo oficial del paquete. Muestra cómo se usa la pieza de verdad, montada contra los tipos instalados —eso es lo que vale— pero no es documentación del kit.
Cómo se usa
import { TagInput } from '@solu30/ui-kit/input'Props
| Prop | Requerida | Tipo | Qué hace |
|---|---|---|---|
| value | sí | string[] | Current list of tags |
| onChange | sí | (tags: string[]) => void | Called with updated tag list on add/remove |
| label | opcional | React__default.ReactNode | Optional label above the input |
| placeholder | opcional | string | Input placeholder text |
| className | opcional | string | Additional class for the wrapper |
| tagClassName | opcional | string | Additional class for each tag chip |
| disabled | opcional | boolean | Disables the input and add/remove controls |
Ejemplo del paquete
<TagInput
label="Benefits"
placeholder="Housing, rotation..."
value={benefits}
onChange={setBenefits}
/>Del @example del JSDoc de @solu30/ui-kit, sin editar: son 65 de los 541 símbolos. La sangría y los renglones en blanco son los del paquete.