config/projectsStore.jsx

/**
 * @module Config
 * @category State
 */
import { create } from "zustand";

/**
 * @config
 * Store de Zustand para gestionar el estado de los proyectos.
 * 
 * @typedef {Object} ProjectsStore
 * @property {boolean} isLoading - Indica si los proyectos están cargando.
 * @property {Array} actualProjects - Lista de proyectos actuales.
 * @property {Array} completedProjects - Lista de proyectos completados.
 * @property {function} setIsLoading - Función para actualizar el estado de carga.
 * @property {function} setActualProjects - Función para actualizar los proyectos actuales.
 * @property {function} setCompletedProjects - Función para actualizar los proyectos completados.
 */

/**
 * Hook personalizado para acceder y modificar el estado de los proyectos.
 * 
 * @type {import('zustand').UseStore<ProjectsStore>}
 */
export const useProjectsStore = create((set) => ({
  isLoading: true,
  actualProjects: [],
  completedProjects: [],
  /**
   * Actualiza el estado de carga de los proyectos.
   * @param {boolean} loading - Nuevo estado de carga.
   */
  setIsLoading: (loading) => set({ isLoading: loading }),
  /**
   * Actualiza la lista de proyectos actuales.
   * @param {Array} projects - Nueva lista de proyectos actuales.
   */
  setActualProjects: (projects) => set({ actualProjects: projects }),
  /**
   * Actualiza la lista de proyectos completados.
   * @param {Array} projects - Nueva lista de proyectos completados.
   */
  setCompletedProjects: (projects) => set({ completedProjects: projects }),
}));