type ClassValue = string | false | null | undefined;export function cx(...classes: ClassValue[]): string { return classes.filter(Boolean).join(" ");}/** * The one form-label style. Sentence case at body size, no uppercase and no * letter-spacing: ChatGPT labels its fields the way it writes everything else, * and micro-caps read as chrome shouting at the value underneath. * * Every label-bearing control (FormField, Input, Select, ColorField) must use * this — divergent label styling is what made the same form look like three * different apps. */export const FIELD_LABEL_CLASS = "mb-1.5 block text-[length:var(--fs-base)] font-medium text-(--ui-fg)" as const;
type ClassValue = string | false | null | undefined;
export function cx(...classes: ClassValue[]): string {
return classes.filter(Boolean).join(" ");
}
/**
* The one form-label style. Sentence case at body size, no uppercase and no
* letter-spacing: ChatGPT labels its fields the way it writes everything else,
* and micro-caps read as chrome shouting at the value underneath.
*
* Every label-bearing control (FormField, Input, Select, ColorField) must use
* this — divergent label styling is what made the same form look like three
* different apps.
*/
export const FIELD_LABEL_CLASS =
"mb-1.5 block text-[length:var(--fs-base)] font-medium text-(--ui-fg)" as const;