MediaTrack
note

This rune is part of @refrakt-md/media. Install with npm install @refrakt-md/media and add "@refrakt-md/media" to the plugins array in your refrakt.config.json.

Track

A standalone track or recording with metadata. A heading becomes the track name. Use attributes for artist, duration, and other metadata. Tracks can be used independently or inside a playlist rune.

Basic usage

A single track with artist and duration.

{% track artist="Radiohead" duration="4:01" type="song" %}
# Everything in Its Right Place
{% /track %}
<li data-rune="track" typeof="MusicRecording" data-rune-fields="{&quot;artist&quot;:&quot;Radiohead&quot;,&quot;duration&quot;:&quot;PT241S&quot;,&quot;type&quot;:&quot;song&quot;}">
  <span data-name="track-name" data-field="name" property="name">Everything in Its Right Place</span>
  <span data-name="track-artist">Radiohead</span>
  <span data-name="track-duration">4:01</span>
</li>
  • Everything in Its Right PlaceRadiohead4:01
  • <li typeof="MusicRecording" class="rf-track" data-elevation="flat" data-rune="track" data-density="full">
      <span data-name="track-name" data-field="name" property="name" class="rf-track__track-name">Everything in Its Right Place</span>
      <span data-name="track-artist" class="rf-track__track-artist">Radiohead</span>
      <span data-name="track-duration" class="rf-track__track-duration">4:01</span>
    </li>

    Podcast episode

    Use type="episode" for podcast episodes with a date.

    {% track type="episode" artist="Tech Weekly" duration="42:30" date="March 2025" %}
    # The Future of Web Standards
    {% /track %}
    <li data-rune="track" typeof="MusicRecording" data-rune-fields="{&quot;artist&quot;:&quot;Tech Weekly&quot;,&quot;duration&quot;:&quot;PT2550S&quot;,&quot;datePublished&quot;:&quot;March 2025&quot;,&quot;type&quot;:&quot;episode&quot;}">
      <span data-name="track-name" data-field="name" property="name">The Future of Web Standards</span>
      <span data-name="track-artist">Tech Weekly</span>
      <span data-name="track-duration">42:30</span>
      <span data-name="track-meta">March 2025</span>
      <meta content="March 2025" property="datePublished">
    </li>
  • The Future of Web StandardsTech Weekly42:30March 2025
  • <li typeof="MusicRecording" class="rf-track" data-elevation="flat" data-rune="track" data-density="full">
      <span data-name="track-name" data-field="name" property="name" class="rf-track__track-name">The Future of Web Standards</span>
      <span data-name="track-artist" class="rf-track__track-artist">Tech Weekly</span>
      <span data-name="track-duration" class="rf-track__track-duration">42:30</span>
      <span data-name="track-meta" class="rf-track__track-meta">March 2025</span>
      <meta content="March 2025" property="datePublished" />
    </li>

    With body content

    Tracks can include additional body content like descriptions or show notes.

    {% track artist="Miles Davis" duration="9:22" type="song" %}
    # So What
    
    The opening track from *Kind of Blue*, featuring the iconic two-chord modal structure that changed jazz forever.
    {% /track %}
    <li data-rune="track" typeof="MusicRecording" data-rune-fields="{&quot;artist&quot;:&quot;Miles Davis&quot;,&quot;duration&quot;:&quot;PT562S&quot;,&quot;type&quot;:&quot;song&quot;}">
      <span data-name="track-name" data-field="name" property="name">So What</span>
      <span data-name="track-artist">Miles Davis</span>
      <span data-name="track-duration">9:22</span>
      <div data-name="track-description">
        <p>
          The opening track from
          <em marker="*">Kind of Blue</em>
          , featuring the iconic two-chord modal structure that changed jazz forever.
        </p>
      </div>
    </li>
  • So WhatMiles Davis9:22

    The opening track from Kind of Blue, featuring the iconic two-chord modal structure that changed jazz forever.

  • <li typeof="MusicRecording" class="rf-track" data-elevation="flat" data-rune="track" data-density="full">
      <span data-name="track-name" data-field="name" property="name" class="rf-track__track-name">So What</span>
      <span data-name="track-artist" class="rf-track__track-artist">Miles Davis</span>
      <span data-name="track-duration" class="rf-track__track-duration">9:22</span>
      <div data-name="track-description" class="rf-track__track-description">
        <p>
          The opening track from 
          <em marker="*">Kind of Blue</em>
          , featuring the iconic two-chord modal structure that changed jazz forever.
        </p>
      </div>
    </li>

    Attributes

    AttributeTypeRequiredDescription
    srcstringURL of the audio or video file for this track.
    artiststringPerformer or creator name for this track.
    durationstringTrack length in m:ss, h:mm:ss, or ISO 8601 duration format.
    numbernumberPosition number of the track in its parent listing.
    datestringPublication or release date for the track.
    urlstringExternal link to the track on a streaming platform or website.
    type"song" | "episode" | "chapter" | "talk" | "video"Media category: song, episode, chapter, talk, or video.

    Universal attributes

    bg

    The background layer (SPEC-088): image, video, gradient, flat overlay wash and legibility scrim, in a single injected layer behind the rune's content.

    AttributeTypeRequiredDescription
    bgstringBackground preset applied to this block
    bg-fromstringGradient start colour — a semantic token name (→ var(--rf-color-*))
    bg-gradient"to-t" | "to-b" | "to-l" | "to-r" | "to-tr" | "to-br" | "to-bl" | "to-tl"Gradient direction (bounded named set)
    bg-gradient-type"linear" | "radial" | "conic"Gradient type
    bg-tostringGradient end colour — a semantic token name
    bg-viastringOptional middle gradient stop — a semantic token name
    scrim"top" | "bottom" | "left" | "right" | "none"Scrim direction (heaviest edge); presence turns the scrim on, "none" opts out of the default cover scrim
    scrim-blur"none" | "sm" | "md" | "lg"Frost scrim blur amount
    scrim-strength"sm" | "md" | "lg"Gradient scrim strength
    scrim-tone"dark" | "light"Whether the scrim darkens (for light text) or lightens (for dark text)
    scrim-type"gradient" | "frost"Scrim treatment: gradient (default) or frost (backdrop blur)
    elevation

    The chrome/depth ladder (SPEC-107). The skin maps each rung to a chrome bundle by attribute, so there is no BEM class.

    AttributeTypeRequiredDescription
    elevation"sunken" | "flush" | "flat" | "raised" | "floating" | "overlay" | "none" | "sm" | "md" | "lg"Surface depth on the SPEC-107 ladder (sunken→overlay); none/sm/md/lg are deprecated aliases
    inset

    Internal padding override.

    AttributeTypeRequiredDescription
    inset"flush" | "tight" | "default" | "loose" | "breathe"Inner padding of this block
    motion

    Scroll-reveal entrance (SPEC-105). The author declares the character, the theme owns the choreography, a behaviour owns the timing.

    AttributeTypeRequiredDescription
    reveal"none" | "fade" | "slide" | "scale" | "blur"Scroll-reveal entrance character (none|fade|slide|scale|blur); the theme owns the choreography
    staggerbooleanCascade this block's items in as it reveals (no-op on single-child runes)
    spacing

    Block-level rhythm override.

    AttributeTypeRequiredDescription
    spacing"flush" | "tight" | "default" | "loose" | "breathe"Vertical spacing above and below this block
    substrate

    Generated pattern fills (SPEC-087). Markers only — the engine sets the attributes and cell/opacity custom properties, CSS draws the pattern.

    AttributeTypeRequiredDescription
    substrate"dots" | "grid" | "lines" | "cross" | "checker" | "none"Generated surface pattern
    substrate-fill"inherit" | "inset"Surface fill the pattern sits on (full colour stays with tint)
    substrate-opacity"sm" | "md" | "lg"Pattern ink strength
    substrate-size"sm" | "md" | "lg"Pattern cell size
    substrate-target"self" | "media"Which surface the pattern fills (overrides the rune/theme default)
    tint

    Per-rune colour override (SPEC-053): a named tint from the theme registry, with inline per-token overrides layered on top.

    AttributeTypeRequiredDescription
    tintstringColor tint preset applied to this block
    tint-mode"auto" | "dark" | "light"Whether the tint adapts to auto, dark, or light mode
    width

    The track a block rune occupies.

    AttributeTypeRequiredDescription
    width"compact" | "narrow" | "content" | "wide" | "full"Maximum width constraint for this block
    Not availableWhy
    dropcap, readingthis rune declares no prose body
    framethis rune declares neither a `frameTarget` nor a media section
    prominencethis rune has no page-section header