63 releases (12 breaking)

0.13.0 Sep 30, 2022
0.12.4 Mar 9, 2022
0.11.9 Mar 4, 2022

#454 in Web programming

Download history 28/week @ 2022-10-15 23/week @ 2022-10-22 62/week @ 2022-10-29 33/week @ 2022-11-05 24/week @ 2022-11-12 97/week @ 2022-11-19 14/week @ 2022-11-26 22/week @ 2022-12-03 94/week @ 2022-12-10 27/week @ 2022-12-17 21/week @ 2022-12-24 4/week @ 2022-12-31 14/week @ 2023-01-07 12/week @ 2023-01-14 35/week @ 2023-01-21 25/week @ 2023-01-28

86 downloads per month
Used in 3 crates

MPL-2.0 license

475KB
12K SLoC

Rust 10K SLoC // 0.0% comments Objective-C 2K SLoC

Tailwind CSS

Tailwind style tracer, JIT + AOT Interpreter!

use tailwind_css::TailwindBuilder;

fn build() {
    let mut tailwind = TailwindBuilder::default();
    // The compiler will expand directly into the final css property
    // Inline style will not be tracked
    let inline = tailwind.inline("py-2 px-4 bg-green-500");
    // The compiler will expand into a `class`, and record the style class used
    tailwind.trace("py-2 px-4 bg-green-500", false);
    // Compile all traced classes into bundle
    let bundle = tailwind.bundle();
}

Notice

Tailwind++ Grammar

This library is not strictly implemented according to the original version.

Especially when some writing methods can be simplified or generalized.

For example arbitrary values of z-index needs brackets, but rs version does not.

  • js: z-[100]
  • rs: z-100

Bundle or Inline?

For example, there are style overrides in p-auto px-px pt-2 pb-2.

In inline mode, the latter will overwrite the former, and finally get padding:.5rem 1px

In Bundle mode, the final result depends on the browser.

Implement Progress

tailwind-rs needs your help!

A lot of documentation and test cases are missing, you are welcome to pr!

See the tests folder for details.

Dependencies

~2.3–3MB
~57K SLoC