31 lines
1015 B
TypeScript
31 lines
1015 B
TypeScript
import { clsx, type ClassValue } from "clsx"
|
|
import { twMerge } from "tailwind-merge"
|
|
|
|
export type RelationFieldValue = { value: string; label: string } | null
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs))
|
|
}
|
|
|
|
/**
|
|
* Build a `{ value, label }` relation object from an API id + name pair.
|
|
* Returns `null` when `id` is absent so the field stays clearable.
|
|
*/
|
|
export function toRelation(id: unknown, name?: string): RelationFieldValue {
|
|
if (id == null) return null
|
|
if (typeof id === "object" && id !== null && "value" in id && "label" in id) {
|
|
return id as { value: string; label: string }
|
|
}
|
|
return { value: String(id), label: name ?? String(id) }
|
|
}
|
|
|
|
/** Extract a numeric ID from a relation object for API payloads. */
|
|
export function toId(relation: RelationFieldValue | undefined): number | undefined {
|
|
return relation ? Number(relation.value) : undefined
|
|
}
|
|
|
|
|
|
export function getTodayDate() {
|
|
const today = new Date().toISOString().split("T")[0]
|
|
return today
|
|
} |