// localStorage wrapper with type-safe getters/setters /** * Get item from localStorage with JSON parsing * @param key Storage key * @returns Parsed value or null if not found */ export function getItem(key: string): T | null { try { const item = localStorage.getItem(key); if (item === null) { return null; } return JSON.parse(item) as T; } catch (error) { console.error(`Error reading from localStorage (${key}):`, error); return null; } } /** * Set item in localStorage with JSON stringification * @param key Storage key * @param value Value to store */ export function setItem(key: string, value: T): void { try { localStorage.setItem(key, JSON.stringify(value)); } catch (error) { console.error(`Error writing to localStorage (${key}):`, error); } } /** * Remove item from localStorage * @param key Storage key */ export function removeItem(key: string): void { try { localStorage.removeItem(key); } catch (error) { console.error(`Error removing from localStorage (${key}):`, error); } } /** * Clear all items from localStorage */ export function clear(): void { try { localStorage.clear(); } catch (error) { console.error('Error clearing localStorage:', error); } } /** * Check if localStorage is available * @returns True if localStorage is available, false otherwise */ export function isAvailable(): boolean { try { const test = '__storage_test__'; localStorage.setItem(test, test); localStorage.removeItem(test); return true; } catch { return false; } }