//! Realm avatars list page component.
use leptos::prelude::*;
use leptos_router::hooks::use_params_map;
use crate::components::{Card, EmptyState, PageHeader};
use crate::hooks::use_fetch_if;
use crate::models::RealmAvatarSummary;
use crate::utils::get_api_base;
/// View mode for avatars listing.
#[derive(Clone, Copy, PartialEq, Eq)]
pub enum ViewMode {
Table,
Grid,
}
/// Realm avatars page component with table and grid views.
#[component]
pub fn RealmAvatarsPage() -> impl IntoView {
let params = use_params_map();
let slug = move || params.get().get("slug").unwrap_or_default();
let initial_slug = params.get_untracked().get("slug").unwrap_or_default();
let (view_mode, set_view_mode) = signal(ViewMode::Table);
let avatars = use_fetch_if::
| "Thumbnail" | "Name" | "Slug" | "Public" | "Active" | "Created" |
|---|---|---|---|---|---|
|
{thumbnail_url.map(|url| view! {
|
{avatar.name} | {avatar.slug} |
{if avatar.is_public { view! { "Public" }.into_any() } else { view! { "Private" }.into_any() }} | {if avatar.is_active { view! { "Active" }.into_any() } else { view! { "Inactive" }.into_any() }} | {avatar.created_at} |