← Kembali ke showcase

Counter Interaktif

Counter sederhana dengan reaktivitas Proxy-based. Klik tombol untuk menambah, reset untuk kembali ke nol.

reaktivitas data on_klik
counter.pjs
---
judul: "Counter Interaktif"
---

Gaya:
    body
        font-family: 'Inter', system-ui, -apple-system, sans-serif
        margin: 0
        min-height: 100vh
        display: flex
        align-items: center
        justify-content: center
        background: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%)
        color: #e0e0e0
    .counter-card
        background: rgba(255,255,255,0.05)
        backdrop-filter: blur(20px)
        -webkit-backdrop-filter: blur(20px)
        border: 1px solid rgba(255,255,255,0.1)
        border-radius: 24px
        padding: 40px
        text-align: center
        box-shadow: 0 25px 60px rgba(0,0,0,0.4)
        min-width: 320px
    .counter-card h1
        margin: 0 0 8px
        font-size: 1.5rem
        font-weight: 700
        background: linear-gradient(135deg, #7dd3fc, #d3b6e9)
        -webkit-background-clip: text
        -webkit-text-fill-color: transparent
        background-clip: text
    .count-display
        font-size: 5rem
        font-weight: 900
        letter-spacing: -2px
        margin: 20px 0
        background: linear-gradient(135deg, #fff, #94a3b8)
        -webkit-background-clip: text
        -webkit-text-fill-color: transparent
        background-clip: text
        line-height: 1
    .click-label
        font-size: 0.8rem
        color: #64748b
        text-transform: uppercase
        letter-spacing: 0.1em
        font-weight: 600
        margin-bottom: 24px
    .btn-group
        display: flex
        gap: 12px
        justify-content: center
    .btn
        padding: 12px 28px
        border: 1px solid rgba(255,255,255,0.12)
        border-radius: 12px
        font-size: 1rem
        font-weight: 700
        cursor: pointer
        transition: all 0.15s ease
        font-family: inherit
        background: rgba(255,255,255,0.06)
        color: #e0e0e0
    .btn:hover
        background: rgba(255,255,255,0.12)
        color: #fff
        transform: translateY(-1px)
    .btn:active
        transform: translateY(0)
    .btn-primary
        background: linear-gradient(135deg, #7dd3fc, #4f9ef7)
        border: none
        color: #0f172a
        box-shadow: 0 4px 20px rgba(125,211,252,0.2)
    .btn-primary:hover
        opacity: 0.9
        color: #0f172a
    .btn-reset
        border-color: rgba(239,68,68,0.2)
        color: #fca5a5
        font-size: 0.85rem
        padding: 8px 20px
    .btn-reset:hover
        background: rgba(239,68,68,0.1)
        border-color: rgba(239,68,68,0.4)

Halaman Counter:
  data hitung = 0

  Buat div.counter-card:
    Buat h1: $judul
    Buat div.count-display:
      Saat hitung:
        Buat span:
          hitung
    Buat div.click-label: "Jumlah Klik"
    Buat div.btn-group:
      Buat tombol.btn.btn-primary#klik:
        "🔺 Tambah"
        on_klik = simpan hitung tambah 1 ke hitung
      Buat tombol.btn.btn-reset#reset:
        "↺ Reset"
        on_klik = simpan 0 ke hitung
Live Preview