JSFiddle - React, Tailwind, and code Playground

HTML

<div id="toolbar">
    <button class="login">Login</button>
</div>

<div id="another-section">
    <button class="login">Login</button>
</div>

<div id="login-dialog">
     <button class="login">Do login!</button>
</div>

CSS

#toolbar {
    background-color: grey;
}

#another-section {
    background-color: green;
}

#login-dialog {
    display: none;
}

JavaScript

//in EventBus.js
var EventBus = {
    subscribers: {},
    publish: function (eventName) {
        var args = Array.prototype.slice.call(arguments, 1),
            subscribers = this.subscribers[eventName] || [],
            i = 0,
            len = subscribers.length,
            s;
        
        for (; i < len; i++) {
            s = subscribers[i];
            
            s.fn.apply(s.scope, args);
        }
        
    },
    subscribe: function (eventName, fn, scope) {
        var subs = this.subscribers[eventName] = this.subscribers[eventName]  || [];
        subs.push({ fn: fn, scope: scope });
    }
};

//in toolbar.js
function Toolbar(el, eventBus) {
    var $el = this.$el = $(el),
        $loginButton = $('button.login', $el);
    
    $loginButton.click(function () {
        eventBus.publish('userWantsToLogin');
    });
    
    eventBus.subscribe('userLoggedIn', function () {
        $loginButton.html('Logout');
        //change button handlers to handle logout...
    });
}

//in another-section.js
function AnotherSection(el, eventBus) {
    var $el = this.$el = $(el),
        $loginButton = $('button.login', $el);
    
    $loginButton.click(function () {
        eventBus.publish('userWantsToLogin');
    });
    
    eventBus.subscribe('userLoggedIn', function () {
        $loginButton.html('Logout');
        //change button handlers to handle logout...
    });
}

//in main.js
$(function () {
    var $loginDialog = $('#login-dialog');
    
    $loginDialog.dialog({ autoOpen: false});
    
    $('button.login', $loginDialog).click(function () {
        EventBus.publish('userLoggedIn');
    });
    
    EventBus.subscribe('userWantsToLogin', function () {
        $loginDialog.dialog('open');
    });
    
    new Toolbar('#toolbar', EventBus);
    new AnotherSection('#another-section', EventBus);
});