diff options
Diffstat (limited to 'cmd/mirumd/web/lib/utils.ts')
| -rw-r--r-- | cmd/mirumd/web/lib/utils.ts | 24 | +24 −0 |
1 files changed, 24 insertions, 0 deletions
diff --git a/cmd/mirumd/web/lib/utils.ts b/cmd/mirumd/web/lib/utils.ts new file mode 100644 --- /dev/null +++ b/cmd/mirumd/web/lib/utils.ts @@ -0,0 +1,24 @@ +// Copyright (c) 2026 Nikolay Govorov +// SPDX-License-Identifier: AGPL-3.0-or-later + +import { twMerge } from "tailwind-merge" + +export type ClassValue = ClassArray | Record<string, unknown> | string | number | bigint | null | boolean | undefined +export type ClassArray = ClassValue[] + +function classList(value: ClassValue): string { + if (typeof value === "string" || typeof value === "number" || typeof value === "bigint") { + return String(value) + } + if (Array.isArray(value)) { + return value.map(classList).filter(Boolean).join(" ") + } + if (value !== null && typeof value === "object") { + return Object.keys(value).filter((key) => value[key]).join(" ") + } + return "" +} + +export function cn(...inputs: ClassValue[]): string { + return twMerge(classList(inputs)) +} |
