Open source. Autor. React 19, Tailwind, Radix, Framer Motion. Publicado en npm.
DesignSystem
Un design system en React que sigue las guías de interfaz de Apple, entregado de dos formas a la vez: un paquete npm del que dependes, y un CLI con registro que copia los componentes a tu repositorio para que sean tuyos.
El problema
Un design system falla de dos maneras. Si se entrega como dependencia bloqueada, cada equipo que necesita un cambio pequeño hace fork o pelea. Si se entrega como copiar y pegar, no hay forma de propagar un arreglo a quien ya copió.
Este hace las dos cosas. Se publica como paquete npm versionado, y entrega un CLI con su propio registro para copiar un componente al repositorio. Lo que hace viable la segunda mitad es que el CLI recuerda lo que escribió.
El componente es tuyo y aun así recibes el arreglo
Los componentes copiados con el CLI siguen siendo editables en tu repositorio, y el CLI todavía puede decirte cuándo se movió la versión de arriba.
Actualizaciones que se pueden deshacer
El CLI tiene add, init, status, update y rollback. Una actualización que rompe una pantalla se revierte sin arqueología en el historial de git.
Una restricción en lugar de gusto personal
Las guías de interfaz de Apple son la referencia, así que las decisiones de componente se resuelven contra un estándar publicado y no contra una discusión.
Decisiones y el precio que pagué por ellas
Entregar como paquete y como registro
Los equipos que quieren una dependencia la tienen; los que necesitan poseer y editar el componente lo copian. La misma fuente produce ambos, así que ninguno es el camino descuidado.
Trade-off aceptado
Dos mecanismos de distribución que mantener sincronizados, y una construcción de registro que tiene que correr en cada publicación.
El CLI registra lo que escribió
Copiar un componente solo es seguro si algo recuerda de qué versión vino. Ese registro es lo que hace posibles status y rollback.
Trade-off aceptado
Estado adicional en el repositorio que consume, y una edición manual puede desviarse de lo que el CLI cree que hay.
Radix debajo, Apple encima
Las primitivas accesibles de Radix se encargan de foco, teclado y ARIA; el sistema pone encima el movimiento y la superficie estilo Apple en lugar de reimplementar comportamiento.
Trade-off aceptado
Una actualización de Radix es un asunto de todo el sistema, y las primitivas limitan hasta dónde se puede reestilizar un componente.
