Skip to main content

Mess Function for HTML Elements

The Mess function enables seamless styling for standard HTML elements by combining:

  • Object-based styles
  • Theme strings from a configuration file
  • Utility classes

This makes it easy to apply dynamic and responsive styles to HTML elements while leveraging the full power of the mess package.

Props Overview

1. styles

You can define styles using objects, theme strings, or a combination of both. The Mess function dynamically converts these styles into appropriate class names.

a. Object-Based Styles

Pass styles as an object with responsive breakpoints like lg, md, sm:

<button
className={Mess({
styles: {
base: {
padding: "8px 10px",
background: "#27A5C9",
color: "white",
borderRadius: "8px",
border: "none",
},
lg: {
padding: "10px 20px",
},
},
})}
>
button
</button>

b. Theme String-Based Styles

Reference styles directly from your configuration file:

<button className={Mess({ styles: "$buttonStyles" })}>button</button>

c. Combined Styles with Clx

Combine multiple style objects, theme strings, and utility classes using the Clx function:

<button
className={Mess({
styles: Clx(
{
base: {
padding: "8px 10px",
background: "#27A5C9",
color: "white",
borderRadius: "8px",
border: "none",
},
lg: {
padding: "10px 20px",
color: "gray",
},
},
{
lg: {
color: "yellow",
},
},
{
lg: {
color: "orange",
},
},
"$testconfig555",
"$testconfig55",
"lg:color-[black]",
"lg:color-[gray]"
),
})}
>
Button
</button>

2. customClasses

Pass custom utility classes directly through the customeclasses prop. This provides fine-grained control over the appearance:

<button
className={Mess({
customeclasses: "lg:color-[gray] bg-[red]",
})}
>
button
</button>

Example Scenarios

Using Only Object-Based Styles

<button
className={Mess({
styles: {
base: {
padding: "8px 10px",
background: "#FF5733",
color: "white",
borderRadius: "4px",
},
lg: {
padding: "12px 16px",
},
},
})}
>
button
</button>

Using Theme Strings

<button className={Mess({ styles: "$buttonPrimary" })}>button</button>

Combining Styles with Clx

<button
className={Mess({
styles: Clx(
{ base: { padding: "10px", background: "#333", color: "white" } },
"$themeStyle",
"lg:bg-[blue]"
),
})}
>
button
</button>

Using Custom Utility Classes

<button
className={Mess({
customeclasses: "px-[12px] py-[6px] bg-[green] text-[white]",
})}
>
button
</button>

Notes

  • Responsive Breakpoints: Target specific breakpoints (e.g., lg, md, sm) for responsive styling.
  • Theme Configurations: Ensure theme strings used in styles or Clx are defined in your configuration file.
  • Utility Classes: Tailwind-like utility classes can be passed through customeclasses or directly in Clx.

Conclusion

The Mess function allows you to style HTML elements dynamically with minimal effort. By combining object-based styles, theme strings, and utility classes, you can create highly customizable and responsive components.