import { ref } from 'vue' export function useColumnPreferences(storageKey) { const hidden = ref([]) const load = () => { try { const raw = localStorage.getItem(storageKey) if (!raw) return const parsed = JSON.parse(raw) if (Array.isArray(parsed)) { hidden.value = parsed.filter((x) => typeof x === 'string') } } catch { hidden.value = [] } } const save = () => { try { localStorage.setItem(storageKey, JSON.stringify(hidden.value)) } catch { /* quota / private mode — ignore */ } } const isVisible = (key) => !hidden.value.includes(key) const toggle = (key) => { const i = hidden.value.indexOf(key) if (i >= 0) hidden.value.splice(i, 1) else hidden.value.push(key) save() } const setGroupVisible = (groupKeys, visible) => { if (visible) { hidden.value = hidden.value.filter((k) => !groupKeys.includes(k)) } else { const set = new Set(hidden.value) groupKeys.forEach((k) => set.add(k)) hidden.value = [...set] } save() } const reset = () => { hidden.value = [] save() } load() return { hidden, isVisible, toggle, setGroupVisible, reset } }