{"version":3,"sources":["../src/useCounter.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\n/**\n * useCounter return type\n */\nexport interface UseCounterReturn {\n  /**\n   * Current counter value\n   */\n  count: number;\n  /**\n   * Increment the counter by 1\n   */\n  increment: () => void;\n  /**\n   * Decrement the counter by 1\n   */\n  decrement: () => void;\n  /**\n   * Reset the counter back to its initial value\n   */\n  reset: () => void;\n}\n\n/**\n * A hook for managing counter state with increment, decrement, and reset.\n * Ideal for quantity selectors, pagination, and scoreboards.\n *\n * @param initialValue - Initial counter value (default: 0)\n * @returns Object containing the current count and control functions\n *\n * @example\n * ```tsx\n * function Counter() {\n *   const { count, increment, decrement, reset } = useCounter(0);\n *\n *   return (\n *     <div>\n *       <h2>Counter: {count}</h2>\n *       <button onClick={increment}>+ Increment</button>\n *       <button onClick={decrement}>- Decrement</button>\n *       <button onClick={reset}>Reset</button>\n *     </div>\n *   );\n * }\n * ```\n */\nexport function useCounter(initialValue: number = 0): UseCounterReturn {\n  const [count, setCount] = useState(initialValue);\n\n  const increment = useCallback(() => {\n    setCount((prev) => prev + 1);\n  }, []);\n\n  const decrement = useCallback(() => {\n    setCount((prev) => prev - 1);\n  }, []);\n\n  const reset = useCallback(() => {\n    setCount(initialValue);\n  }, [initialValue]);\n\n  return { count, increment, decrement, reset };\n}\n"],"mappings":";AAAA,SAAS,aAAa,gBAAgB;AA+C/B,SAAS,WAAW,eAAuB,GAAqB;AACrE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,YAAY;AAE/C,QAAM,YAAY,YAAY,MAAM;AAClC,aAAS,CAAC,SAAS,OAAO,CAAC;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,QAAM,YAAY,YAAY,MAAM;AAClC,aAAS,CAAC,SAAS,OAAO,CAAC;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,QAAM,QAAQ,YAAY,MAAM;AAC9B,aAAS,YAAY;AAAA,EACvB,GAAG,CAAC,YAAY,CAAC;AAEjB,SAAO,EAAE,OAAO,WAAW,WAAW,MAAM;AAC9C;","names":[]}