orbital-ui 0.1.1

Leptos component library and design system for focused, accessible product UIs
use std::env;
use std::fs;
use std::path::PathBuf;

fn main() {
    println!("cargo:rerun-if-changed=../orbital-theme/src/baseline");
    println!("cargo:rerun-if-changed=../orbital-theme/src/fonts.rs");
    println!("cargo:rerun-if-changed=../orbital-theme/src/theme.rs");
    println!("cargo:rerun-if-changed=../orbital-theme/src/context.rs");
    println!("cargo:rerun-if-env-changed=LEPTOS_BASE_PATH");

    let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
    let workspace_root = manifest_dir.join("..");
    let out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR"));
    let css = generate_baseline_css();

    let out_file = out_dir.join("orbital-theme-baseline.css");
    fs::write(&out_file, &css).expect("write OUT_DIR baseline css");

    let public_file = workspace_root.join("public/orbital-theme-baseline.css");
    if let Some(parent) = public_file.parent() {
        fs::create_dir_all(parent).expect("create public dir");
    }
    fs::write(&public_file, &css).expect("write public baseline css");

    println!(
        "cargo:rustc-env=ORBITAL_THEME_BASELINE_CSS={}",
        out_file.display()
    );
}

fn generate_baseline_css() -> String {
    let font_prefix = match env::var("LEPTOS_BASE_PATH") {
        Ok(base) if !base.is_empty() => {
            format!("{}/fonts", base.trim_end_matches('/'))
        }
        _ => "/fonts".to_string(),
    };

    orbital_theme::default_first_paint_baseline_css_with_font_prefix(
        orbital_theme::ROOT_THEME_SCOPE_ID,
        &font_prefix,
    )
}