css_mod

Crates.iocss_mod
lib.rscss_mod
version0.1.5
sourcesrc
created_at2022-03-31 08:48:20.943481
updated_at2022-05-18 09:19:23.975038
descriptionCSS Modules implementation for Rust web applications
homepagehttps://github.com/art-in/css_mod
repositoryhttps://github.com/art-in/css_mod
max_upload_size
id559538
size35,206
Sergey Gavrilov (art-in)

documentation

README

css_mod

ci crate rustc version

CSS Modules implementation for Rust web applications

A CSS Module is a CSS file in which all class names and animation names are scoped locally by default.

Features

This is currently incomplete implementation of CSS Modules spec, as it only supports the vital features.

  • Local scoping for names
    • Classes
    • Animations
    • Grid lines/areas
    • @counter-style
  • :local() / :global()
  • composes
  • url() / @import

Usage

  1. Add this crate as a regular and build dependency:

    # Cargo.toml
    
    [dependencies]
    css_mod = "0.1.0"
    
    [build-dependencies]
    css_mod = "0.1.0"
    
  2. Create build script and call compiler:

    // build.rs
    
    fn main() {
        css_mod::Compiler::new()
            .add_modules("src/**/*.css").unwrap()
            .compile("assets/app.css").unwrap();
    }
    
  3. Call init somewhere early in program execution:

    // src/main.rs
    
    fn main() {
        css_mod::init!();
    }
    
  4. Finally get name mapping for CSS module:

    // src/my-component.rs
    
    let css = css_mod::get!("my-component.css");
    let global_class_name = css["local-class-name"]; // my-component__local-class-name__0
    

Examples

Look in the examples directory.

Commit count: 32

cargo fmt