Skip to main content

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}