JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://fb.me/JSXTransformer-0.5.1.js"></script>
<script src="http://fb.me/react-with-addons-0.5.1.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css">
<script src="http://fb.me/react-js-fiddle-integration.js"></script>

CSS

body {
    padding: 20px;
    text-align: center;
}

JavaScript 1.7

/** @jsx React.DOM */

// Patch Bootstrap popover to take a React component instead of a
// plain HTML string
$.extend($.fn.popover.Constructor.DEFAULTS, {react: false});
var oldSetContent = $.fn.popover.Constructor.prototype.setContent;
$.fn.popover.Constructor.prototype.setContent = function() {
    if (!this.options.react) {
        return oldSetContent.call(this);
    }

    var $tip = this.tip();
    var title = this.getTitle();
    var content = this.getContent();

    $tip.removeClass('fade top bottom left right in');

    // Render title, if any
    var $title = $tip.find('.popover-title');
    if (title) {
        React.renderComponent(title, $title[0]);
    } else {
        $title.hide();
    }

    React.renderComponent(
        content,
        $tip.find('.popover-content')[0]
    );
};

var BsPopover = React.createClass({
    componentDidMount: function() {
        var $el = $(this.getDOMNode());

        $el.popover({
            react: true,
            title: this.props.title,
            content: this.props.content,
            trigger: '',  // Don't toggle on click automatically
            placement: this.props.placement != null ?
                this.props.placement : undefined
        });
        if (this.props.visible) {
            $el.popover('show');
        }
    },

    componentDidUpdate: function(prevProps, prevState) {
        var $el = $(this.getDOMNode());
        if (prevProps.visible !== this.props.visible) {
            $el.popover(this.props.visible ? 'show' : 'hide');
        }
    },

    componentWillUnmount: function() {
        // Clean up before destroying: this isn't strictly
        // necessary, but it prevents memory leaks
        var $el = $(this.getDOMNode());
        var popover = $el.data('bs.popover');
        var $tip = popover.tip();
        React.unmountComponentAtNode(
            $tip.find('.popover-title')[0]
        );
        React.unmountComponentAtNode(
            $tip.find('.popover-content')[0]
     ...