pub(crate) const HOOKS_TIMING_PAGE_TITLE: &str = "Hooks — Timing";
pub(crate) const HOOKS_TIMING_PAGE_SUBTITLE: &str = "DebouncedValue, ThrottledValue, and Previous side-by-side. Each row drives a Signal from a different rate-control policy.";
pub(crate) const HOOKS_TIMING_ROW_DEBOUNCE_TITLE: &str = "Debounce (quiet period)";
pub(crate) const HOOKS_TIMING_ROW_DEBOUNCE_BODY: &str = "Type into the box to seed a pending value; after 300 ms of idle time the debounced signal commits the latest pending value.";
pub(crate) const HOOKS_TIMING_INPUT_LABEL: &str = "Live input";
pub(crate) const HOOKS_TIMING_ROW_THROTTLE_TITLE: &str = "Throttle (max-once-per-window)";
pub(crate) const HOOKS_TIMING_ROW_THROTTLE_BODY: &str = "Type into the box to push pending values into the throttler. The committed value updates at most once every 250 ms.";
pub(crate) const HOOKS_TIMING_ROW_PREVIOUS_TITLE: &str = "Previous (snapshot of last render)";
pub(crate) const HOOKS_TIMING_ROW_PREVIOUS_BODY: &str = "Each render is preceded by `previous_step`, which records the current value and reports the snapshot from the previous render.";
pub(crate) const HOOKS_TIMING_CURRENT_PREFIX: &str = "current:";
pub(crate) const HOOKS_TIMING_PREVIOUS_PREFIX: &str = "previous:";