import { clsx, type ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } // eslint-disable-next-line @typescript-eslint/no-explicit-any export type WithoutChild = T extends { child?: any } ? Omit : T; // eslint-disable-next-line @typescript-eslint/no-explicit-any export type WithoutChildren = T extends { children?: any } ? Omit : T; export type WithoutChildrenOrChild = WithoutChildren>; export type WithElementRef = T & { ref?: U | null }; /** * Focus the first editable input field in a dialog. * Call this after a dialog opens to provide better keyboard UX. */ export function focusFirstInput() { setTimeout(() => { const input = document.querySelector( '[data-slot="dialog-content"] input:not([disabled]):not([type="hidden"]), ' + '[data-slot="dialog-content"] textarea:not([disabled])' ); input?.focus(); }, 50); }