lyrics

lyrics
git clone git://brookjeynes.dev/bjeynes/lyrics.git
Log | Files | Refs

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 }