Wavecast Radio

Set defaults for all shortcode invocations in your hugo.toml. Per-shortcode params override site config; site config overrides built-in defaults.

Global Player Defaults

[pa[rpaaspptarmroeryuasaureptt]mrsleoesciop.esa=l=ptdao=e"y"dn=atc"tu=raa"dusz=mi"etueof"Prft/alaaamlacldpsyasaeeesetg"rta"]""

Supported site config keys match the shortcode parameter names (except src, title, poster, description, and chapters, which are always per-episode).

All Config Options

KeyTypeDefaultDescription
sourcestring"local"Default source adapter: "local", "azuracast", "ivoox"
persistentbooltrueNavigation persistence across page loads
preloadstring"metadata"Browser preload hint: "metadata", "auto", "none"
typestring"audio/mpeg"MIME type for the audio element
autoplayboolfalseAuto-play on page load (blocked by most browsers)
ratebooltrueShow playback rate control (cycles 0.5× to 2×)

CSS Custom Properties

The player renders in a Shadow DOM with a default dark theme. The external stylesheet provides a light theme. Both are customizable via CSS custom properties on <podcast-player> and <podcast-footer>.

PropertyLight defaultDark defaultDescription
--podcast-player-primary#4f46e5#6366f1Accent colour for buttons, active states
--podcast-player-bg#ffffff#1e1e2eBackground colour
--podcast-player-surface#f3f4f6#2a2a3eSurface colour for buttons, containers
--podcast-player-text#111827#e0e0e0Primary text colour
--podcast-player-text-muted#6b7280#888Muted text (times, description)
--podcast-player-accent#7c3aed#a78bfaHover/alt accent colour
--podcast-player-radius12px12pxOuter border radius
--podcast-player-border#e5e7ebrgba(255,255,255,0.06)Border around the player
--podcast-player-progress-height5px5pxProgress bar track height
--podcast-player-thumb-size14px14pxProgress bar thumb diameter
--podcast-player-focus-ringrgba(79,70,229,0.35)rgba(167,139,250,0.35):focus-visible ring shadow

Light / Dark Mode

The light theme is the default. For dark mode, wrap the player in a container with [data-theme="dark"] or .theme-dark:

b}ody--.ppdooaddrcckaa-ssmtto--dppellaapyyoeedrrc--abtsget:x-tp#:l1ae#y1eee0r2ee0{;e0;

::part() Selectors

Use ::part() to style individual Shadow DOM elements from outside:

pppp}ooooddddtPcPcAccrlaralaaaasoslssnytgttts-r-b--fbpepuppoulsltllrtasataamtyyoyy:oebeneenrarsrrs:r:::c::o::appnpplaaaaerrhrr(ttott1((v((.ppeps1lrrlk)aoai;ygyp-r--bebbtstansnc)))k:-{{hbotbhvnaee)cir:kg,hghortvo:eurn8dp{:x;ho}tpink;}

Available Parts: Inline Player

PartDescription
playerOuter container
headerTop header row
posterCover image
titleEpisode title
controlsControl bar
play-btnPlay/pause button
skip-back-btnSkip backward button
skip-fwd-btnSkip forward button
progress-wrapProgress bar container
progressProgress bar
time-currentCurrent time display
time-sepTime separator (/)
time-durationDuration display
extrasVolume/mute/rate extras row
vol-wrapVolume container
mute-btnMute toggle button
volumeVolume slider
rate-btnPlayback rate button
chaptersChapter list container
errorError message
PartDescription
footerOuter container
posterCover image
titleTrack title
play-btnPlay/pause button
skip-back-btnSkip backward button
skip-fwd-btnSkip forward button
progressProgress bar
time-currentCurrent time display
time-durationDuration display
mute-btnMute toggle button
volumeVolume slider
rate-btnPlayback rate button
close-btnClose button

Responsive Behaviour

Below 480px the player adapts:

  • Progress bar drops to its own full-width row
  • Play button grows to 52×52px; other buttons to 44×44px
  • Slider thumbs enlarge for easier touch targeting
  • Chapters switch to horizontal scroll