--- name: date_picker_input kind: component lang: ts domain: ui version: "1.0.0" purity: impure signature: "DatePickerInput(props: DatePickerInputProps): JSX.Element" description: "Selector de fecha con input y calendario desplegable. Soporta fecha simple, múltiple y rango. Wrapper sobre Mantine DatePickerInput." tags: [date, picker, calendar, form, component, ui, interactive, mantine, pendiente-usar] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "" imports: ["@mantine/dates"] output: "Componente DatePickerInput que renderiza input con calendario para selección de fechas" tested: false tests: [] test_file_path: "" file_path: "frontend/functions/ui/date_picker_input.tsx" props: - name: type type: "'default' | 'multiple' | 'range'" required: false description: "Modo de selección — fecha simple, múltiples fechas, o rango de fechas" - name: value type: "DateValue | DateValue[] | [DateValue, DateValue] | null" required: false description: "Fecha o fechas seleccionadas (controlled)" - name: onChange type: "(value: DateValue | DateValue[] | [DateValue, DateValue] | null) => void" required: false description: "Callback al cambiar la selección de fecha" - name: valueFormat type: "string" required: false description: "Formato de la fecha mostrada en el input (ej: 'DD/MM/YYYY')" - name: clearable type: "boolean" required: false description: "Permite limpiar la selección de fecha" - name: label type: "string" required: false description: "Label del campo" - name: placeholder type: "string" required: false description: "Texto cuando no hay fecha seleccionada" - name: minDate type: "Date" required: false description: "Fecha mínima seleccionable" - name: maxDate type: "Date" required: false description: "Fecha máxima seleccionable" - name: disabled type: "boolean" required: false description: "Deshabilitar el selector" - name: size type: "'xs' | 'sm' | 'md' | 'lg' | 'xl'" required: false description: "Tamaño del componente" emits: [onChange] has_state: true framework: react variant: [default] params: - name: props desc: "Props del componente DatePickerInput — incluye type (modo de selección), value, onChange, valueFormat, clearable, label, placeholder, minDate, maxDate, disabled y size" --- ## Ejemplo ```tsx import { DatePickerInput, DatePicker } from '@fn_library' import { useState } from 'react' // Fecha simple function SingleDateExample() { const [value, setValue] = useState(null) return ( ) } // Rango de fechas function RangeDateExample() { const [range, setRange] = useState<[Date | null, Date | null]>([null, null]) return ( ) } // Múltiples fechas function MultipleDateExample() { const [dates, setDates] = useState([]) return ( ) } // DatePicker inline (sin input) function InlineDateExample() { const [value, setValue] = useState(null) return ( ) } ``` ## Notas - Wrapper directo sobre `DatePickerInput` y `DatePicker` de `@mantine/dates` v9. Todas las props de Mantine son válidas. - Requiere importar `@mantine/dates/styles.css` — este wrapper ya lo incluye. - El prop `type` controla el modo: `'default'` (fecha simple), `'multiple'` (varias fechas), `'range'` (rango con inicio y fin). - `DatePicker` es el calendario inline sin input — útil para formularios donde el calendario debe estar siempre visible. - `valueFormat` acepta tokens de dayjs (ej: `'DD/MM/YYYY'`, `'MMMM D, YYYY'`). - Re-exporta también `DatePicker` de `@mantine/dates` con el mismo patrón de wrapper.