StealThis .dev
Pages Medium

Salon — Revenue per Stylist + Service Mix

An owner-grade salon analytics dashboard with KPI cards for revenue, bookings, average ticket and retail share, each carrying trend deltas against the prior period. A pure-CSS bar chart ranks revenue per stylist, a conic donut breaks down the Hair, Color, Nails and Spa service mix, and a top-performers list sits beside a recent-transactions table. A Today, Week and Month segmented control swaps precomputed datasets with animated counters, all wrapped in a luxe rose-gold and cream editorial aesthetic.

Open in Lab
html css vanilla-js
Targets: JS HTML

Code

Revenue per Stylist + Service Mix

The morning view a boutique owner actually opens. A four-card KPI band leads with today’s revenue, bookings, average ticket and retail share — each number rolls up with an eased counter and carries a coloured delta chip measured against the prior period. Beneath it, a pure-CSS bar chart ranks revenue per stylist with animated gold-to-rose fills, while a conic-gradient donut and matching legend break the business down by Hair, Color, Nails and Spa.

A top-performers list ranks the floor by net revenue with per-service averages, and a recent-transactions table threads each settled ticket to its stylist and category via a small colour dot. The whole screen pivots on a single segmented control: switching between Today, Week and Month swaps precomputed datasets and re-renders every card, chart and row in place, with a toast confirming the change.

It is vanilla JS end to end — no chart library, no build step. The charts are CSS gradients, the counters are requestAnimationFrame, and the styling leans on the shared salon tokens: Cormorant Garamond display over Inter body, matte-black ink, cream surfaces and thin gold hairlines. Keyboard-operable rows, AA-contrast text and a dedicated sub-520px layout round it out.