k8ordo
  • UI
  • Form
  • State
  • Router
  • Static
  • Server
Switch to dark mode
  • Get Started
  • Theming
  • i18n
  • Components
  • Hooks
  • Helpers
  • AI
Open navigation
DOM Interaction
  • useClickAway
  • useHover
  • useResize
  • useScrollDirection
  • useScrollLock
  • useWindowResize
  • useWritingMode
State & Storage
  • useClipboard
  • useControllableState
Timing
  • useDebouncedTransition
  • useDeferredDebounce
  • useInterval
  • useTimeout
Utility
  • useBreakpoint
  • useClient
  • useDisclosure
  • useStep
  • useWindowSize
Observer
  • useIntersectionObserver
  • useInView
k8ordo

React libraries that use Baseline features without holding back.

Packages
  • @k8ordo/ui
  • @k8ordo/form
  • @k8ordo/state
  • @k8ordo/router
  • @k8ordo/static
  • @k8ordo/server
UI
  • Get Started
  • Theming
  • i18n
  • Components
  • Hooks
  • Helpers
  • AI Chat
  • Generative UI
  • AI Agents
  • Storybook
Resources
  • GitHub
  • npm

© 2026 k8o — MIT License

Typeset in Noto Sans JP & M PLUS 2

Hooks

DOM Interaction
  • useClickAway
  • useHover
  • useResize
  • useScrollDirection
  • useScrollLock
  • useWindowResize
  • useWritingMode
State & Storage
  • useClipboard
  • useControllableState
Timing
  • useDebouncedTransition
  • useDeferredDebounce
  • useInterval
  • useTimeout
Utility
  • useBreakpoint
  • useClient
  • useDisclosure
  • useStep
  • useWindowSize
Observer
  • useIntersectionObserver
  • useInView

useStep

A hook for step-based navigation with keyboard support.

Import

Usage

Basic Usage

Step 1 / 5

Parameters

initialCount
Type: number
Default: -
maxCount
Type: number
Default: -
PropTypeDefault
initialCountnumber-
maxCountnumber-

Return Value

count
Type: number
Default: -
next
Type: () => void
Default: -
back
Type: () => void
Default: -
isDisabledBack
Type: boolean
Default: -
isDisabledNext
Type: boolean
Default: -
PropTypeDefault
countnumber
-
next() => void-
back() => void-
isDisabledBackboolean-
isDisabledNextboolean-
import { useStep } from '@k8ordo/ui';
const { count, back, next, isDisabledBack, isDisabledNext } = useStep({
  initialCount: 1,
  maxCount: 5,
});

return (
  <div>
    <button disabled={isDisabledBack} onClick={back}>Back</button>
    <span>Step {count} / 5</span>
    <button disabled={isDisabledNext} onClick={next}>Next</button>
  </div>
);