{"_id":"@aditya-karedla/hooks","name":"@aditya-karedla/hooks","dist-tags":{"latest":"0.1.0-alpha.1"},"versions":{"0.1.0-alpha.1":{"name":"@aditya-karedla/hooks","version":"0.1.0-alpha.1","description":"React hooks for Nova UI component library","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"sideEffects":false,"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"devDependencies":{"@types/react":"^18.2.55","@types/react-dom":"^18.2.19","react":"^18.2.0","react-dom":"^18.2.0","tsup":"^8.0.2","typescript":"^5.3.3","vitest":"^1.3.1"},"repository":{"type":"git","url":"git+https://github.com/adityakaredla/nova.git"},"keywords":["react","hooks","utilities","typescript"],"license":"MIT","publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","type-check":"tsc --noEmit","clean":"rm -rf dist","test":"vitest run","test:watch":"vitest"},"_id":"@aditya-karedla/hooks@0.1.0-alpha.1","bugs":{"url":"https://github.com/adityakaredla/nova/issues"},"homepage":"https://github.com/adityakaredla/nova#readme","_integrity":"sha512-wbcdzoyHhqFNF94NRDAorM1c+qv3jNNBl6YvNCnZChOV9INn/nz7eJHfpKR68rskQ+UYgCgt0ZtOPhMsk1OYAg==","_resolved":"/private/var/folders/w4/h0lpjrkn14gfc66mhld_ryjh0000gn/T/a500216a39161d747155ef8800c95227/aditya-karedla-hooks-0.1.0-alpha.1.tgz","_from":"file:aditya-karedla-hooks-0.1.0-alpha.1.tgz","_nodeVersion":"20.19.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-wbcdzoyHhqFNF94NRDAorM1c+qv3jNNBl6YvNCnZChOV9INn/nz7eJHfpKR68rskQ+UYgCgt0ZtOPhMsk1OYAg==","shasum":"85090474418ebf2d2eb3aaf634aa2dd8f54ffbc5","tarball":"https://registry.npmjs.org/@aditya-karedla/hooks/-/hooks-0.1.0-alpha.1.tgz","fileCount":7,"unpackedSize":13689,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDsY1Mlbx/37oVDLdqizF90dE4pue/iIAv0gNSzEQyP9AIhAKRBdlalJG+fWif5+JXP6Gf8SQHJAY5cMYMyScqUHtFn"}]},"_npmUser":{"name":"aditya-karedla","email":"aditya.official1302@gmail.com"},"directories":{},"maintainers":[{"name":"aditya-karedla","email":"aditya.official1302@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hooks_0.1.0-alpha.1_1771967601113_0.9179034614310912"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-24T21:13:21.039Z","0.1.0-alpha.1":"2026-02-24T21:13:21.264Z","modified":"2026-02-24T21:13:21.463Z"},"maintainers":[{"name":"aditya-karedla","email":"aditya.official1302@gmail.com"}],"description":"React hooks for Nova UI component library","homepage":"https://github.com/adityakaredla/nova#readme","keywords":["react","hooks","utilities","typescript"],"repository":{"type":"git","url":"git+https://github.com/adityakaredla/nova.git"},"bugs":{"url":"https://github.com/adityakaredla/nova/issues"},"license":"MIT","readme":"# @aditya-karedla/hooks\n\n> Reusable React hooks for the Nova design system\n\nA collection of useful React hooks for common UI patterns and behaviors.\n\n## Installation\n\n```bash\nnpm install @aditya-karedla/hooks\n# or\npnpm add @aditya-karedla/hooks\n# or\nyarn add @aditya-karedla/hooks\n```\n\n### Peer Dependencies\n\n```bash\nnpm install react react-dom\n```\n\n## Hooks\n\n### useMediaQuery\n\nResponsive design hook that tracks media query matches.\n\n```tsx\nimport { useMediaQuery } from '@aditya-karedla/hooks';\n\nfunction ResponsiveComponent() {\n  const isMobile = useMediaQuery('(max-width: 768px)');\n  const isDesktop = useMediaQuery('(min-width: 1024px)');\n  \n  return (\n    <div>\n      {isMobile && <MobileView />}\n      {isDesktop && <DesktopView />}\n    </div>\n  );\n}\n```\n\n**Parameters:**\n- `query: string` - CSS media query to match\n\n**Returns:**\n- `boolean` - Whether the media query currently matches\n\n### useLocalStorage\n\nPersist state in localStorage with automatic synchronization.\n\n```tsx\nimport { useLocalStorage } from '@aditya-karedla/hooks';\n\nfunction UserPreferences() {\n  const [preferences, setPreferences] = useLocalStorage('userPrefs', {\n    theme: 'light',\n    language: 'en'\n  });\n  \n  return (\n    <div>\n      <button onClick={() => setPreferences({ ...preferences, theme: 'dark' })}>\n        Set Dark Theme\n      </button>\n    </div>\n  );\n}\n```\n\n**Parameters:**\n- `key: string` - localStorage key\n- `initialValue: T` - Default value if key doesn't exist\n\n**Returns:**\n- `[T, (value: T) => void]` - Current value and setter function\n\n### useDebounce\n\nDebounce a value to limit update frequency.\n\n```tsx\nimport { useDebounce } from '@aditya-karedla/hooks';\nimport { useState } from 'react';\n\nfunction SearchInput() {\n  const [search, setSearch] = useState('');\n  const debouncedSearch = useDebounce(search, 500);\n  \n  // This effect only runs when debouncedSearch changes\n  useEffect(() => {\n    if (debouncedSearch) {\n      performSearch(debouncedSearch);\n    }\n  }, [debouncedSearch]);\n  \n  return (\n    <input \n      value={search} \n      onChange={(e) => setSearch(e.target.value)}\n      placeholder=\"Search...\"\n    />\n  );\n}\n```\n\n**Parameters:**\n- `value: T` - Value to debounce\n- `delay: number` - Delay in milliseconds (default: 500)\n\n**Returns:**\n- `T` - Debounced value\n\n### useClickOutside\n\nDetect clicks outside of a specified element.\n\n```tsx\nimport { useClickOutside } from '@aditya-karedla/hooks';\nimport { useRef, useState } from 'react';\n\nfunction Dropdown() {\n  const [isOpen, setIsOpen] = useState(false);\n  const dropdownRef = useRef<HTMLDivElement>(null);\n  \n  useClickOutside(dropdownRef, () => {\n    setIsOpen(false);\n  });\n  \n  return (\n    <div ref={dropdownRef}>\n      <button onClick={() => setIsOpen(!isOpen)}>\n        Toggle Dropdown\n      </button>\n      {isOpen && (\n        <div className=\"dropdown-menu\">\n          {/* Dropdown content */}\n        </div>\n      )}\n    </div>\n  );\n}\n```\n\n**Parameters:**\n- `ref: RefObject<HTMLElement>` - Reference to the element\n- `handler: (event: MouseEvent | TouchEvent) => void` - Callback when clicked outside\n\n## TypeScript\n\nAll hooks are fully typed with TypeScript for excellent IDE support.\n\n## Browser Support\n\nThese hooks work in all modern browsers that support React 18+.\n\n## Related Packages\n\n- [@aditya-karedla/core](../core) - Core UI components\n- [@aditya-karedla/tokens](../tokens) - Design tokens\n\n## License\n\nMIT © Aditya Karedla\n","readmeFilename":"README.md","_rev":"1-9b400f09b7945966962bfee6f62d2b15"}