Add a Prismana-only filter with a rainbow star icon
All checks were successful
Deploy Sokko G / deploy (push) Successful in 17s

This commit is contained in:
Shinuwa 2026-09-24 08:38:31 +02:00
parent 14f1b79cbc
commit 2255de94a7
9 changed files with 69 additions and 1 deletions

View file

@ -31,6 +31,11 @@ export function AniimoFilters({ filters, onChange, options, t, content }) {
<span>{content.name}</span>
<input className="nds-input" data-size="sm" type="search" placeholder={content.searchPlaceholder} value={filters.name} onChange={(event) => onChange({ ...filters, name: event.target.value })} />
</label>
<label className={`filter-chip nds-chip ${filters.prismanaOnly ? "active" : ""}`} data-size="sm">
<input className="nds-checkbox" data-size="sm" type="checkbox" checked={filters.prismanaOnly} onChange={(event) => onChange({ ...filters, prismanaOnly: event.target.checked })} />
<img src="/static/icons/prismana.svg" alt="" width="16" height="16" />
<span>{content.prismanaOnly}</span>
</label>
<div className="aniimo-filter-sections filter-options legacy-scrollbar" role="region" aria-label={content.filters} tabIndex="0">
{["roles", "elements", "abilities"].map((key) => (
<div key={key} className="aniimo-filter-section-surface">

View file

@ -1,6 +1,6 @@
// Rôle : prépare les variantes Aniimo et applique les critères avant leur regroupement.
export function createAniimoFilters() {
return { name: "", elements: [], roles: [], abilities: {}, elementsLogic: "and", abilitiesLogic: "and", grouped: true };
return { name: "", prismanaOnly: false, elements: [], roles: [], abilities: {}, elementsLogic: "and", abilitiesLogic: "and", grouped: true };
}
export const ANIIMO_STATS = ["hp", "atk", "p_def", "m_def", "break", "regen"];
@ -51,6 +51,7 @@ export function filterAniimoVariants(variants, filters) {
const abilities = Object.entries(filters.abilities);
return variants.filter((variant) => (
(!search || variant.searchNames.some((name) => name.includes(search)))
&& (!filters.prismanaOnly || variant.form === "prismana_form")
&& matchesSelection(filters.elements, filters.elementsLogic, (element) => variant.elements.includes(element))
&& (!filters.roles.length || filters.roles.includes(variant.role))
&& matchesSelection(abilities, filters.abilitiesLogic, ([type, minimum]) => variant.homeland_abilities.some((ability) => ability.type === type && ability.level >= minimum))