- {[
- { label: "Thinking", state: "thinking" as const },
- { label: "Happy", state: "happy" as const },
- { label: "Wave", state: "wave" as const }
- ].map((preview) => (
-
-
- {preview.label}
-
- ))}
-
- >
- )}
-
-
- {/* Main Action (Install, Import, Set Default) */}
- {!selected.installed && selected.sourceKind === "catalog" && (
-
}
- disabled={!!busy}
- onClick={() => act("Installing", () => api.installPet(selected.id))}
- >
- {busy || "Install Pet"}
-
- )}
- {!selected.installed && selected.sourceKind === "codex" && (
-
}
- disabled={!!busy}
- onClick={() => act("Importing", () => api.importCodexPet(selected.id))}
- >
- {busy || "Import Codex Pet"}
-
- )}
- {selected.installed && selected.id !== defaultId && !selected.broken && (
-
}
- disabled={!!busy}
- onClick={() => act("Setting default", () => api.setDefaultPet(selected.id))}
- >
- {busy || "Set Default Pet"}
-
- )}
-
- {/* Secondary Actions (Remove, Refresh) */}
-
- {selected.installed && !selected.builtIn && !selected.protected && (
-
}
- disabled={!!busy}
- onClick={() => act("Removing", () => api.removePet(selected.id))}
- >
- Remove
-
- )}
+
+
+ {pet.displayName}
+
+
{pet.description || pet.id}
+
{pet.id === defaultId && Default}{pet.original || pet.builtIn ? Original : pet.featured ? Featured : null}{pet.category === "western" && !pet.original && !pet.featured && Western}{pet.category === "asian" && !pet.original && !pet.featured && Asian}{pet.installed && Installed}{pet.sourceKind === "codex" && Codex}
+
+
+ );
+ })}
+
+ {!!catalog?.pageCount && catalog.pageCount > 1 ? (
}
- disabled={!!busy}
- onClick={() => void load()}
+ size="compact"
+ icon={
}
+ disabled={!!busy || catalogPage <= 0}
+ onClick={() => void loadCatalogPage(catalogPage - 1)}
>
- Refresh
+ Prev
+ ) :
}
+
{pets.length} pets{!!catalog?.pageCount && catalog.pageCount > 1 ? ` · Page ${catalogPage + 1} of ${catalog.pageCount}` : ""}
+ {!!catalog?.pageCount && catalog.pageCount > 1 ? (
+
}
+ iconPosition="right"
+ disabled={!!busy || catalogPage >= catalog.pageCount - 1}
+ onClick={() => void loadCatalogPage(catalogPage + 1)}
+ >
+ Next
+
+ ) :
}
+
+
+
+ {selected ? <>Pet detail
{selected.displayName}
{selected.description || selected.id}
+
+ {safePetImage(selected.spritesheet) ? (
+
+ ) : (
+
+ )}
- > : No pets available.
}
-