Skip to main content

iris_cssom/
lib.rs

1//! Iris CSS Object Model (CSSOM) Implementation
2//!
3//! This crate provides a complete CSSOM implementation including:
4//! - CSS parsing and selector matching
5//! - CSS Modules support
6//! - Web-compatible CSSOM APIs (CSSStyleSheet, CSSRule, CSSStyleDeclaration, etc.)
7//! - Bridge layer for iris-layout integration
8//!
9//! # Architecture
10//!
11//! ```text
12//! CSS Text → css.rs (Parser) → CSSRule → cssrule.rs (CSSOM Wrapper)
13//!                                      ↓
14//!                              stylesheet.rs (CSSStyleSheet)
15//!                                      ↓
16//!                              bridge.rs (Integration with iris-layout)
17//! ```
18//!
19//! # Example
20//!
21//! ```rust
22//! use iris_cssom::{CSSStyleSheet, CSSOMManager, CSSStyleDeclaration};
23//!
24//! // Create a stylesheet
25//! let mut sheet = CSSStyleSheet::new();
26//! sheet.insert_rule(".container { color: red; }", 0).unwrap();
27//!
28//! // Use CSSOMManager for multiple stylesheets
29//! let mut manager = CSSOMManager::new();
30//! manager.add_stylesheet_from_css("main", ".class { padding: 20px; }");
31//!
32//! // Use CSSStyleDeclaration for inline styles
33//! let mut style = CSSStyleDeclaration::new();
34//! style.set_property("font-size", "16px", "");
35//! ```
36
37#![warn(missing_docs)]
38
39// Core CSS modules
40pub mod css;
41pub mod css_modules;
42
43// CSSOM API modules
44pub mod cssom;        // CSSStyleDeclaration
45pub mod cssrule;      // CSSRule, CSSStyleRule, CSSMediaRule
46pub mod cssrulelist;  // CSSRuleList
47pub mod stylesheet;   // CSSStyleSheet
48pub mod bridge;       // CSSOMManager (bridge to iris-layout)
49
50// Re-export core types for convenience
51pub use css::{Selector, SelectorType, Stylesheet, CSSRule, parse_stylesheet};
52pub use css_modules::{scope_class_name, transform_css, generate_short_hash};
53
54// Re-export CSSOM API types
55pub use cssom::CSSStyleDeclaration;
56pub use cssrule::{CSSRuleOM, CSSRuleType, CSSStyleRule, CSSMediaRule, CSSRuleTrait};
57pub use cssrulelist::CSSRuleList;
58pub use stylesheet::CSSStyleSheet;
59pub use bridge::CSSOMManager;