JSFiddle - React, Tailwind, and code Playground

by Dhanck

HTML

<link href="https://fonts.googleapis.com/css2?family=Montserrat&display=swap" rel="stylesheet">
<div id="pila">
    <div class="pila-display">
    <div class="pila-top"></div>
    <div class="pila-body">
      <span id="charging">🗲</span>
      <span class="pila-charge"></span>
    </div>
  </div>
  <div class="pila-info">
    <div class="level-cont">
      <span id="level">(battery level unknown)</span>%
    </div>
    <div class="discharge-cont">
      <span id="dischargingTime">(discharging time unknown)</span>
      Minutes Left
    </div>
  </div>
</div>

CSS

*{
  font-family: 'Montserrat', sans-serif;
}
#pila {
    display: flex;
    align-items: center;
}
.pila-display {
    display: flex;
    flex-direction: column;
    align-items: center;
}
.pila-top {
    height: 6px;
    width: 22px;
    background: #aaa;
    border: 2px solid #aaa;
    border-bottom: none;
}
.pila-body {
    width: 80px;
    height: 125px;
    border: 2px solid #aaa;
    border-radius: 8px;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}
.pila-charge {
    width: calc(100% - 4px);
    background: #378bce;
    display: block;
    position: relative;
    border: 2px solid #fff;
    border-bottom-left-radius: 8px;
    border-bottom-right-radius: 8px;
    border-radius: 8px;
}
#charging {
    position: absolute;
    z-index: 1;
    color: #ccc;
    font-size: 75px;
    transform: rotate(120deg);
    padding: 10px;
}
.level-cont {
    font-size: 70px;
    font-weight: 600;
}
.pila-info {
    color: #737171;
    padding: 20px;
}
.discharge-cont {
    font-size: 20px;
}

JavaScript

window.onload = function () {
      function updateBatteryStatus(battery) {
        document.querySelector('#charging').textContent = battery.charging ? '🗲' : '';
        document.querySelector('#level').textContent = battery.level * 100;
        document.querySelector('#dischargingTime').textContent = battery.dischargingTime / 60;
      }

      navigator.getBattery().then(function(battery) {
        // Update the battery status initially when the promise resolves ...
        updateBatteryStatus(battery);

        // .. and for any subsequent updates.
        battery.onchargingchange = function () {
          updateBatteryStatus(battery);
        };

        battery.onlevelchange = function () {
          updateBatteryStatus(battery);
        };

        battery.dischargingTime = function () {
          updateBatteryStatus(battery);
        };
            var charge_load = $('.pila-body').height() / 100;
            var actual_load = $('#level').text();
            $('.pila-charge').height(actual_load * charge_load );
      }); 
      
      
};