//! # rustelo_web
//!
//! Web stack umbrella port — a single dependency that pulls in the entire
//! Leptos + Axum stack plus foundation routing and state types.
//!
//! ## Features
//! - `ssr`     — enables `leptos/ssr`, `leptos_axum/ssr`, re-exports all pages
//!   and components
//! - `hydrate` — enables `leptos/hydrate`, re-exports all pages and components
//! - `tls`     — adds `axum-server` + `rustls` for HTTPS support

pub mod components;
pub mod handlers;
pub mod router;
pub mod server;

// ── Web stack re-exports ───────────────────────────────────────────────────

// SSR-only: Axum server stack and Tokio runtime
#[cfg(feature = "ssr")]
pub use axum;
#[cfg(feature = "leptos-hydration")]
pub use leptos;
#[cfg(feature = "leptos-hydration")]
pub use leptos_axum;
#[cfg(feature = "leptos-hydration")]
pub use leptos_config;
#[cfg(feature = "leptos-hydration")]
pub use leptos_meta;
#[cfg(feature = "leptos-hydration")]
pub use leptos_router;
// ── Feature-gated page and component re-exports ───────────────────────────

// rustelo_components_leptos: available for both ssr and hydrate
#[cfg(any(feature = "leptos-hydration", feature = "hydrate"))]
pub use rustelo_components_leptos;
// ── Foundation re-exports ──────────────────────────────────────────────────
pub use rustelo_core_lib;
// ── Foundation routing types ───────────────────────────────────────────────
pub use rustelo_core_lib::routing::{
    BreadcrumbItem, NavigationData, Routable, RouteInfo, RouteMetadata,
};
// ── Foundation reactive state types ───────────────────────────────────────
#[cfg(any(target_arch = "wasm32", feature = "leptos-hydration"))]
pub use rustelo_core_lib::state::{
    use_app_state, use_auth_state, use_current_language, use_navigation, AppConfig, AppState,
    AppStateSummary, AuthState, LanguageContext, MetaState, NavigationContext, RouteState,
    ThemeState, UIState, UserInfo,
};
pub use rustelo_core_types;
#[cfg(any(feature = "leptos-hydration", feature = "hydrate"))]
pub use rustelo_pages_leptos;
#[cfg(feature = "ssr")]
pub use tokio;
#[cfg(feature = "ssr")]
pub use tower;
#[cfg(feature = "ssr")]
pub use tower_http;

pub const WEB_VERSION: &str = env!("CARGO_PKG_VERSION");
