clsx-r

Crates.ioclsx-r
lib.rsclsx-r
version0.1.0
created_at2024-12-27 15:29:56.227524+00
updated_at2024-12-27 15:29:56.227524+00
descriptionA Rust macro utility for conditionally constructing CSS class names. Inspired by JavaScript's clsx.
homepage
repositoryhttps://github.com/chibuzoro/clsx-r
max_upload_size
id1496463
size7,790
Chibuzor Ogbu (chibuzoro)

documentation

https://docs.rs/clsx-r

README

clsx-r

A Rust macro utility for conditionally constructing strings, primarily used for CSS class names. Inspired by the JavaScript clsx package.

Installation

Add this to your Cargo.toml:

[dependencies]
clsx-r = "0.1.0"

Usage

use clsx_r::clsx;

fn main() {
    // Basic usage
    let classes = clsx!("foo", "bar");  // => "foo bar"

    // With conditions
    let is_active = true;
    let is_disabled = false;
    let classes = clsx!(
        "btn",
        "primary",
        "active" => is_active,
        "disabled" => is_disabled
    );  // => "btn primary active"

    // With dynamic values
    let dynamic_class = "special";
    let classes = clsx!(
        "base",
        dynamic_class,
        "highlighted" => true
    );  // => "base special highlighted"
}

Features

  • Simple string concatenation
  • Conditional class names
  • Supports static and dynamic strings
  • Filters out empty strings automatically
  • Zero dependencies

API

The clsx! macro accepts:

  1. Simple string literals or expressions:

    clsx!("class1", "class2")
    
  2. Conditional classes using the => syntax:

    clsx!("class1" => condition, "class2" => other_condition)
    
  3. Mixed usage:

    clsx!("static", dynamic_var, "conditional" => condition)
    

License

MIT License

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Commit count: 2

cargo fmt