componente · @solu30/ui-kit/input
InlineTextField
Campo de texto para editar dentro de una celda de tabla, opcionalmente en tipografía monoespaciada.
2 sitios de import en 2 de 15 verticales — un archivo que la importa cuenta una vez, monte una instancia o veinte.
- cmp-packages
- dietaly
El componente, montado
Cargando el espécimen…
export function InlineEditMatrix() {
const [salonName, setSalonName] = useState('Salón Jardín')
const [capacity, setCapacity] = useState<number | null>(180)
const [flavorName, setFlavorName] = useState('Dulce de leche granizado')
const [brandColor, setBrandColor] = useState<string | null>('#2563eb')
return (
<Stage label="Edición en línea · nueve componentes, ninguno con error" tall wide>
<div className="grid w-full grid-cols-1 gap-4 sm:grid-cols-2">
<EditableField label="Nombre del salón" value={salonName} onSave={setSalonName} />
<EditableField
label="Capacidad máxima"
value={String(capacity ?? '')}
onSave={(v) => setCapacity(Number(v))}
type="number"
required
/>
<div className="flex flex-col gap-1.5">
<span className="text-xs text-content/50">InlineText</span>
<InlineText value={flavorName} onSave={setFlavorName} placeholder="Nombre del sabor" />
</div>
<div className="flex flex-col gap-1.5">
<span className="text-xs text-content/50">InlineText · disabled</span>
<InlineText value="Sabor de temporada — cerrado" onSave={() => {}} disabled />
</div>
<div className="flex flex-col gap-1.5">
<span className="text-xs text-content/50">InlineTextField (celda de tabla)</span>
<InlineTextField initial="EVT-2026-0148" onSave={() => {}} mono plain />
</div>
<div className="flex flex-col gap-1.5">
<span className="text-xs text-content/50">InlineNumberField · con sufijo (celda de tabla)</span>
<InlineNumberField initial={148} onSave={() => {}} suffix=" pers." plain />
</div>
<InlineColor label="Color de marca" value={brandColor} onSave={setBrandColor} />
</div>
</Stage>
)
}De specimens/input.tsx · InlineEditMatrix: 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 { InlineTextField } from '@solu30/ui-kit/input'Props
| Prop | Requerida | Tipo | Qué hace |
|---|---|---|---|
| initial | sí | string | — |
| onSave | sí | (v: string) => void | — |
| label | opcional | string | Nombre accesible del campo. El input no muestra etiqueta visible —vive en una celda—, así que esto es lo único que lo nombra para un lector de pantalla. |
| placeholder | opcional | string | — |
| mono | opcional | boolean | — |
| plain | opcional | boolean | When true, renders without border/background at rest; shows border on hover/focus. |