mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-06-30 09:01:14 +03:00
38 lines
828 B
TypeScript
38 lines
828 B
TypeScript
|
|
import { cn } from "@/lib/utils";
|
||
|
|
|
||
|
|
const FIELD_SIZE_CLASS_MAP = {
|
||
|
|
xs: "max-w-xs",
|
||
|
|
sm: "max-w-sm",
|
||
|
|
md: "max-w-md",
|
||
|
|
lg: "max-w-2xl",
|
||
|
|
full: "max-w-full",
|
||
|
|
} as const;
|
||
|
|
|
||
|
|
export type FieldSizeOption = keyof typeof FIELD_SIZE_CLASS_MAP;
|
||
|
|
|
||
|
|
type FieldSizingOptions = {
|
||
|
|
size?: FieldSizeOption;
|
||
|
|
maxWidthClassName?: string;
|
||
|
|
className?: string;
|
||
|
|
};
|
||
|
|
|
||
|
|
export function getSizedFieldClassName(
|
||
|
|
options: unknown,
|
||
|
|
defaultSize: FieldSizeOption = "lg",
|
||
|
|
) {
|
||
|
|
const sizingOptions =
|
||
|
|
typeof options === "object" && options !== null
|
||
|
|
? (options as FieldSizingOptions)
|
||
|
|
: undefined;
|
||
|
|
|
||
|
|
const sizeClass =
|
||
|
|
FIELD_SIZE_CLASS_MAP[sizingOptions?.size ?? defaultSize] ??
|
||
|
|
FIELD_SIZE_CLASS_MAP[defaultSize];
|
||
|
|
|
||
|
|
return cn(
|
||
|
|
"w-full",
|
||
|
|
sizingOptions?.maxWidthClassName ?? sizeClass,
|
||
|
|
sizingOptions?.className,
|
||
|
|
);
|
||
|
|
}
|