1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//! # tui-breadcrumb
//!
//! A dedicated, highly customizable, and interactive hierarchical breadcrumb navigation
//! widget for [Ratatui](https://crates.io/crates/ratatui).
//!
//! ```text
//! 📁 Home ❯ 📂 Projects ❯ 📦 ratatui ▾ ❯ 📄 sparkline.rs
//! ```
//!
//! ## Key Features
//!
//! - **Built-in Separator Presets**: Slash (`/`), Chevron (`❯`), Angle (`›`), Arrow (`→`), Pipe (`|`), Backslash (`\`), Double Angle (`»`), or custom glyphs.
//! - **Smart Responsive Truncation**:
//! - [`TruncateStrategy::Middle`]: `Home ❯ ... ❯ src ❯ sparkline.rs`
//! - [`TruncateStrategy::Start`]: `... ❯ src ❯ sparkline.rs`
//! - [`TruncateStrategy::ShortenNames`]: `H ❯ P ❯ ratatui ❯ src ❯ sparkline.rs`
//! - [`TruncateStrategy::End`]: `Home ❯ Projects ❯ ...`
//! - **Interactive State (`BreadcrumbState`)**:
//! - Keyboard focus navigation with arrow keys.
//! - Mouse hit testing ([`BreadcrumbState::item_at`], [`BreadcrumbState::dropdown_at`], [`BreadcrumbState::is_ellipsis_at`]).
//! - **Filesystem Path Integration**: Seamless construction from [`std::path::Path`] via [`from_path`].
//!
//! ## Quickstart Example
//!
//! ```rust
//! use ratatui::prelude::*;
//! use tui_breadcrumb::{Breadcrumb, BreadcrumbSeparator, BreadcrumbState, TruncateStrategy};
//!
//! fn draw_breadcrumbs(frame: &mut Frame, area: Rect, state: &mut BreadcrumbState) {
//! let widget = Breadcrumb::new(["Home", "Projects", "ratatui", "src", "sparkline.rs"])
//! .separator(BreadcrumbSeparator::chevron())
//! .strategy(TruncateStrategy::middle())
//! .selected_style(Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD));
//!
//! frame.render_stateful_widget(widget, area, state);
//! }
//! ```
pub use BreadcrumbItem;
pub use from_path;
pub use BreadcrumbSeparator;
pub use BreadcrumbState;
pub use TruncateStrategy;
pub use Breadcrumb;