Tras construir decenas de aplicaciones con React, pensé que elegir un selector de color sería cuestión de instalar una librería popular y seguir adelante. La realidad fue otra: cada solución existente me obligaba a pelear con decisiones rígidas de diseño y a escribir hacks frágiles. Esa frustración me llevó a crear una librería nueva y aquí cuento por qué.
El problema que lo inició todo fue el enfoque monolítico. Muchas librerías de selectores de color ofrecen un único componente grande y rígido. No puedes mover el control de tono encima del área de saturación, ni insertar controles propios entre el selector y los deslizadores, ni montar un diseño horizontal compacto para móvil. Cada sistema de diseño es distinto, pero estas librerías te fuerzan a aceptar su visión o a remendarla con CSS frágil.
La inflexibilidad de layout fue aún peor en proyectos con requisitos que cambiaban a menudo. A veces necesitaba un diseño vertical, otras uno horizontal, y en otras ocasiones quería incluir una paleta de presets personalizada entre el área de saturación y los deslizadores. Mover el control de alfa por encima del de tono no era posible y cualquier ajuste dependía de trucos con CSS que se rompían al mínimo cambio.
Otra fuente de dolor fue la guerra contra los estilos. La mayoría de selectores traen su CSS y terminas luchando por adaptar el borde, el espaciado o el modo oscuro. Entre especificidad, cascada y important, se va más tiempo arreglando estilos que construyendo funcionalidades. Un selector debería integrarse con tu sistema de diseño, no ir en su contra.
La gestión de estado también resultó frustrante. Si trabajas con valores HSL, muchas librerías convierten internamente a RGB o HSV y devuelven un HSL distinto por redondeo. Ese pequeño desfase obliga a manejar discrepancias entre lo que el usuario introduce y lo que recibes a la salida, complicando lógica y pruebas. Si necesito iniciar en HSL y conservar exactamente ese formato, no debería pelearme con la librería.
Para resolverlo creé react-beautiful-color, pensando en composición real, control total del layout y respeto del formato de color de entrada.
Primero, componentes compuestos que de verdad componen. En vez de un bloque único, ofrece piezas como Saturation, Hue, Alpha y EyeDropper que puedes ordenar, alinear y agrupar a tu gusto. Si quieres el control de tono arriba, lo pones arriba. Si necesitas intercalar tus propios controles o indicadores, simplemente los insertas. El layout lo controlas tú.
Segundo, una arquitectura de componentes que prioriza la independencia. Cada parte es autónoma, estilable y posicionable. Esto facilita integrar el selector en cualquier sistema de diseño con requisitos específicos de espaciado, densidad o responsividad, sin hacks ni dependencias ocultas.
Tercero, preservación de formato sin deriva. Con el hook de estado, si tu entrada es HSL, se mantiene HSL; a la vez, tienes disponibles al instante las representaciones en HEX, RGB y HSV. Así evitas conversiones innecesarias y errores de redondeo, simplificando la lógica y mejorando la precisión.
Cuarto, un enfoque de estilos centrado en Tailwind. No se envía CSS propio, solo clases utilitarias, por lo que encaja de forma natural con tokens, temas y modo oscuro. Sin overrides, sin peleas de especificidad, sin conflictos.
Quinto, soporte de APIs modernas del navegador. La integración con EyeDropper permite capturar colores directamente de la pantalla sin dependencias complejas ni polyfills extra en entornos compatibles.
Sexto, base en TypeScript desde el primer día. Las uniones discriminadas ofrecen seguridad de tipos, mejor autocompletado y refactorizaciones seguras. Los errores de formato de color se detectan en compilación, no en producción.
El resultado es una experiencia de desarrollo mucho más agradable. En lugar de luchar contra una librería rígida, compones exactamente lo que tu interfaz necesita. Desde entradas simples hasta herramientas de diseño complejas, el patrón de componentes compuestos evita atajos frágiles y hace que el selector se adapte a tu sistema y no al revés.
Si te interesa ver el enfoque en detalle, documentación y ejemplos están disponibles en react-beautiful-color.dev.
En Q2BSTUDIO vivimos estos retos a diario al construir aplicaciones a medida y plataformas escalables. Somos una empresa de desarrollo de software experta en software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio con power bi, ia para empresas, automatización de procesos y agentes IA. Si tu organización necesita un selector de color flexible, un frontend sólido o una solución integral de producto digital, podemos ayudarte. Descubre cómo abordamos proyectos de aplicaciones a medida con calidad, rendimiento y diseño centrado en el usuario en desarrollo de software y aplicaciones a medida, y cómo aplicamos inteligencia artificial práctica y medible para crear ventajas competitivas en IA para empresas.