//! # dioxus-nox-tabs
//!
//! **⚠️ Disclaimer:** This crate was entirely generated by AI (Claude) as part of a
//! personal learning project. It has not been battle-tested in production and may
//! contain bugs or unsound abstractions. Use at your own risk and exercise extreme
//! caution before depending on it in anything that matters.
//!
//! Headless tab management primitives for Dioxus applications.
//!
//! Follows the [WAI-ARIA Tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)
//! with proper ARIA roles, keyboard navigation, and data attributes for
//! styling — shipping **zero visual styles**.
//!
//! ## Layers
//!
//! | Layer | Items | Dioxus dependency? |
//! |-------|-------|--------------------|
//! | **Types** | [`Orientation`], [`ActivationMode`], [`TabsContext`], [`TabEntry`] | Yes (Signals) |
//! | **Components** | [`tabs::Root`], [`tabs::List`], [`tabs::Trigger`], [`tabs::Content`] | Yes (RSX, context) |
//!
//! ## Quick start
//!
//! ```rust,ignore
//! use dioxus::prelude::*;
//! use dioxus_nox_tabs::*;
//!
//! #[component]
//! fn App() -> Element {
//!     rsx! {
//!         tabs::Root {
//!             default_value: "files",
//!             tabs::List {
//!                 tabs::Trigger { value: "files", "Files" }
//!                 tabs::Trigger { value: "settings", "Settings" }
//!             }
//!             tabs::Content { value: "files", p { "File browser here" } }
//!             tabs::Content { value: "settings", p { "Settings panel here" } }
//!         }
//!     }
//! }
//! ```
//!
//! ## Data attributes
//!
//! | Attribute | Component | Values |
//! |-----------|-----------|--------|
//! | `data-tabs-orientation` | Root, List | `"horizontal"` \| `"vertical"` |
//! | `data-state` | Trigger, Content | `"active"` \| `"inactive"` |
//! | `data-disabled` | Trigger | `"true"` (present when disabled) |
//!
//! ## Keyboard navigation
//!
//! | Key | Horizontal | Vertical |
//! |-----|-----------|----------|
//! | Arrow Right | Next tab | — |
//! | Arrow Left | Previous tab | — |
//! | Arrow Down | — | Next tab |
//! | Arrow Up | — | Previous tab |
//! | Home | First tab | First tab |
//! | End | Last tab | Last tab |
//! | Space / Enter | Activate (manual mode) | Activate (manual mode) |

mod components;
mod types;

#[cfg(test)]
mod tests;

// Re-export types at crate root for `use dioxus_nox_tabs::*`.
pub use types::{ActivationMode, Orientation, TabEntry, TabsContext};

/// Compound component namespace.
///
/// ```rust,ignore
/// tabs::Root { tabs::List { tabs::Trigger { .. } } tabs::Content { .. } }
/// ```
pub mod tabs {
    pub use crate::components::{Content, List, Root, Trigger};
}
