diff --git a/examples/basic/src/main.rs b/examples/basic/src/main.rs
index 3e2c781..6202280 100644
--- a/examples/basic/src/main.rs
+++ b/examples/basic/src/main.rs
@@ -7,15 +7,16 @@ fn main() {
#[component]
pub fn App(cx: Scope) -> impl IntoView {
- let (count, set_count) = create_signal(cx, 0);
+ let (count, set_count) = create_signal(cx, 0.0);
let (open, set_open) = create_signal(cx, true);
view! { cx,
-
+
{move || count.get()}
"sd" {move || count.get()}
+
}
}
diff --git a/src/lib.rs b/src/lib.rs
index 9d0a56b..2c944f6 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,10 +1,12 @@
mod button;
mod card;
mod modal;
+mod progress;
mod table;
mod teleport;
mod utils;
pub use button::*;
pub use modal::*;
+pub use progress::*;
pub use table::*;
diff --git a/src/progress/mod.rs b/src/progress/mod.rs
new file mode 100644
index 0000000..5145449
--- /dev/null
+++ b/src/progress/mod.rs
@@ -0,0 +1,46 @@
+use crate::utils::mount_style::mount_style;
+use leptos::*;
+use stylers::style_sheet_str;
+
+#[component]
+pub fn Progress(
+ cx: Scope,
+ #[prop(optional)] left_tip: Option>,
+ #[prop(optional)] right_tip: Option>,
+ percentage: ReadSignal,
+) -> impl IntoView {
+ let class_name = mount_style("progress", || style_sheet_str!("./src/progress/progress.css"));
+ let style = move || format!("width: {}%", percentage.get());
+ view! {
+ cx, class=class_name,
+
+
+ {
+ move || {
+ if let Some(left_tip) = left_tip {
+ left_tip.get()
+ } else {
+ "".into()
+ }
+ }
+ }
+
+
+
+
+
+
+
+ {
+ move || {
+ if let Some(right_tip) = right_tip {
+ right_tip.get()
+ } else {
+ "".into()
+ }
+ }
+ }
+
+
+ }
+}
diff --git a/src/progress/progress.css b/src/progress/progress.css
new file mode 100644
index 0000000..5cdb12a
--- /dev/null
+++ b/src/progress/progress.css
@@ -0,0 +1,47 @@
+.melt-progress {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 24px;
+ padding: 0 8px;
+}
+
+.melt-progress__tip-right,
+.melt-progress__tip-left {
+ display: inline-block;
+ margin: 0 10px;
+ width: 48px;
+ text-align: center;
+ font-size: 12px;
+ color: #777;
+}
+
+.melt-progress__progress {
+ flex: 1;
+ height: 3px;
+ background: #f2f2f2;
+ border-radius: 2px;
+ /* cursor: pointer; */
+}
+
+.melt-progress__progress-inner {
+ position: relative;
+ top: -14px;
+ display: inline-block;
+ background: red;
+ height: 100%;
+ transition: width 0.1s;
+}
+
+.melt-progress__progress-circle {
+ display: inline-block;
+ position: absolute;
+ right: -3px;
+ top: -4px;
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ background: #fff;
+ box-shadow: 0 0 3px 2px #4443;
+}