//! Filter Components Module
//!
//! Provides modular filter components that work seamlessly in both
//! server-side rendering (SSR) and client-side (WASM) environments.
//!
//! ## Architecture
//!
//! This module follows the project's modular architecture pattern:
//! - `shared.rs` - Common types and utilities used by both client and server
//! - `ssr.rs` - Server-side rendering implementations
//! - `client.rs` - Client-side interactive implementations
//! - `unified.rs` - Unified components that automatically choose the right
//!   implementation
//!
//! ## Usage
//!
//! Import the unified components for seamless SSR/client compatibility:
//!
//! ```rust
//! use rustelo_components_leptos::filter::ContentCategoryFilter};
//! use leptos::prelude::*;
//!
//! fn example_usage() -> impl IntoView {
//!     view! {
//!         <div>
//!             // Category-specific filter
//!             <ContentCategoryFilter
//!                 content_type="recipes".to_string()
//!                 language="es".to_string()
//!                 all_emoji="📚".to_string()
//!             />
//!         </div>
//!     }
//! }
//! ```
//!
//! ## Features
//!
//! - **Language Agnostic**: Automatically adapts to any configured language
//! - **Content Type Agnostic**: Works with any content type defined in
//!   content-kinds.toml
//! - **SSR Compatible**: Renders proper initial HTML structure on the server
//! - **Interactive**: Provides rich client-side filtering and navigation
//! - **Cached**: Intelligent caching to avoid repeated data loading
//! - **Responsive**: Mobile-friendly responsive design

// Shared types and utilities
pub mod shared;

pub mod ssr;

pub mod client;

// Unified components that work in both environments
pub mod unified;

// Temporarily disabled due to Leptos macro compilation errors
// pub use client::CategoryFilterClient;

// pub use ssr::CategoryFilterSSR;

// Re-export the unified components as the main public API
// Re-export the filter loading functionality from core-lib
pub use ::rustelo_core_lib::fluent::{load_filter_index, FilterIndex};
// Re-export shared types for external use
pub use shared::{
    clear_filter_cache, get_active_button_classes, get_inactive_button_classes,
    load_filter_items_from_json, FilterItem,
};
pub use unified::{CategoryFilter, UnifiedCategoryFilter};
