componente · @solu30/ui-kit/input
InlineColor
Fila de color que al tocarla abre un selector con campo hexadecimal, y confirma con Enter.
Seguir leyendo — 1 párrafo más
InlineColor renders a tappable row that becomes a color picker on click. Commit with Enter key or the check button. Escape or cancel button reverts. The color input and hex text input stay in sync.
2 sitios de import en 1 de 15 verticales — un archivo que la importa cuenta una vez, monte una instancia o veinte.
- gestorsalon
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 { InlineColor } from '@solu30/ui-kit/input'Props
| Prop | Requerida | Tipo | Qué hace |
|---|---|---|---|
| label | sí | string | Field label |
| value | sí | string | null | Current hex color value (null = none) |
| onSave | sí | (v: string) => void | Called with the new hex string when the user commits |
| className | opcional | string | Extra class names applied to the outer wrapper |