-
Notifications
You must be signed in to change notification settings - Fork 0
/
cn.ts
28 lines (27 loc) · 974 Bytes
/
cn.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { clsx } from "clsx";
import { twMerge } from "tailwind-merge";
/**
* クラス名を結合
* * 重複するクラス名のマージ
* * 同タイプのTailwind CSSをマージ (上書き/右辺優先)
* @param classNames - 結合するクラス名
* @returns 結合されたクラス名
* @example
* ```tsx
* <div className={cn("foo", "bar")}>Hello, world!</div>
* // => <div class="foo bar">Hello, world!</div>
*
* <div className={cn("text-red-500 text-blue-500")}>Hello, world!</div>
* // => <div class="text-blue-500">Hello, world!</div>
*
* const [isLoading, setIsLoading] = useState(false);
* <div className={cn("foo", isLoading ? "bar", "")}>Hello, world!</div>
* // isLoading=`true` => <div class="foo bar">Hello, world!</div>
* // isLoading=`false` => <div class="foo">Hello, world!</div>
* ```
*/
export function cn(
...classNames: Parameters<typeof clsx> & Parameters<typeof twMerge>
): string {
return twMerge(clsx(classNames));
}