JSFiddle - React, Tailwind, and code Playground

HTML

<div class="toggle-button" id="downloadButton"><span>Export to CSV</span>
</div>

CSS

.toggle-button {
    height: 25px;
    width: 70px;
    color: black;
    background-color: white;
    border: solid #f1f1f2 2px;
    margin: 0 10px 0 0;
    cursor: pointer;
    float: left;
    padding-top: 2px;
    font-family:"Source Sans Pro";
    font-size: 13px;
    z-index: 1;
}
.toggle-button:hover {
    background-color: #98BF47;
    color: white;
    font-weight: 600;
    border: solid #444952 2px;
    z-index: 1;
}

JavaScript

$('#downloadButton').click(function () {
    // some data to export
    var data = [{
        "title": "Book title 1",
        "author": "Name1 Surname1"
    }, {
        "title": "Book title 2",
        "author": "Name2 Surname2"
    }, {
        "title": "Book title 3",
        "author": "Name3 Surname3"
    }, {
        "title": "Book title 4",
        "author": "Name4 Surname4"
    }];

    // prepare CSV data
    var csvData = new Array();
    csvData.push('"Book title","Author"');
    data.forEach(function (item, index, array) {
        csvData.push('"' + item.title + '","' + item.author + '"');
    });

    // download stuff
    var fileName = "data.csv";
    var buffer = csvData.join("\n");
    var blob = new Blob([buffer], {
        "type": "text/csv;charset=utf8;"
    });
    var link = document.createElement("a");

    if (link.download !== undefined) { // feature detection
        // Browsers that support HTML5 download attribute
        link.setAttribute("href", window.URL.createObjectURL(blob));
        link.setAttribute("download", fileName);
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    } else {
        alert('CSV export only works in Chrome, Firefox, and Opera.');
    }
});