About this set
Pricing calculators for products billed by seats or by volume, where a range slider recalculates the price as it moves. Seat slider with volume rates is a team whiteboard priced per seat, from 1 to 150 seats, with three rate bands of $8, $7 and $6 a seat; the band that applies is highlighted, and the total, the seat count and the rate in the sentence under it all update together. Volume steps with a price per thousand is an email API with seven sending volumes from 10,000 to over 2 million emails a month; each step shows the monthly price and the price per thousand emails, the first step is free and the last switches to custom pricing with a Talk to sales button. The slider is a native range input with a visible label and an aria-valuetext that reads 12 seats or 100,000 emails a month instead of a bare number, and the total is an output element so the new price is announced. About forty lines of vanilla JavaScript do the maths, and the page is rendered with the default values so it still reads correctly without the script.
What’s included
- Per-seat pricing with volume rate bands and a per-volume calculator
- Native range input with a visible label and a meaningful aria-valuetext
- Total price in an output element, so changes are announced
- About forty lines of vanilla JavaScript, no library
- Bootstrap version uses .form-range, .list-group, .card and .btn
Accessibility
Each slider is a native range input with a visible label, and the script keeps aria-valuetext in step so assistive technology hears 12 seats or 100,000 emails a month. The arrow keys move the slider one step, the total is an output element tied to the slider, and the slider shows a 3px outline on keyboard focus. Button transitions stop under prefers-reduced-motion.
Customise it
Change --us-accent, --us-track and --us-tint on .us. Edit the data-from and data-rate attributes on the rate list for your own seat bands, and the data-steps array for volume steps; in Bootstrap the same variables restyle .form-range.






