All files / src/stores partnerDetailStore.ts

100% Statements 11/11
100% Branches 0/0
100% Functions 9/9
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61                                                          4x                                       4x     5x   4x   4x   13x    
/**
 * Partner Detail Store
 * Story 2.8.2: Partner Detail View - Task 3b
 *
 * Manages Partner Detail screen UI state including:
 * - Active tab index (0=Overview, 1=Contacts, 2=Meetings, 3=Activity, 4=Notes, 5=Settings)
 * - Edit modal visibility
 * - Note modal visibility
 *
 * AC3: Tab Navigation state management
 */
 
import { create } from 'zustand';
 
interface PartnerDetailState {
  activeTab: number;
  showEditModal: boolean;
  showNoteModal: boolean;
}
 
interface PartnerDetailActions {
  setActiveTab: (tab: number) => void;
  setShowEditModal: (show: boolean) => void;
  setShowNoteModal: (show: boolean) => void;
  reset: () => void;
}
 
type PartnerDetailStore = PartnerDetailState & PartnerDetailActions;
 
const initialState: PartnerDetailState = {
  activeTab: 0, // Default to Overview tab
  showEditModal: false,
  showNoteModal: false,
};
 
/**
 * usePartnerDetailStore - Zustand store for Partner Detail screen UI state
 *
 * State:
 * - activeTab: Current active tab index (0-5)
 * - showEditModal: Edit partner modal visibility
 * - showNoteModal: Add/edit note modal visibility
 *
 * Actions:
 * - setActiveTab: Update active tab index
 * - setShowEditModal: Toggle edit modal
 * - setShowNoteModal: Toggle note modal
 * - reset: Reset to initial state
 */
export const usePartnerDetailStore = create<PartnerDetailStore>()((set) => ({
  ...initialState,
 
  setActiveTab: (activeTab) => set(() => ({ activeTab })),
 
  setShowEditModal: (showEditModal) => set(() => ({ showEditModal })),
 
  setShowNoteModal: (showNoteModal) => set(() => ({ showNoteModal })),
 
  reset: () => set(() => ({ ...initialState })),
}));