dioxus_nox_timer/types.rs
1//! Core types for dioxus-nox-timer.
2
3use dioxus::prelude::*;
4
5/// Timer state machine.
6///
7/// Represents the lifecycle of a countdown timer.
8#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
9pub enum TimerState {
10 /// No timer active.
11 #[default]
12 Idle,
13 /// Counting down (or counting up for stopwatch).
14 Running,
15 /// Paused mid-count.
16 Paused,
17 /// Countdown reached zero.
18 Complete,
19}
20
21/// Controls returned by [`use_countdown`](crate::use_countdown).
22#[derive(Clone)]
23pub struct CountdownControls {
24 /// Start countdown with given duration in seconds.
25 pub start: Callback<i64>,
26 /// Pause a running countdown.
27 pub pause: Callback<()>,
28 /// Resume a paused countdown.
29 pub resume: Callback<()>,
30 /// Cancel immediately, return to Idle.
31 pub skip: Callback<()>,
32 /// Adjust remaining time by delta seconds (positive adds, negative subtracts).
33 /// Remaining time is clamped to >= 0.
34 pub adjust: Callback<i64>,
35 /// Dismiss after completion (Complete → Idle).
36 pub dismiss: Callback<()>,
37}