export interface SectionToggle { [key: string]: boolean; } export type SectionToggleAction = | { type: undefined } | { type: "SECTION_TOGGLE_SET"; id: string; state: boolean; } | { type: "SECTION_TOGGLE_UNSET"; id: string; } | { type: "RESET"; }; export function sectionToggle( state = {} as SectionToggle, action: SectionToggleAction, ): SectionToggle { switch (action.type) { case "SECTION_TOGGLE_SET": { return { ...state, [action.id]: action.state, }; } case "SECTION_TOGGLE_UNSET": { const { [action.id]: _, ...newState } = state; return newState; } case "RESET": return {}; default: return state; } }