/** * UI Stores * * Re-exports toasts from the main toast store for backward compatibility * with Matrix components, plus Matrix-specific UI state. */ import { writable } from 'svelte/store'; // Re-export toasts so Matrix components can import from '$lib/stores/ui' export { toasts } from '$lib/stores/toast.svelte'; // ============================================================================ // Chat Layout State // ============================================================================ export const sidebarOpen = writable(true); export const membersPanelOpen = writable(false); // ============================================================================ // Chat Modals // ============================================================================ export type ModalType = | 'none' | 'createRoom' | 'roomSettings' | 'roomMembers' | 'userProfile' | 'settings'; export const activeModal = writable('none'); export const modalData = writable(null); export function openModal(type: ModalType, data?: any): void { activeModal.set(type); modalData.set(data ?? null); } export function closeModal(): void { activeModal.set('none'); modalData.set(null); } // ============================================================================ // Loading States // ============================================================================ export const isLoading = writable(false); export const loadingMessage = writable(null); export function setLoading(loading: boolean, message?: string): void { isLoading.set(loading); loadingMessage.set(message ?? null); }