componente · @solu30/ui-kit/input
TimePicker
Selector de hora en pasos de minutos, con utilidades de duración exportadas al lado.
10 sitios de import en 2 de 15 verticales — un archivo que la importa cuenta una vez, monte una instancia o veinte.
- TheCharterPanel
- gestorsalon
El componente, montado
Cargando el espécimen…
export function DateTimeMatrix() {
const [pickupDate, setPickupDate] = useState<Date | undefined>(new Date(2026, 7, 22))
const [range, setRange] = useState<DateRangeValue>({
from: new Date(2026, 7, 20),
to: new Date(2026, 7, 22),
})
const [boardingTime, setBoardingTime] = useState('09:30')
return (
<Stage label="Calendar, DateRangePicker y TimePicker" tall wide>
<div className="grid w-full grid-cols-1 gap-4 sm:grid-cols-3">
<Calendar
mode="single"
selected={pickupDate}
onSelect={setPickupDate}
disabled={{ before: new Date(2026, 7, 19) }}
/>
<div className="flex flex-col gap-3">
<div className="flex flex-col gap-1.5">
<Label>Rango de reserva del salón</Label>
<DateRangePicker
value={range}
onChange={setRange}
presets={[
{ label: 'Este fin de semana', from: new Date(2026, 7, 22), to: new Date(2026, 7, 23) },
]}
/>
<span className="text-xs text-content/50">
Sin disabled ni error: no bloquea fechas tomadas ni marca un rango inválido —
KIT-023.
</span>
</div>
<div className="flex flex-col gap-1.5">
<Label>Hora de embarque</Label>
<TimePicker value={boardingTime} onChange={setBoardingTime} minuteStep={15} />
</div>
<div className="flex flex-col gap-1.5">
<Label>Hora de cierre de cocina</Label>
<TimePicker value="23:00" onChange={() => {}} disabled />
</div>
</div>
</div>
</Stage>
)
}De specimens/input.tsx · DateTimeMatrix: 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 { TimePicker } from '@solu30/ui-kit/input'Props
| Prop | Requerida | Tipo | Qué hace |
|---|---|---|---|
| value | sí | string | — |
| onChange | sí | (value: string) => void | — |
| placeholder | opcional | string | — |
| className | opcional | string | — |
| disabled | opcional | boolean | — |
| minuteStep | opcional | number | — |
| icon | opcional | React$1.ReactNode | Custom icon to render before the time value |
Ejemplo del paquete
// `value` es "HH:mm" en 24 h. `minuteStep` decide los minutos ofrecidos.
<TimePicker value={hora} onChange={setHora} minuteStep={15} placeholder="Hora de inicio" />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.