import { clsx, type ClassValue } from 'clsx';
import { twMerge } from 'tailwind-merge';
import type { Updater } from '@tanstack/vue-table';
import { Ref, h } from 'vue';
import { Check, X } from 'lucide-vue-next'

export function cn(...inputs: ClassValue[]) {
    return twMerge(clsx(inputs));
}

export function valueUpdater<T extends Updater<any>>(updaterOrValue: T, ref: Ref) {
  ref.value = typeof updaterOrValue === 'function'
    ? updaterOrValue(ref.value)
    : updaterOrValue
}

export const booleanFormatter = (value: boolean) =>
  value
    ? h(Check, { class: 'w-4 h-4 text-green-600' })
    : h(X, { class: 'w-4 h-4 text-red-600' })
