JSFiddle - React, Tailwind, and code Playground

author(s): Tao Xin

HTML

<script src="https://cdn.jsdelivr.net/gh/vanjs-org/van/public/van-0.12.4.nomodule.min.js"></script>

JavaScript

const {button, div} = van.tags

const buttonStyleList = [
  ["πŸ‘†", "πŸ‘‡"],
  ["πŸ‘", "πŸ‘Ž"],
  ["πŸ”Ό", "πŸ”½"],
  ["⬆️", "⬇️"],
  ["⏫", "⏬"],
  ["πŸ“ˆ", "πŸ“‰"],
]

const Counter = ({buttons}) => {
  const counter = van.state(0)
  const dom = div(
    "❀️ ", counter, " ",
    button({onclick: () => ++counter.val}, buttons[0]),
    button({onclick: () => --counter.val}, buttons[1]),
    button({onclick: () => dom.remove()}, "❌"),
  )
  return dom
}

const CounterSet = () => {
  const containerDom = div()
  return div(
    containerDom,
    button({onclick: () => van.add(containerDom,
      Counter({buttons: buttonStyleList[Math.floor(Math.random() * buttonStyleList.length)]}))},
      "βž•",
    ),
  )
}

van.add(document.body, CounterSet())