Files
ncd-fe/packages/pl-fe/src/stores/status-hover-card.ts
nicole mikołajczyk ea86246647 pl-fe: use more specific zustand selectors
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2025-10-22 21:42:11 +02:00

38 lines
964 B
TypeScript

import { create } from 'zustand';
type State = {
ref: React.MutableRefObject<HTMLDivElement> | null;
statusId: string | null;
hovered: boolean;
actions: {
openStatusHoverCard: (ref: React.MutableRefObject<HTMLDivElement>, statusId: string) => void;
updateStatusHoverCard: () => void;
closeStatusHoverCard: (force?: boolean) => void;
};
}
const useStatusHoverCardStore = create<State>((set) => ({
ref: null,
statusId: null,
hovered: false,
actions: {
openStatusHoverCard: (ref, statusId) => set({
ref,
statusId,
}),
updateStatusHoverCard: () => set({
hovered: true,
}),
closeStatusHoverCard: (force = false) => set((state) => state.hovered && !force ? {} : {
ref: null,
statusId: null,
hovered: false,
}),
},
}));
const useStatusHoverCardActions = () => useStatusHoverCardStore((state) => state.actions);
export { useStatusHoverCardStore, useStatusHoverCardActions };