tailwind_rs_core/classes/
utilities.rs

1//! Utility functions for class management
2//!
3//! This module contains utility functions for working with class sets.
4
5use super::ClassSet;
6use crate::responsive::Breakpoint;
7
8/// Create a new class set with base classes
9pub fn new(classes: impl IntoIterator<Item = String>) -> ClassSet {
10    let mut class_set = ClassSet::new();
11    class_set.add_classes(classes);
12    class_set
13}
14
15/// Create a responsive class set
16pub fn responsive(
17    base: impl IntoIterator<Item = String>,
18    responsive: impl IntoIterator<Item = (Breakpoint, String)>,
19) -> ClassSet {
20    let mut class_set = ClassSet::new();
21    class_set.add_classes(base);
22
23    for (breakpoint, class) in responsive {
24        class_set.add_responsive_class(breakpoint, class);
25    }
26
27    class_set
28}
29
30/// Create a conditional class set
31pub fn conditional(
32    base: impl IntoIterator<Item = String>,
33    conditional: impl IntoIterator<Item = (String, String)>,
34) -> ClassSet {
35    let mut class_set = ClassSet::new();
36    class_set.add_classes(base);
37
38    for (condition, class) in conditional {
39        class_set.add_conditional_class(condition, class);
40    }
41
42    class_set
43}
44
45/// Merge multiple class sets
46pub fn merge(class_sets: impl IntoIterator<Item = ClassSet>) -> ClassSet {
47    let mut result = ClassSet::new();
48
49    for class_set in class_sets {
50        result.merge(class_set);
51    }
52
53    result
54}