Sound

Interaction sound feedback via cuelume — fourteen synthesized UI sounds, zero audio files, delegated globally through data-cuelume-* attributes.

Sound palette

Click any sound to hear it. All fourteen sounds ship with the cuelume package — no audio assets in this repo.

NameCharacterSuggested use
Soft two-note ascending bellDefault hover
Quick four-note twinklePlayful accents
Single note gliding downDismiss, collapse
Warm slow swellReveal, expand
Breathy quiet swellDense lists
Crisp instant tickNav and menu hover
Dull muted knockPointer down
Brighter springy tickPointer up
Mechanical click-clackSwitches, tabs, selection chips
Warm three-note confirmationAfter an action succeeds
Soft knock and descending refusalRecoverable errors
Papery flick with a glass tickPages, galleries, carousels
Brief unresolved rising shimmerUser-initiated work starting
Focus tick with a harmonic bloomImage or content loaded

Declarative attributes

Add a data-cuelume-* attribute to any element; SoundProvider calls bind() once in the root layout and delegates every interaction for the whole document — no per-component wiring needed. Leave the value empty for the default sound, or set it to any sound name.

PropTypeDefaultDescription
data-cuelume-hoverpointerenterchime
data-cuelume-presspointerdownpress
data-cuelume-releasepointeruprelease
data-cuelume-toggleclicktoggle

Imperative playback

For sounds tied to async state (a fetch resolving, a form action succeeding or failing) rather than a raw pointer event, call play() directly.

For sounds tied to async state (a fetch resolving, a form action succeeding or failing) rather than a raw pointer event, call play() directly.

Where sounds are used

Every element currently wired to a cuelume sound across the app, kept in sync manually with the code — this table does not update itself when the code changes.

PageElementSound
/setupBack buttonhover: tick · press + release
/setupInfo "i" buttonshover: tick
/setupLanguage pills, challenge/industry chips, prompt pickstoggle
/setupInfo modal close (×)droplet
/setupGenerate buttonpress + release · loading/success/error on request
/setupStart buttonpress + release
/interviewMic toggle (Start/Stop recording)toggle
/interviewSendpress + release
/interviewGrade my interviewpress + release
/interviewNotes panel expand/collapsetoggle
/interviewRate-limit banner / mic permission deniederror
/gradingGrading failed stateerror
/resultsNew session (header + bottom CTA)press + release
/resultsSign out · Sign in with Googlepress + release
/resultsRecommendation "Show more/less"toggle
/resultsTranscript accordiontoggle
/resultsVacancy card (opens job posting)hover: tick · press + release
/dashboardNew session, Save profilepress + release
/dashboardAccount menu triggertoggle
/dashboardSettings menu itemhover: tick
/dashboardSign out menu itempress + release
/dashboardInterview list rowhover: tick · press + release
/dashboardProfile savepress + release · success/error on save
/ (landing)Logo, nav linkshover: tick
/ (landing)Language toggle, Solution tab switchertoggle
/ (landing)All "/setup" CTAs (Navbar, Hero, DarkDemo, MetricAccent, FinalCTA)press + release
/ (landing)FAQ accordiontoggle
/ (landing)Product Hunt banner linkhover: tick · press + release
Sergiy Klimkovych

Need a design system like this?

I design and build products end‑to‑end — from first idea and design system to production‑ready code, ready to hand off to your development team.

Product Designer | AI Design Engineer | Designer for Startups | Mobile & Complex SaaS | from Idea to Product | Framer Developer