Tres comportamientos en un mismo objeto, en tres ficheros y sin ningún import entre ellos. Dos solo comparten el objeto: spin lo gira y breathe le cambia el tamaño, y ninguno sabe que el otro existe. El tercero necesita llamar a uno, y compartir el objeto no basta, así que spin publica cómo pararlo con provide y toggle lo alcanza con useApi. Pulsa espacio.
Fíjate en el orden de index.ts. El que consume se adjunta antes que el que publica, y funciona igual: useApi devuelve una forma de preguntar, no la respuesta, así que se pregunta cuando ya todo está en marcha y el orden de dos líneas no decide si funciona. requires: ['spin'] es la mitad de esa relación que una herramienta puede leer: avisa, pero nunca impide que un comportamiento se ejecute.