release.templ (2446B)
1 package release 2 3 import ( 4 "lyrics/internal/server/routes" 5 "lyrics/internal/server/ui/layouts/base" 6 "time" 7 ) 8 9 templ Release(params ReleaseParams) { 10 @base.Base(base.BaseParams{Title: params.Release.Title, PageStylesheets: []string{"release.css"}}) { 11 <article class="release-layout"> 12 <section class="release-content"> 13 <header> 14 <h1> 15 { params.Release.Title } 16 if params.Release.LatinTitle != nil { 17 <span>({ *params.Release.LatinTitle })</span> 18 } 19 </h1> 20 </header> 21 <section aria-label="Track list"> 22 if len(params.Release.Songs) == 0 { 23 <p class="section-label -muted">No songs yet.</p> 24 } else { 25 <ol> 26 for _, as := range params.Release.Songs { 27 <li value={ as.TrackNumber }> 28 <a href={ routes.Song(as.Song) }> 29 { as.Song.Title } 30 if as.Song.LatinTitle != nil { 31 <span>({ *as.Song.LatinTitle })</span> 32 } 33 </a> 34 </li> 35 } 36 </ol> 37 } 38 </section> 39 <footer aria-label="Release actions"> 40 <a href={ routes.ReleaseEdit(params.Release) }>edit release</a> 41 </footer> 42 </section> 43 <aside class="release-details"> 44 <dl> 45 <dt>Artist(s)</dt> 46 <dd> 47 <ul> 48 for _, artist := range params.Release.Artists { 49 <li> 50 <a href={ routes.Artist(artist.Artist) }> 51 { artist.Artist.Name } 52 if artist.Artist.LatinName != nil { 53 <span>({ *artist.Artist.LatinName })</span> 54 } 55 </a> 56 </li> 57 } 58 </ul> 59 </dd> 60 <dt>Released</dt> 61 <dd> 62 <time datetime={ params.Release.ReleaseDate.Format(time.DateOnly) }> 63 { params.Release.ReleaseDate.Format("Jan 2, 2006") } 64 </time> 65 </dd> 66 <dt>Type</dt> 67 <dd> 68 <span>{ params.Release.Type }</span> 69 </dd> 70 if params.Release.MusicBrainzReleaseID != nil { 71 <dt>MusicBrainz release ID</dt> 72 <dd> 73 <a href={ "https://musicbrainz.org/release/" + string(*params.Release.MusicBrainzReleaseID) }> 74 { *params.Release.MusicBrainzReleaseID } 75 </a> 76 </dd> 77 <dt>Cover</dt> 78 <dd 79 hx-get={ routes.ReleaseCover(params.Release) } 80 hx-trigger="load" 81 hx-swap="innerHTML" 82 > 83 <span class="section-label -muted">Loading cover art from <a href="https://coverartarchive.org/">Cover Art Archive</a>...</span> 84 </dd> 85 } 86 </dl> 87 </aside> 88 </article> 89 } 90 }