The parts.
Every class lives in assets/css/prefstore.css. Copy the markup from this page’s source.
Buttons
One primary action per screen. On a shop’s page the primary button takes the shop’s colour.
The mark and the coin
Inline the SVG so the p takes currentColor. The coin is a group with the class coin: a rim circle and a face circle.
Motion
Two Lottie animations, nothing else moves. Files in animations/; helper in assets/js/prefstore-motion.js. Both show a still frame for people who have reduced motion turned on.
Coin drop · ink
Paid screen and sale alert on light grounds. Falls, turns once, settles, then one glint. Plays once, 1.2s.
Coin drop · white
Same, for dark and merchant colours. The helper picks ink or white from --ps-on-m.
Coin spin · loop
Only while a payment is processing, inside the Pay button. 0.67s per turn.
Prefkey notice
Value and minimum in one sentence, at one size. Turns dark when the Prefkey applies.
Receipt
Every number is set in the mono face so prices line up. The Prefkey row is the only coloured row.
Status, chips and notices
Forms and time slots
Merchant tile
Set data-merchant-color on any wrapper. prefstore.js picks white or ink for the p.