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::stepper::*;
30pub use components::table::*;
31pub use components::tabs::*;
32pub use components::textarea::*;
33pub use components::toast::*;
34pub use components::toggle::*;
35pub mod prelude;
36
37#[cfg(feature = "theme")]
38pub mod theme;
39
40use dioxus::dioxus_core::{Attribute, AttributeValue};
41use dioxus::prelude::*;
42
43pub(crate) fn setup_class_attribute(attributes: &mut Vec<Attribute>, default_classes: &str) {
44 if let Some(class_attribute) = attributes.iter_mut().find(|attr| attr.name == "class") {
46 if let AttributeValue::Text(ref mut value) = class_attribute.value {
47 *value = format!("{} {}", default_classes, value.clone());
48 }
49 } else {
50 attributes.push(Attribute::new("class", default_classes, None, true));
52 }
53}
54
55use std::sync::atomic::AtomicUsize;
56
57const ID_PREFIX: &str = "dx42-";
58static UNIQUE_ID_COUNTER: AtomicUsize = AtomicUsize::new(0);
59
60pub(crate) fn use_unique_id() -> String {
61 format!(
62 "{}{}",
63 ID_PREFIX,
64 UNIQUE_ID_COUNTER.fetch_add(1, std::sync::atomic::Ordering::Relaxed)
65 )
66}