component SoundTrackPage(track *arn.SoundTrack, user *arn.User)
	SoundTrackTabs(track, user)

	.soundtrack-full-page
		if track.Title == ""
			h1.mountable untitled
		else
			h1.mountable= track.Title

		.widget-form.soundtrack-media-list
			each media in track.Media
				.widget.mountable
					h3.widget-title= media.Service
					.soundtrack-media.video-container
						iframe.lazy.video(data-src=media.EmbedLink(), allowfullscreen="allowfullscreen")
					
					if user != nil && media.Service == "Youtube" && track.File != ""
						.buttons
							button.action(data-action="playAudio", data-trigger="click", data-audio-src="/audio/" + track.File, data-soundtrack-id=track.ID)
								Icon("play")
								span Play in background

			.widget.mountable
				h3.widget-title Anime

				.soundtrack-anime-list
					each anime in track.Anime()
						a.soundtrack-anime-list-item(href=anime.Link(), title=anime.Title.ByUser(user))
							img.soundtrack-anime-list-item-image.lazy(data-src=anime.ImageLink("small"), data-webp="true", data-color=anime.AverageColor(), alt=anime.Title.ByUser(user))

			if len(track.Links) > 0
				.widget.mountable
					h3.widget-title Links
					ul.soundtrack-links
						for _, link := range track.Links
							li
								a.soundtrack-link(href=link.URL, target="_blank")= link.Title

			//- TODO: This is quite ineffective, performance-wise
			if len(track.OsuBeatmaps()) > 0 || len(track.EtternaBeatmaps()) > 0
				.widget.mountable
					h3.widget-title Beatmaps
					ul.beatmaps
						for index, beatmap := range track.OsuBeatmaps()
							li
								a.beatmap(href="https://osu.ppy.sh/s/" + beatmap, target="_blank")= "Osu Beatmap #" + strconv.Itoa(index + 1)
						
						for index, beatmap := range track.EtternaBeatmaps()
							li
								a.beatmap(href="https://etternaonline.com/song/view/" + beatmap, target="_blank")= "Etterna Beatmap #" + strconv.Itoa(index + 1)
			
			.widget.mountable
				h3.widget-title Tags

				.tags
					each tag in track.Tags
						a.tag(href="/soundtracks/tag/" + tag)= tag

		.footer.mountable
			if track.EditedBy != ""
				span Edited 
				span.utc-date(data-date=track.Edited)
				span  by 
				span= track.EditedByUser().Nick
			else
				span Posted 
				span.utc-date(data-date=track.Created)
				span  by 
				span= track.Creator().Nick

			span .

component SoundTrackTabs(track *arn.SoundTrack, user *arn.User)
	.tabs
		TabLike(strconv.Itoa(len(track.Likes)), "heart", "track", track, user)
		Tab("Soundtrack", "music", track.Link())
		if user != nil
			Tab("Edit", "pencil", track.Link() + "/edit")
		Tab("History", "history", track.Link() + "/history")