JSFiddle - React, Tailwind, and code Playground

HTML

<p>
	<label for="my-textarea">textarea</label>
	<textarea id="my-textarea"
						maxlength="160"
						data-counter-label="残り{remaining}文字まで入力できます"></textarea>
</p>

CSS

.short-and-sweet-counter {
  color: #666;
  font-size: 0.75em;
}

label {
  display: inline-block;
  margin-bottom: 0.5rem;
}

input,
textarea {
  display: block;
  border: 1px solid #ddd;
  border-radius: 0.5rem;
  padding: 0.5rem;
  color: #666;
  font-size: 1rem;
  margin-bottom: 0.3125rem;
}
input:focus,
textarea:focus {
  outline: none;
  border-color: #666;
  box-shadow: 0 0 0 0.25rem #eee;
}

textarea {
  min-width: 20rem;
  min-height: 5rem;
  max-width: 100%;
}

body {
  padding: 2rem;
  color: #333;
}

p {
  margin-bottom: 3rem;
}

JavaScript

/*
 * short-and-sweet v1.0.2 - Accessible character counter for input elements
 * Copyright (c) 2018 Rik Schennink <hello@rikschennink.nl> (http://rikschennink.nl/)
 */! function(e, t) {
    if ("function" == typeof define && define.amd) define(["module", "exports"], t);
    else if ("undefined" != typeof exports) t(module, exports);
    else {
        var n = {
            exports: {}
        };
        t(n, n.exports), e.shortAndSweet = n.exports
    }
}(this, function(e, t) {
    "use strict";
    Object.defineProperty(t, "__esModule", {
        value: !0
    });
    var i = Object.assign || function(e) {
            for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
        };
    t.
    default = function(e) {
        if (typeof window === "undefined" ? null : window) {
            var d = function(e) {
                var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}, n = document.createElement(e);
                return Object.keys(t).forEach(function(e) {
                    n.setAttribute(e, t[e])
                }), n
            }, p = 0,
                n = function(s, e) {
                    if (s.getAttribute("maxlength")) {
                        var u = s.dataset.counterLabel || e.counterLabel,
                            l = function(e) {
                                var n = e.assistDelay,
                                    t = e.counterClassName,
                                    r = d("span", {
                                        class: t,
                                        "aria-hidden": "true"
                                    }),
                                    a = d("span", {
                                        style: "position:absolute;overflow:hidden;height:1px;width:1px;padding:0;border:0;clip:rect(1px, 1px, 1px,...