fix: Actualizar diseño del Hub

This commit is contained in:
2026-07-29 19:01:13 -04:00
parent 580fb5bc6c
commit 96e831ea01
7 changed files with 298 additions and 186 deletions
+47 -2
View File
@@ -876,11 +876,22 @@ interface HubViewProps {
}
function HubView({ user, data, storageWarning, onActivate, onFavorite, onAdmin, onRequestAccess }: HubViewProps) {
const [search, setSearch] = useState("");
const [categorySearches, setCategorySearches] = useState<Record<string, string>>({
Todas: "",
Administración: "",
"Recursos Humanos": "",
CDC: "",
});
const [category, setCategory] = useState<"Todas" | AppCategory>("Todas");
const [favoritesOnly, setFavoritesOnly] = useState(false);
const [currentPage, setCurrentPage] = useState(1);
const [quickPage, setQuickPage] = useState(1);
const search = categorySearches[category] ?? "";
const setSearch = (value: string) => {
setCategorySearches((prev) => ({ ...prev, [category]: value }));
};
const deferredSearch = useDeferredValue(search);
const dateLabel = useCurrentDateLabel();
const canManageCatalog = user.role === "admin";
@@ -980,7 +991,12 @@ function HubView({ user, data, storageWarning, onActivate, onFavorite, onAdmin,
};
const clearFilters = () => {
setSearch("");
setCategorySearches({
Todas: "",
Administración: "",
"Recursos Humanos": "",
CDC: "",
});
setCategory("Todas");
setFavoritesOnly(false);
};
@@ -1075,6 +1091,30 @@ function HubView({ user, data, storageWarning, onActivate, onFavorite, onAdmin,
</button>
))}
</div>
<div className="filter-bar__search">
<Search size={16} aria-hidden="true" />
<label className="sr-only" htmlFor="directory-search-input">
{`Buscar por nombre de proyecto en ${category}`}
</label>
<input
id="directory-search-input"
type="search"
value={search}
onChange={(event) => setSearch(event.target.value)}
placeholder={
category === "Todas"
? "Buscar por nombre de proyecto…"
: `Buscar en ${category}`
}
/>
{search ? (
<button type="button" onClick={() => setSearch("")} aria-label="Limpiar búsqueda">
<X size={15} aria-hidden="true" />
</button>
) : null}
</div>
<button
type="button"
className={`favorites-filter ${favoritesOnly ? "is-active" : ""}`}
@@ -1199,6 +1239,11 @@ function AdminAppList({ apps, selectedId, onSelect, onDelete }: AdminAppListProp
<Search size={17} aria-hidden="true" />
<label htmlFor="admin-search" className="sr-only">Buscar en el catálogo</label>
<input id="admin-search" type="search" value={query} onChange={(event) => setQuery(event.target.value)} placeholder="Buscar…" />
{query ? (
<button type="button" onClick={() => setQuery("")} aria-label="Limpiar búsqueda">
<X size={15} aria-hidden="true" />
</button>
) : null}
</div>
<div className="admin-list__items">
{currentPage === 1 ? (