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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
//! # Unicode-rs
//!
//! A comprehensive Unicode character library for Rust applications, particularly useful for
//! terminal applications, editors, and CLI tools that need consistent Unicode symbol support
//! across different environments and themes.
//!
//! ## Features
//!
//! - **Multiple themes**: Support for Minimal (ASCII), Basic, Rich, and Fancy Unicode themes
//! - **Categorized symbols**: Organized into logical groups (arrows, blocks, shapes, git, etc.)
//! - **Fallback support**: Graceful degradation to ASCII when Unicode isn't supported
//! - **Global configuration**: Set theme and overrides globally for your application
//! - **Type-safe**: All symbols are strongly typed enums
//!
//! ## Quick Start
//!
//! ```rust
//! use unicode_rs::prelude::*;
//!
//! // Use with default theme (Rich)
//! let check = Symbol::Check.get_char(UnicodeTheme::Rich); // ✓
//! let arrow = Arrow::Right.get_char(UnicodeTheme::Rich); // →
//!
//! // Configure globally
//! set_global_config(UnicodeConfig::with_theme(UnicodeTheme::Minimal));
//! let check_ascii = get_char(&Symbol::Check, None); // v
//! ```
//!
//! ## Theme Comparison
//!
//! | Symbol | Minimal | Basic | Rich | Fancy |
//! |--------|---------|-------|------|-------|
//! | Check | `v` | `✓` | `✓` | `✅` |
//! | Arrow Right | `>` | `→` | `→` | `⮕` |
//! | Git Modified | `M` | `●` | `●` | `◐` |
//!
//! ## Advanced Usage
//!
//! ### Custom Configuration
//! ```rust
//! use unicode_rs::prelude::*;
//!
//! // Create a config with fallback and custom overrides
//! let config = UnicodeConfig::with_theme(UnicodeTheme::Rich)
//! .with_fallback() // Fall back to ASCII if Unicode fails
//! .with_override("custom_bullet", '•');
//!
//! set_global_config(config);
//! ```
//!
//! ### Terminal Compatibility
//! ```rust
//! use unicode_rs::prelude::*;
//!
//! // Detect terminal capabilities and choose appropriate theme
//! let theme = if std::env::var("TERM").unwrap_or_default().contains("xterm") {
//! UnicodeTheme::Rich
//! } else {
//! UnicodeTheme::Minimal
//! };
//!
//! set_global_config(UnicodeConfig::with_theme(theme));
//! ```
//!
//! ## Modules
//!
//! - [`symbols`] - General symbols (checkmarks, exclamation, etc.)
//! - [`arrows`] - Directional arrows and navigation symbols
//! - [`blocks`] - Block drawing characters
//! - [`shapes`] - Geometric shapes
//! - [`git`] - Git status and diff symbols
//! - [`file_types`] - File type indicators
//! - [`ui`] - UI elements (borders, separators, etc.)
//! - [`editor`] - Editor-specific symbols (cursor, selection)
//! - [`status`] - Status indicators
//! - [`security`] - Unicode security utilities for detecting dangerous characters
// Re-export the main types for convenience
pub use *;
/// Prelude module for convenient imports