1. Home
  2. /
  3. Stimulus-js
  4. /
  5. Stimulus.js Counter with Conditional Theme

Stimulus.js Counter with Conditional Theme - Stimulus-js Typing CST Test

Loading…

Stimulus.js Counter with Conditional Theme — Stimulus-js Code

Theme changes automatically based on even/odd counter value.

<div data-controller="counter" data-counter-count-value="0">
	<h2>Counter: <span data-counter-target="count">0</span></h2>
	<button data-action="click->counter#increment">+</button>
</div>
<script>
	import { Application } from '@hotwired/stimulus';
	const application = Application.start();
	application.register('counter', class extends Stimulus.Controller {
		static targets = ['count'];
		static values = { count: Number };
		connect() { this.updateDisplay(); }
		increment() { this.countValue++; this.updateDisplay(); }
		updateDisplay() { this.element.className = (this.countValue%2===0) ? 'dark-theme' : 'light-theme'; this.countTarget.textContent=this.countValue; }
	});
</script>
<style>.dark-theme{background:#222;color:#eee}.light-theme{background:#fff;color:#000}</style>

Stimulus-js Language Guide

Stimulus.js is a modest JavaScript framework designed to enhance static HTML by connecting elements to JavaScript controllers. It complements server-rendered HTML, making it ideal for modestly interactive UIs without a heavy frontend framework.

Primary Use Cases

  • ▸Server-rendered apps with light JS enhancements
  • ▸Rails and Turbo/Hotwire projects
  • ▸Interactive form behaviors
  • ▸Small UI widgets
  • ▸Progressive enhancement without SPA complexity

Notable Features

  • ▸Controller-based architecture
  • ▸HTML-driven declarative data bindings
  • ▸Lightweight (~3 KB gzipped)
  • ▸Easy integration with existing markup
  • ▸Automatic event handling via data attributes

Origin & Creator

Created by Basecamp (David Heinemeier Hansson and team) and first released in 2016.

Industrial Note

Stimulus is perfect for server-rendered applications that need modest interactivity, like Rails apps, Turbo-driven frontends, and progressive enhancement use-cases.

More Stimulus-js Typing Exercises

Stimulus.js Counter ControllerStimulus.js Counter with Step IncrementStimulus.js Counter with Max LimitStimulus.js Counter with Auto-ResetStimulus.js Counter with HistoryStimulus.js Counter with Dark Mode OnlyStimulus.js Counter with Auto-IncrementStimulus.js Full Featured Counter

Practice Other Languages

CReactPythonC++RustTypeScriptKotlinPHPJavaC#RubyMqlCqlN1qlCypher