+ <.async_result :let={artist_info} assign={@artist_info}>
+ <:loading>
+
+ {gettext("Loading biography")}
+
+
+ <:failed :let={_failure}>
+
+ <.icon
+ name="hero-exclamation-triangle"
+ class="-mt-1 mr-1 h-5 w-5"
+ aria-hidden="true"
+ data-slot="icon"
+ />
+ {gettext("Error loading biography")}
+
+
+
- {artist.name}
-
-
-
+
{gettext("Biography")}
+ {render_bio(@artist_info.result.summary)}
+
+
+
+ <.async_result :let={similar_artists} assign={@similar_artists}>
+ <:loading>
+
+ {gettext("Loading similar artists")}
+
+
+ <:failed :let={_failure}>
+
+ <.icon
+ name="hero-exclamation-triangle"
+ class="-mt-1 mr-1 h-5 w-5"
+ aria-hidden="true"
+ data-slot="icon"
+ />
+ {gettext("Error loading similar artists")}
+
+
+
+ {gettext("Similar artists")}
+
+ -
+ <.link
+ class="text-zinc-700 hover:text-zinc-500 dark:text-zinc-400 dark:hover:text-zinc-300"
+ patch={~p"/artists/#{artist.musicbrainz_id}"}
+ >
+ {artist.name}
+
+
+
+
+
+
+ <.record_grid
+ :if={@collection_records_count > 0}
+ title={gettext("Collection")}
+ id="collection"
+ records={@streams.collection_records}
+ records_count={@collection_records_count}
+ record_path={fn record -> ~p"/collection/#{record}" end}
+ />
+
+ <.record_grid
+ :if={@wishlist_records_count > 0}
+ title={gettext("Wishlist")}
+ id="wishlist"
+ records={@streams.wishlist_records}
+ records_count={@wishlist_records_count}
+ record_path={fn record -> ~p"/wishlist/#{record}" end}
+ />
+