lyrics

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

song.templ (1910B)


      1 package song
      2 
      3 import (
      4 	"lyrics/internal/domain"
      5 	"lyrics/internal/server/routes"
      6 	"lyrics/internal/server/ui/layouts/base"
      7 	"time"
      8 )
      9 
     10 templ Song(params SongParams) {
     11 	@base.Base(base.BaseParams{Title: params.Song.Title, PageStylesheets: []string{"song.css"}}) {
     12 		<article class="song-layout">
     13 			<section class="song-content">
     14 				<header>
     15 					<h1 id="song-title">
     16 						{ params.Song.Title }
     17 						if params.Song.LatinTitle != nil {
     18 							<span>({ *params.Song.LatinTitle })</span>
     19 						}
     20 					</h1>
     21 				</header>
     22 				<section>
     23 					<h2 id="lyrics-heading">Lyrics</h2>
     24 					<pre>{ params.Song.Lyrics }</pre>
     25 				</section>
     26 			</section>
     27 			<aside class="song-details">
     28 				<dl>
     29 					<dt>Artist(s)</dt>
     30 					<dd>
     31 						<ul>
     32 							for _, artist := range params.Song.Artists {
     33 								<li>
     34 									<a href={ routes.Artist(artist.Artist) }>
     35 										{ artist.Artist.Name }
     36 										if artist.Artist.LatinName != nil {
     37 											<span>({ *artist.Artist.LatinName })</span>
     38 										}
     39 										if artist.Role == domain.RoleFeatured {
     40 											<span>[featured]</span>
     41 										}
     42 									</a>
     43 								</li>
     44 							}
     45 						</ul>
     46 					</dd>
     47 					<dt>Released</dt>
     48 					<dd>
     49 						<time datetime={ params.Song.ReleaseDate.Format(time.DateOnly) }>
     50 							{ params.Song.ReleaseDate.Format("Jan 2, 2006") }
     51 						</time>
     52 					</dd>
     53 					<dt>Genre(s)</dt>
     54 					<dd>
     55 						<ul>
     56 							for _, genre := range params.Song.Genres {
     57 								<li>{ genre }</li>
     58 							}
     59 						</ul>
     60 					</dd>
     61 					<dt>Release(s)</dt>
     62 					<dd>
     63 						<ul>
     64 							for _, release := range params.Song.Releases {
     65 								<li>
     66 									<a href={ routes.Release(release.Release) }>
     67 										{ release.Release.Title }
     68 										if release.Release.LatinTitle != nil {
     69 											<span>({ *release.Release.LatinTitle })</span>
     70 										}
     71 									</a>
     72 								</li>
     73 							}
     74 						</ul>
     75 					</dd>
     76 				</dl>
     77 			</aside>
     78 		</article>
     79 	}
     80 }