--- name: color_input kind: component lang: ts domain: ui version: "1.0.0" purity: impure signature: "ColorInput(props: ColorInputProps): JSX.Element" description: "Selector de color con picker, swatches predefinidos y eye dropper. Soporta hex, rgb, hsl con alpha. Wrapper sobre Mantine ColorInput." tags: [color, picker, input, form, component, ui, interactive, mantine] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "" imports: ["@mantine/core"] tested: false tests: [] test_file_path: "" file_path: "frontend/functions/ui/color_input.tsx" framework: react has_state: true props: - name: format type: "\"hex\" | \"hexa\" | \"rgb\" | \"rgba\" | \"hsl\" | \"hsla\"" required: false description: "Formato de color a usar en el valor. Por defecto hex." - name: swatches type: "string[]" required: false description: "Lista de colores predefinidos mostrados como swatches en el picker." - name: withEyeDropper type: "boolean" required: false description: "Muestra el boton eye dropper para seleccionar color de la pantalla." - name: withPicker type: "boolean" required: false description: "Muestra el color picker interactivo. Por defecto true." - name: value type: "string" required: false description: "Valor controlado del color en el formato especificado." - name: onChange type: "(value: string) => void" required: false description: "Callback invocado cuando el color cambia." - name: label type: "React.ReactNode" required: false description: "Etiqueta del campo." - name: placeholder type: "string" required: false description: "Placeholder del input de texto." - name: disabled type: "boolean" required: false description: "Deshabilita el input." - name: size type: "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"" required: false description: "Tamanio del componente." emits: [onChange, onChangeEnd] output: "Componente ColorInput que renderiza input de color con picker desplegable y swatches" params: [] --- ## Ejemplo ```tsx import { ColorInput } from '@fn_library/color_input' // Basico con hex (default) // Con swatches predefinidos // Con rgba y eye dropper console.log(value)} /> ``` ## Notas Wrapper directo sobre `ColorInput` de Mantine v9. Hereda todas las props de Mantine sin restricciones. El eye dropper (`withEyeDropper`) solo funciona en browsers que soporten la EyeDropper API (Chrome/Edge). En Firefox no aparece el boton automaticamente. Cuando `format` es `hex` o `hsl`, el valor no incluye canal alpha. Para transparencia usar `hexa`, `rgba` o `hsla`.