new-artist.templ (2375B)
1 package newartist 2 3 import ( 4 "lyrics/internal/domain" 5 "lyrics/internal/server/ui/layouts/base" 6 ) 7 8 templ NewArtist(params NewArtistParams) { 9 @base.Base(base.BaseParams{Title: "new artist", PageStylesheets: []string{"new-artist.css"}}) { 10 <h1>Add an artist</h1> 11 <form 12 class="artist-form" 13 hx-post="/artist/new" 14 hx-swap="none" 15 hx-disable-elt="#add-artist-btn" 16 > 17 <fieldset x-data="{ showLatinName: false }"> 18 <legend>Name</legend> 19 <label title="prefer the artists name in their original language. use the latin name input for english names"> 20 artist: 21 <input 22 hx-get="/artist/search?format=similar" 23 hx-trigger="input changed delay:500ms, load" 24 hx-target="#similar-artists" 25 hx-swap="innerHTML" 26 name="artist" 27 type="text" 28 pattern={ domain.NoTrailingOrLeadingSpaceRegex.String() } 29 required 30 @input="showLatinName = isNonAscii($event.target.value)" 31 /> 32 </label> 33 <label x-show="showLatinName"> 34 latin name: 35 <input 36 name="latin-name" 37 type="text" 38 :required="showLatinName" 39 pattern={ domain.IsValidSortNamePattern } 40 /> 41 </label> 42 </fieldset> 43 <section id="similar-artists" class="similar-artists" aria-label="Similar artists"></section> 44 <fieldset> 45 <legend>Disambiguation</legend> 46 <label title="helps users distinguish between artists with identical or similar names, e.g. South Korean singer-songwriter"> 47 disambiguation: 48 <input 49 name="disambiguation" 50 type="text" 51 pattern={ domain.NoTrailingOrLeadingSpaceRegex.String() } 52 /> 53 <i data-lucide="info"></i> 54 </label> 55 </fieldset> 56 <fieldset> 57 <legend>Biography</legend> 58 <label> 59 biography: 60 <textarea name="biography" rows="16" spellcheck></textarea> 61 </label> 62 </fieldset> 63 <fieldset> 64 <legend>MusicBrainz</legend> 65 <label title="External identifier used for metadata lookups such as cover art."> 66 Artist ID (optional): 67 <input 68 name="musicbrainz-artist-id" 69 type="text" 70 pattern={ domain.IsValidMusicBrainzIDPattern } 71 placeholder="e32a4ae3-67d1-4541-84d8-de6ab2d7dec1" 72 /> 73 <i data-lucide="info"></i> 74 </label> 75 </fieldset> 76 <footer aria-label="Form actions"> 77 <button class="-primary" id="add-artist-btn" type="submit">add artist</button> 78 </footer> 79 </form> 80 } 81 }