feat(20-01): extend UIStore with FAB/catalog state, add useTags hook, update useGlobalItems

- Add fabMenuOpen, openFabMenu, closeFabMenu to UIStore
- Add catalogSearchOpen, catalogSearchMode, openCatalogSearch, closeCatalogSearch
- openCatalogSearch also closes FAB menu (natural flow)
- Create useTags hook with 5-min staleTime cache
- Add optional tags parameter to useGlobalItems for tag filtering
This commit is contained in:
2026-04-06 07:57:47 +02:00
parent 2ec1276849
commit 67facea338
6 changed files with 64 additions and 20 deletions

View File

@@ -56,6 +56,17 @@ interface UIState {
// Setup impact preview
selectedSetupId: number | null;
setSelectedSetupId: (id: number | null) => void;
// FAB menu
fabMenuOpen: boolean;
openFabMenu: () => void;
closeFabMenu: () => void;
// Catalog search overlay
catalogSearchOpen: boolean;
catalogSearchMode: "collection" | "thread" | null;
openCatalogSearch: (mode: "collection" | "thread") => void;
closeCatalogSearch: () => void;
}
export const useUIStore = create<UIState>((set) => ({
@@ -119,4 +130,21 @@ export const useUIStore = create<UIState>((set) => ({
// Setup impact preview
selectedSetupId: null,
setSelectedSetupId: (id) => set({ selectedSetupId: id }),
// FAB menu
fabMenuOpen: false,
openFabMenu: () => set({ fabMenuOpen: true }),
closeFabMenu: () => set({ fabMenuOpen: false }),
// Catalog search overlay
catalogSearchOpen: false,
catalogSearchMode: null,
openCatalogSearch: (mode) =>
set({
catalogSearchOpen: true,
catalogSearchMode: mode,
fabMenuOpen: false,
}),
closeCatalogSearch: () =>
set({ catalogSearchOpen: false, catalogSearchMode: null }),
}));