dioxus_tw_components/
lib.rs1pub mod bootstrap;
2pub use bootstrap::*;
3
4pub mod components;
5pub use components::accordion::*;
6pub use components::button::*;
7pub use components::buttongroup::*;
8pub use components::callout::*;
9pub use components::carousel::*;
10pub use components::checkbox::*;
11pub use components::dropdown::*;
12pub use components::formlist::*;
13pub use components::hovercard::*;
14pub use components::icon::*;
15pub use components::input::*;
16pub use components::lightswitch::*;
17pub use components::markdown::*;
18pub use components::modal::*;
19pub use components::pagination::*;
20pub use components::placeholder::*;
21pub use components::progressbar::*;
22pub use components::radio::*;
23pub use components::scrollable::*;
24pub use components::select::*;
25pub use components::separator::*;
26pub use components::sidepanel::*;
27pub use components::slider::*;
28pub use components::sorttable::*;
29pub use components::table::*;
30pub use components::tabs::*;
31pub use components::textarea::*;
32pub use components::toast::*;
33pub use components::toggle::*;
34pub mod prelude;
35
36#[cfg(feature = "theme")]
37pub mod theme;
38
39use dioxus::dioxus_core::{Attribute, AttributeValue};
40use dioxus::prelude::*;
41
42pub(crate) fn setup_class_attribute(attributes: &mut Vec<Attribute>, default_classes: &str) {
43 if let Some(class_attribute) = attributes.iter_mut().find(|attr| attr.name == "class") {
45 if let AttributeValue::Text(ref mut value) = class_attribute.value {
46 *value = format!("{} {}", default_classes, value.clone());
47 }
48 } else {
49 attributes.push(Attribute::new("class", default_classes, None, true));
51 }
52}
53
54use std::sync::atomic::AtomicUsize;
55
56const ID_PREFIX: &str = "dx42-";
57static UNIQUE_ID_COUNTER: AtomicUsize = AtomicUsize::new(0);
58
59pub(crate) fn use_unique_id() -> String {
60 format!(
61 "{}{}",
62 ID_PREFIX,
63 UNIQUE_ID_COUNTER.fetch_add(1, std::sync::atomic::Ordering::Relaxed)
64 )
65}