1pub mod arbitrary;
42pub mod classes;
43pub mod color;
44pub mod config;
45pub mod custom_variant;
46pub mod dark_mode;
47pub mod error;
48pub mod gradients;
49pub mod performance;
50pub mod responsive;
51pub mod theme;
52pub mod theme_new;
53pub mod utils;
54pub mod utilities;
55pub mod validation;
56
57#[cfg(test)]
58mod property_tests;
59
60#[cfg(test)]
61mod api_stability;
62
63#[cfg(test)]
64mod week18_documentation_tests;
65
66#[cfg(test)]
67mod week19_testing_qa_tests;
68
69#[cfg(test)]
70mod week20_release_prep_tests;
71
72pub use arbitrary::{ArbitraryValue, ArbitraryValueError, ArbitraryValueUtilities};
74pub use classes::{ClassBuilder, ClassSet};
75pub use color::Color;
76pub use config::{BuildConfig, TailwindConfig};
77pub use custom_variant::{CustomVariant, CustomVariantManager, CustomVariantType};
78pub use dark_mode::{DarkModeVariant, DarkModeVariantError, DarkModeVariantUtilities};
79pub use error::{Result, TailwindError};
80pub use gradients::{Gradient, GradientDirection, GradientError, GradientStop, GradientUtilities};
81pub use performance::{CacheStats, ClassCache, OptimizationLevel, PerformanceOptimizer};
82pub use responsive::{
83 AlignItems, Breakpoint, FlexDirection, FlexWrap, JustifyContent, Responsive, ResponsiveBuilder,
84 ResponsiveFlex, ResponsiveGrid, ResponsiveValue, State,
85};
86pub use theme::{BorderRadius, BoxShadow, Spacing, Theme, ThemeValue};
87pub use theme_new::{
88 AnimationScale, BorderScale, FontFamily, FontSizeScale, FontWeightScale, LetterSpacingScale,
89 LineHeightScale, ShadowScale, SpacingScale, SpacingSize, Theme as NewTheme, ThemePreset,
90 ThemeVariant, ThemedComponent, TypographyScale,
91};
92pub use utilities::*;
93pub use validation::{ClassValidator, ErrorReporter, ValidationError, ValidationRules};
94
95#[cfg(test)]
96mod tests {
97 mod sync_api_tests;
98 mod tailwind_v4_1_missing_features_tests;
99
100 use super::*;
101
102 #[test]
103 fn test_version_constant() {
104 assert!(!VERSION.is_empty());
105 assert!(VERSION.chars().any(|c| c.is_ascii_digit()));
106 }
107
108 #[test]
109 fn test_defaults() {
110 assert_eq!(defaults::DEFAULT_THEME, "default");
111 assert_eq!(defaults::DEFAULT_BREAKPOINT, Breakpoint::Base);
112 assert_eq!(defaults::default_color(), Color::Blue);
113 }
114}
115
116pub struct TailwindBuilder;
118pub struct CssOptimizer;
119
120impl Default for TailwindBuilder {
121 fn default() -> Self {
122 Self::new()
123 }
124}
125
126impl TailwindBuilder {
127 pub fn new() -> Self {
128 Self
129 }
130
131 pub fn scan_source(self, _path: &std::path::Path) -> Self {
132 self
133 }
134
135 pub fn output_css(self, _path: &std::path::Path) -> Self {
136 self
137 }
138
139 pub fn config_file(self, _path: &std::path::Path) -> Self {
140 self
141 }
142
143 pub fn enable_tree_shaking(self) -> Self {
144 self
145 }
146
147 pub fn enable_minification(self) -> Self {
148 self
149 }
150
151 pub fn enable_source_maps(self) -> Self {
152 self
153 }
154
155 pub fn build(self) -> Result<()> {
156 Ok(())
157 }
158}
159
160impl Default for CssOptimizer {
161 fn default() -> Self {
162 Self::new()
163 }
164}
165
166impl CssOptimizer {
167 pub fn new() -> Self {
168 Self
169 }
170
171 pub fn input_file(self, _path: &std::path::Path) -> Self {
172 self
173 }
174
175 pub fn output_file(self, _path: &std::path::Path) -> Self {
176 self
177 }
178
179 pub fn optimization_level(self, _level: u8) -> Self {
180 self
181 }
182
183 pub fn remove_unused_classes(self) -> Self {
184 self
185 }
186
187 pub fn minify(self) -> Self {
188 self
189 }
190
191 pub fn generate_source_maps(self) -> Self {
192 self
193 }
194
195 pub fn optimize(self) -> Result<()> {
196 Ok(())
197 }
198}
199
200pub const VERSION: &str = env!("CARGO_PKG_VERSION");
202
203pub mod defaults {
205 use super::*;
206
207 pub const DEFAULT_THEME: &str = "default";
208 pub const DEFAULT_BREAKPOINT: Breakpoint = Breakpoint::Base;
209 pub const DEFAULT_SPACING: Spacing = Spacing::Rem(1.0);
210
211 pub fn default_color() -> Color {
212 Color::Blue
213 }
214}
215