www/apps/ui/app/utils/clx/page.mdx
export const metadata = {
title: clx,
}
clx is a utility function that adds class names to your components, with support for conditional classes and merging Tailwind CSS classes.
In this guide, you'll learn how to use the clx utility function.
The clx function is built using clsx and tw-merge. It is intended to be used with Tailwind CSS to efficiently add classes to your components.
clx is useful for:
hidden class if a component's open state variable is false.p-2 class name on your component, and you pass a p-4 class name as a prop, the p-4 class will take precedence.
For example:
import { clx } from "@medusajs/ui"
type BoxProps = {
className?: string
children: React.ReactNode
mt: "sm" | "md" | "lg"
}
const Box = ({ className, children, mt }: BoxProps) => {
return (
<div
className={clx(
"flex items-center justify-center",
{
"mt-4": mt === "sm",
"mt-8": mt === "md",
"mt-12": mt === "lg",
},
className
)}
>
{children}
</div>
)
}
In the above example, you use clx to:
mt prop.clx ensures that Tailwind CSS classes are merged without style conflicts.
clx accepts any number of arguments, each of them can be of the following types:
string: A string of class names to apply.clx("flex items-center justify-between")
Record<string, boolean>: An object whose keys are the class names to apply, and the values are booleans indicating whether to apply the class names.clx({
"flex items-center justify-between": isFlex,
})
Array: An array of strings or objects to apply.clx([
"flex items-center justify-between",
{
"hidden": isHidden,
},
])