JSFiddle - React, Tailwind, and code Playground

HTML

<div class="content" data-content="main"></div>

CSS

.content {
  display: flex;
  font-size: 0;
}

.block {
  width: 33.33%;
}

.block > div {
  background: #ffffff;
  box-shadow: 0 4px 8px -4px rgba(0, 0, 0, 0.25);
  margin: 5px;
}

.btn {
  display: inline-block;
  font-size: 16px;
  text-align: center;
  width: 33.33%;
}

.btn > div {
  background: #cccccc;
  border-radius: 2px;
  cursor: pointer;
  margin: 3px;
  padding: 10px;
}

.btn > div > div {
  background: rgba(255, 255, 255, 0.23);
  border-radius: 50%;
  box-shadow: inset 0 4px 8px -4px rgba(0, 0, 0, 0.27);
  margin: 0 auto;
  height: 60px;
  width: 60px;
}

.btn > div > span {}

.btn > div > span + span {}

JavaScript

const LIMIT_POINT = 30;
var ito = 0;
var TEST = {
  data: [
    [{
      id: 1,
      parentId: 0,
      max: 4
    }, {
      id: 2,
      parentId: 0,
      max: 2
    }, {
      id: 3,
      parentId: 0,
      max: 3
    }, {
      id: 4,
      parentId: 1,
      max: 4
    }, {
      id: 5,
      parentId: 2,
      max: 2
    }, {
      id: 6,
      parentId: 3,
      max: 3
    }, {
      id: 7,
      parentId: 4,
      max: 4
    }, {
      id: 8,
      parentId: 5,
      max: 2
    }, {
      id: 9,
      parentId: 6,
      max: 3
    }, {
      id: 10,
      parentId: 7,
      max: 10
    }],
    [{
      id: 1,
      parentId: 0,
      max: 4
    }, {
      id: 2,
      parentId: 0,
      max: 2
    }, {
      id: 3,
      parentId: 0,
      max: 3
    }, {
      id: 4,
      parentId: 1,
      max: 4
    }, {
      id: 5,
      parentId: 2,
      max: 2
    }, {
      id: 6,
      parentId: 3,
      max: 3
    }, {
      id: 7,
      parentId: 1,
      max: 4
    }, {
      id: 8,
      parentId: 2,
      max: 2
    }, {
      id: 9,
      parentId: 3,
      max: 3
    }],
    [{
      id: 1,
      parentId: 0,
      max: 4
    }, {
      id: 2,
      parentId: 0,
      max: 2
    }, {
      id: 3,
      parentId: 0,
      max: 3
    }, {
      id: 4,
      parentId: 1,
      max: 4
    }, {
      id: 5,
      parentId: 2,
      max: 2
    }, {
      id: 6,
      parentId: 3,
      max: 3
    }, {
      id: 7,
      parentId: 1,
      max: 4
    }, {
      id: 8,
      parentId: 2,
      max: 2
    }, {
      id: 9,
      parentId: 3,
      max: 3
    }]
  ],
  initTable: function() {
    $(TEST.data).each(function(k1, v1) {
      $('[data-content="main"]').append('<div class="block" data-block="' + k1 + '"><div></div></div>')
      $(v1).each(function(k2, v2) {
        $('[data-block="' + k1 + '"] > div').append('<div class="btn" data-btn="' +
          v2.id + '"><div><div>icon</div><span data-span="real">0</span>/<span data-span="max">' + v2.max +...