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,
};
}