import type { ClassValue } from "clsx"; import { clsx } from "clsx"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } /** * Merge props conditionally. * * @example * ``` * * ``` * results in: * ``` * * ``` * @example * ``` * * ``` * results in: * ``` * * ``` */ export function condProps( ...condProps: { condition: boolean; props: Record; }[] ): Record { return condProps.reduce((acc, { condition, props }) => { return condition ? { ...acc, ...props } : acc; }, {}); } /** * Build HTTP headers for API requests, merging Authorization and custom headers. * This ensures all direct HTTP calls (uploads, downloads, health checks) respect * the user's custom header configuration. */ export function buildApiHeaders( apiKey: string | undefined, customHeaders: Record = {}, ): Record { return { ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}), ...customHeaders, }; }