Full Code of juliencrn/usehooks-ts for AI

master 61949134144d cached
271 files
707.0 KB
226.2k tokens
236 symbols
1 requests
Download .txt
Showing preview only (777K chars total). Download the full file or copy to clipboard to get everything.
Repository: juliencrn/usehooks-ts
Branch: master
Commit: 61949134144d
Files: 271
Total size: 707.0 KB

Directory structure:
gitextract_oyjuehk2/

├── .all-contributorsrc
├── .changeset/
│   ├── README.md
│   └── config.json
├── .editorconfig
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.yml
│   │   ├── config.yml
│   │   └── update-docs.yml
│   └── workflows/
│       ├── ci.yml
│       └── update-algolia-index.yml
├── .gitignore
├── .prettierignore
├── .prettierrc
├── .vscode/
│   └── settings.json
├── LICENSE
├── README.md
├── apps/
│   └── www/
│       ├── .eslintrc.cjs
│       ├── .gitignore
│       ├── CHANGELOG.md
│       ├── env.js
│       ├── next-sitemap.config.js
│       ├── next.config.js
│       ├── package.json
│       ├── postcss.config.cjs
│       ├── public/
│       │   └── site.webmanifest
│       ├── src/
│       │   ├── app/
│       │   │   ├── (docs)/
│       │   │   │   ├── introduction/
│       │   │   │   │   └── page.tsx
│       │   │   │   ├── layout.tsx
│       │   │   │   ├── migrate-to-v3/
│       │   │   │   │   └── page.tsx
│       │   │   │   └── react-hook/
│       │   │   │       └── [slug]/
│       │   │   │           └── page.tsx
│       │   │   ├── (marketing)/
│       │   │   │   ├── layout.tsx
│       │   │   │   └── page.tsx
│       │   │   ├── globals.css
│       │   │   ├── layout.tsx
│       │   │   └── prism.css
│       │   ├── components/
│       │   │   ├── buy-me-a-coffee.tsx
│       │   │   ├── carbon-ads/
│       │   │   │   ├── ads.tsx
│       │   │   │   ├── index.ts
│       │   │   │   └── use-script.ts
│       │   │   ├── command-copy.tsx
│       │   │   ├── doc-search/
│       │   │   │   ├── command-menu.tsx
│       │   │   │   ├── doc-search.tsx
│       │   │   │   ├── footer.tsx
│       │   │   │   ├── hits.tsx
│       │   │   │   ├── index.ts
│       │   │   │   ├── input.tsx
│       │   │   │   ├── modal.context.tsx
│       │   │   │   ├── open-button.tsx
│       │   │   │   ├── types.ts
│       │   │   │   └── use-cmd-k.ts
│       │   │   ├── docs/
│       │   │   │   ├── left-sidebar.tsx
│       │   │   │   ├── page-header.tsx
│       │   │   │   ├── pager.tsx
│       │   │   │   ├── right-sidebar.tsx
│       │   │   │   └── table-of-content.tsx
│       │   │   ├── main-nav.tsx
│       │   │   ├── mobile-nav.tsx
│       │   │   └── ui/
│       │   │       ├── button.tsx
│       │   │       ├── command.tsx
│       │   │       ├── components.tsx
│       │   │       ├── dialog.tsx
│       │   │       ├── dropdown-menu.tsx
│       │   │       └── icons.tsx
│       │   ├── config/
│       │   │   ├── docs.ts
│       │   │   ├── marketing.ts
│       │   │   └── site.ts
│       │   ├── lib/
│       │   │   ├── api.ts
│       │   │   └── utils.ts
│       │   └── types/
│       │       └── index.ts
│       ├── tailwind.config.js
│       └── tsconfig.json
├── package.json
├── packages/
│   ├── eslint-config-custom/
│   │   ├── .eslintrc.cjs
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── index.cjs
│   │   └── package.json
│   └── usehooks-ts/
│       ├── .eslintrc.cjs
│       ├── .gitignore
│       ├── CHANGELOG.md
│       ├── README.md
│       ├── package.json
│       ├── src/
│       │   ├── index.ts
│       │   ├── useBoolean/
│       │   │   ├── index.ts
│       │   │   ├── useBoolean.demo.tsx
│       │   │   ├── useBoolean.md
│       │   │   ├── useBoolean.test.ts
│       │   │   └── useBoolean.ts
│       │   ├── useClickAnyWhere/
│       │   │   ├── index.ts
│       │   │   ├── useClickAnyWhere.demo.tsx
│       │   │   ├── useClickAnyWhere.md
│       │   │   ├── useClickAnyWhere.test.ts
│       │   │   └── useClickAnyWhere.ts
│       │   ├── useCopyToClipboard/
│       │   │   ├── index.ts
│       │   │   ├── useCopyToClipboard.demo.tsx
│       │   │   ├── useCopyToClipboard.md
│       │   │   ├── useCopyToClipboard.test.ts
│       │   │   └── useCopyToClipboard.ts
│       │   ├── useCountdown/
│       │   │   ├── index.ts
│       │   │   ├── useCountdown.demo.tsx
│       │   │   ├── useCountdown.md
│       │   │   ├── useCountdown.test.ts
│       │   │   └── useCountdown.ts
│       │   ├── useCounter/
│       │   │   ├── index.ts
│       │   │   ├── useCounter.demo.tsx
│       │   │   ├── useCounter.md
│       │   │   ├── useCounter.test.ts
│       │   │   └── useCounter.ts
│       │   ├── useDarkMode/
│       │   │   ├── index.ts
│       │   │   ├── useDarkMode.demo.tsx
│       │   │   ├── useDarkMode.md
│       │   │   ├── useDarkMode.test.ts
│       │   │   └── useDarkMode.ts
│       │   ├── useDebounceCallback/
│       │   │   ├── index.ts
│       │   │   ├── useDebounceCallback.demo.tsx
│       │   │   ├── useDebounceCallback.md
│       │   │   ├── useDebounceCallback.test.ts
│       │   │   └── useDebounceCallback.ts
│       │   ├── useDebounceValue/
│       │   │   ├── index.ts
│       │   │   ├── useDebounceValue.demo.tsx
│       │   │   ├── useDebounceValue.md
│       │   │   ├── useDebounceValue.test.ts
│       │   │   └── useDebounceValue.ts
│       │   ├── useDocumentTitle/
│       │   │   ├── index.ts
│       │   │   ├── useDocumentTitle.demo.tsx
│       │   │   ├── useDocumentTitle.md
│       │   │   ├── useDocumentTitle.test.ts
│       │   │   └── useDocumentTitle.ts
│       │   ├── useEventCallback/
│       │   │   ├── index.ts
│       │   │   ├── useEventCallback.demo.tsx
│       │   │   ├── useEventCallback.md
│       │   │   ├── useEventCallback.test.tsx
│       │   │   └── useEventCallback.ts
│       │   ├── useEventListener/
│       │   │   ├── index.ts
│       │   │   ├── useEventListener.demo.tsx
│       │   │   ├── useEventListener.md
│       │   │   ├── useEventListener.test.ts
│       │   │   └── useEventListener.ts
│       │   ├── useHover/
│       │   │   ├── index.ts
│       │   │   ├── useHover.demo.tsx
│       │   │   ├── useHover.md
│       │   │   ├── useHover.test.ts
│       │   │   └── useHover.ts
│       │   ├── useIntersectionObserver/
│       │   │   ├── index.ts
│       │   │   ├── useIntersectionObserver.demo.tsx
│       │   │   ├── useIntersectionObserver.md
│       │   │   └── useIntersectionObserver.ts
│       │   ├── useInterval/
│       │   │   ├── index.ts
│       │   │   ├── useInterval.demo.tsx
│       │   │   ├── useInterval.md
│       │   │   ├── useInterval.test.ts
│       │   │   └── useInterval.ts
│       │   ├── useIsClient/
│       │   │   ├── index.ts
│       │   │   ├── useIsClient.demo.tsx
│       │   │   ├── useIsClient.md
│       │   │   ├── useIsClient.test.ts
│       │   │   └── useIsClient.ts
│       │   ├── useIsMounted/
│       │   │   ├── index.ts
│       │   │   ├── useIsMounted.demo.tsx
│       │   │   ├── useIsMounted.md
│       │   │   ├── useIsMounted.test.ts
│       │   │   └── useIsMounted.ts
│       │   ├── useIsomorphicLayoutEffect/
│       │   │   ├── index.ts
│       │   │   ├── useIsomorphicLayoutEffect.demo.tsx
│       │   │   ├── useIsomorphicLayoutEffect.md
│       │   │   └── useIsomorphicLayoutEffect.ts
│       │   ├── useLocalStorage/
│       │   │   ├── index.ts
│       │   │   ├── useLocalStorage.demo.tsx
│       │   │   ├── useLocalStorage.md
│       │   │   ├── useLocalStorage.test.ts
│       │   │   └── useLocalStorage.ts
│       │   ├── useMap/
│       │   │   ├── index.ts
│       │   │   ├── useMap.demo.tsx
│       │   │   ├── useMap.md
│       │   │   ├── useMap.test.ts
│       │   │   └── useMap.ts
│       │   ├── useMediaQuery/
│       │   │   ├── index.ts
│       │   │   ├── useMediaQuery.demo.tsx
│       │   │   ├── useMediaQuery.md
│       │   │   └── useMediaQuery.ts
│       │   ├── useOnClickOutside/
│       │   │   ├── index.ts
│       │   │   ├── useOnClickOuside.test.ts
│       │   │   ├── useOnClickOutside.demo.tsx
│       │   │   ├── useOnClickOutside.md
│       │   │   └── useOnClickOutside.ts
│       │   ├── useReadLocalStorage/
│       │   │   ├── index.ts
│       │   │   ├── useReadLocalStorage.demo.tsx
│       │   │   ├── useReadLocalStorage.md
│       │   │   ├── useReadLocalStorage.test.ts
│       │   │   └── useReadLocalStorage.ts
│       │   ├── useResizeObserver/
│       │   │   ├── index.ts
│       │   │   ├── useResizeObserver.demo.tsx
│       │   │   ├── useResizeObserver.md
│       │   │   ├── useResizeObserver.test.tsx
│       │   │   └── useResizeObserver.ts
│       │   ├── useScreen/
│       │   │   ├── index.ts
│       │   │   ├── useScreen.demo.tsx
│       │   │   ├── useScreen.md
│       │   │   └── useScreen.ts
│       │   ├── useScript/
│       │   │   ├── index.ts
│       │   │   ├── useScript.demo.tsx
│       │   │   ├── useScript.md
│       │   │   ├── useScript.test.ts
│       │   │   └── useScript.ts
│       │   ├── useScrollLock/
│       │   │   ├── index.ts
│       │   │   ├── useScrollLock.demo.tsx
│       │   │   ├── useScrollLock.md
│       │   │   ├── useScrollLock.test.ts
│       │   │   └── useScrollLock.ts
│       │   ├── useSessionStorage/
│       │   │   ├── index.ts
│       │   │   ├── useSessionStorage.demo.tsx
│       │   │   ├── useSessionStorage.md
│       │   │   ├── useSessionStorage.test.ts
│       │   │   └── useSessionStorage.ts
│       │   ├── useStep/
│       │   │   ├── index.ts
│       │   │   ├── useStep.demo.tsx
│       │   │   ├── useStep.md
│       │   │   ├── useStep.test.ts
│       │   │   └── useStep.ts
│       │   ├── useTernaryDarkMode/
│       │   │   ├── index.ts
│       │   │   ├── useTernaryDarkMode.demo.tsx
│       │   │   ├── useTernaryDarkMode.md
│       │   │   ├── useTernaryDarkMode.test.ts
│       │   │   └── useTernaryDarkMode.ts
│       │   ├── useTimeout/
│       │   │   ├── index.ts
│       │   │   ├── useTimeout.demo.tsx
│       │   │   ├── useTimeout.md
│       │   │   ├── useTimeout.test.ts
│       │   │   └── useTimeout.ts
│       │   ├── useToggle/
│       │   │   ├── index.ts
│       │   │   ├── useToggle.demo.tsx
│       │   │   ├── useToggle.md
│       │   │   ├── useToggle.test.ts
│       │   │   └── useToggle.ts
│       │   ├── useUnmount/
│       │   │   ├── index.ts
│       │   │   ├── useUnmount.demo.tsx
│       │   │   ├── useUnmount.md
│       │   │   ├── useUnmount.test.ts
│       │   │   └── useUnmount.ts
│       │   └── useWindowSize/
│       │       ├── index.ts
│       │       ├── useWindowSize.demo.tsx
│       │       ├── useWindowSize.md
│       │       ├── useWindowSize.test.ts
│       │       └── useWindowSize.ts
│       ├── tests/
│       │   ├── mocks.ts
│       │   └── setup.ts
│       ├── tsconfig.json
│       ├── tsup.config.ts
│       └── vitest.config.ts
├── pnpm-workspace.yaml
├── renovate.json
├── scripts/
│   ├── env.js
│   ├── generate-doc.js
│   ├── update-algolia-index.js
│   ├── update-testing-issue.js
│   └── utils/
│       ├── data-transform.js
│       ├── generate-doc-files.js
│       ├── get-hooks.js
│       ├── get-markdown-data.js
│       └── update-readme.js
├── turbo/
│   └── generators/
│       ├── config.cts
│       └── templates/
│           ├── hook/
│           │   ├── hook.demo.tsx.hbs
│           │   ├── hook.mdx.hbs
│           │   ├── hook.test.ts.hbs
│           │   ├── hook.ts.hbs
│           │   └── index.ts.hbs
│           └── index.ts.hbs
├── turbo.json
└── typedoc.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .all-contributorsrc
================================================
{
  "projectName": "usehooks-ts",
  "projectOwner": "juliencrn",
  "repoType": "github",
  "repoHost": "https://github.com",
  "files": [
    ".github/CONTRIBUTING.md",
    "README.md",
    "packages/usehooks-ts/README.md"
  ],
  "imageSize": 64,
  "commit": false,
  "commitConvention": "none",
  "contributors": [
    {
      "login": "juliencrn",
      "name": "Julien",
      "avatar_url": "https://avatars.githubusercontent.com/u/14028029?v=4",
      "profile": "https://github.com/juliencrn",
      "contributions": ["content", "code", "design", "ideas"]
    },
    {
      "login": "a777med",
      "name": "a777med",
      "avatar_url": "https://avatars.githubusercontent.com/u/15968280?v=4",
      "profile": "https://github.com/a777med",
      "contributions": ["code"]
    },
    {
      "login": "datkira",
      "name": "Nguyen Tien Dat",
      "avatar_url": "https://avatars.githubusercontent.com/u/53250212?v=4",
      "profile": "https://datkira.com/",
      "contributions": ["code"]
    },
    {
      "login": "elifer5000",
      "name": "Elias Cohenca",
      "avatar_url": "https://avatars.githubusercontent.com/u/4311278?v=4",
      "profile": "https://github.com/elifer5000",
      "contributions": ["content"]
    },
    {
      "login": "joaoderoldo",
      "name": "João Deroldo",
      "avatar_url": "https://avatars.githubusercontent.com/u/17601527?v=4",
      "profile": "http://joaov.com.br/",
      "contributions": ["bug", "code"]
    },
    {
      "login": "Nishit-Dua",
      "name": "Nishit",
      "avatar_url": "https://avatars.githubusercontent.com/u/35453301?v=4",
      "profile": "https://github.com/Nishit-Dua",
      "contributions": ["code"]
    },
    {
      "login": "jonkoops",
      "name": "Jon Koops",
      "avatar_url": "https://avatars.githubusercontent.com/u/695720?v=4",
      "profile": "https://github.com/jonkoops",
      "contributions": ["code"]
    },
    {
      "login": "LoneRifle",
      "name": "LoneRifle",
      "avatar_url": "https://avatars.githubusercontent.com/u/10572368?v=4",
      "profile": "https://github.com/LoneRifle",
      "contributions": ["code"]
    },
    {
      "login": "vfonic",
      "name": "Viktor",
      "avatar_url": "https://avatars.githubusercontent.com/u/67437?v=4",
      "profile": "https://github.com/vfonic",
      "contributions": ["ideas", "bug"]
    },
    {
      "login": "bclermont",
      "name": "Bruno Clermont",
      "avatar_url": "https://avatars.githubusercontent.com/u/474302?v=4",
      "profile": "https://github.com/bclermont",
      "contributions": ["question"]
    },
    {
      "login": "yoannesbourg",
      "name": "yoannesbourg",
      "avatar_url": "https://avatars.githubusercontent.com/u/73404603?v=4",
      "profile": "https://github.com/yoannesbourg",
      "contributions": ["ideas"]
    },
    {
      "login": "strange2x",
      "name": "Strange2x",
      "avatar_url": "https://avatars.githubusercontent.com/u/10759731?v=4",
      "profile": "https://github.com/strange2x",
      "contributions": ["ideas"]
    },
    {
      "login": "steinybot",
      "name": "Jason Pickens",
      "avatar_url": "https://avatars.githubusercontent.com/u/4659562?v=4",
      "profile": "https://github.com/steinybot",
      "contributions": ["bug"]
    },
    {
      "login": "selvinkuik",
      "name": "Sel-Vin Kuik",
      "avatar_url": "https://avatars.githubusercontent.com/u/3469560?v=4",
      "profile": "http://smackagency.com/",
      "contributions": ["bug"]
    },
    {
      "login": "isaacalves",
      "name": "isaac",
      "avatar_url": "https://avatars.githubusercontent.com/u/1765942?v=4",
      "profile": "https://github.com/isaacalves",
      "contributions": ["bug"]
    },
    {
      "login": "brunorzn",
      "name": "Bruno RZN",
      "avatar_url": "https://avatars.githubusercontent.com/u/18266054?v=4",
      "profile": "https://github.com/brunorzn",
      "contributions": ["code", "review"]
    },
    {
      "login": "Cykelero",
      "name": "Nathan Manceaux-Panot",
      "avatar_url": "https://avatars.githubusercontent.com/u/2979318?v=4",
      "profile": "http://www.cykeprojects.com/",
      "contributions": ["code", "review"]
    },
    {
      "login": "meotimdihia",
      "name": "Dien Vu",
      "avatar_url": "https://avatars.githubusercontent.com/u/300961?v=4",
      "profile": "https://github.com/meotimdihia",
      "contributions": ["ideas"]
    },
    {
      "login": "olegKusov",
      "name": "Oleg Kusov",
      "avatar_url": "https://avatars.githubusercontent.com/u/28058268?v=4",
      "profile": "https://github.com/olegKusov",
      "contributions": ["ideas"]
    },
    {
      "login": "mankittens",
      "name": "Matthew Guy",
      "avatar_url": "https://avatars.githubusercontent.com/u/6647355?v=4",
      "profile": "http://mattguy.me/",
      "contributions": ["ideas"]
    },
    {
      "login": "andrewbihl",
      "name": "andrewbihl",
      "avatar_url": "https://avatars.githubusercontent.com/u/16709744?v=4",
      "profile": "https://github.com/andrewbihl",
      "contributions": ["bug"]
    },
    {
      "login": "lancepollard",
      "name": "lancepollard",
      "avatar_url": "https://avatars.githubusercontent.com/u/86631222?v=4",
      "profile": "https://github.com/lancepollard",
      "contributions": ["bug"]
    },
    {
      "login": "gmukul01",
      "name": "Mukul Bansal",
      "avatar_url": "https://avatars.githubusercontent.com/u/3636885?v=4",
      "profile": "https://github.com/gmukul01",
      "contributions": ["bug"]
    },
    {
      "login": "jeanlucmongrain",
      "name": "Jean-Luc Mongrain sur la Brosse",
      "avatar_url": "https://avatars.githubusercontent.com/u/474302?v=4",
      "profile": "http://127.0.0.1:8000/",
      "contributions": ["code", "ideas"]
    },
    {
      "login": "n1c",
      "name": "Nic",
      "avatar_url": "https://avatars.githubusercontent.com/u/284075?v=4",
      "profile": "https://github.com/n1c",
      "contributions": ["content"]
    },
    {
      "login": "valtism",
      "name": "Dan Wood",
      "avatar_url": "https://avatars.githubusercontent.com/u/1286001?v=4",
      "profile": "http://valtism.com/",
      "contributions": ["code"]
    },
    {
      "login": "Wendenburg",
      "name": "jo wendenbuerger",
      "avatar_url": "https://avatars.githubusercontent.com/u/25299148?v=4",
      "profile": "http://www.sixt.de/",
      "contributions": ["bug"]
    },
    {
      "login": "noseratio",
      "name": "Andrew Nosenko",
      "avatar_url": "https://avatars.githubusercontent.com/u/4774875?v=4",
      "profile": "https://nozillium.com/",
      "contributions": ["bug"]
    },
    {
      "login": "CharlieJhonSmith",
      "name": "CharlieJhonSmith",
      "avatar_url": "https://avatars.githubusercontent.com/u/90845154?v=4",
      "profile": "https://github.com/CharlieJhonSmith",
      "contributions": ["code"]
    },
    {
      "login": "soullivaneuh",
      "name": "Sullivan SENECHAL",
      "avatar_url": "https://avatars.githubusercontent.com/u/1698357?v=4",
      "profile": "https://keybase.io/soullivaneuh",
      "contributions": ["ideas", "bug", "code"]
    },
    {
      "login": "jaslong",
      "name": "Jason Long",
      "avatar_url": "https://avatars.githubusercontent.com/u/797348?v=4",
      "profile": "https://github.com/jaslong",
      "contributions": ["bug"]
    },
    {
      "login": "kxm766",
      "name": "kxm766",
      "avatar_url": "https://avatars.githubusercontent.com/u/88443148?v=4",
      "profile": "https://github.com/kxm766",
      "contributions": ["bug"]
    },
    {
      "login": "qlaffont",
      "name": "Quentin",
      "avatar_url": "https://avatars.githubusercontent.com/u/10044790?v=4",
      "profile": "http://qlaffont.com/",
      "contributions": ["code", "ideas", "content"]
    },
    {
      "login": "ducktordanny",
      "name": "Daniel Lazar",
      "avatar_url": "https://avatars.githubusercontent.com/u/38068717?v=4",
      "profile": "https://github.com/ducktordanny",
      "contributions": ["code", "bug"]
    },
    {
      "login": "mterrel",
      "name": "Mark Terrel",
      "avatar_url": "https://avatars.githubusercontent.com/u/17746857?v=4",
      "profile": "https://github.com/mterrel",
      "contributions": ["bug", "code"]
    },
    {
      "login": "mendrik",
      "name": "Andreas Herd",
      "avatar_url": "https://avatars.githubusercontent.com/u/160805?v=4",
      "profile": "https://github.com/mendrik",
      "contributions": ["bug"]
    },
    {
      "login": "sonjoydatta",
      "name": "Sonjoy Datta",
      "avatar_url": "https://avatars.githubusercontent.com/u/49079726?v=4",
      "profile": "https://sonjoydatta.me/",
      "contributions": ["code"]
    },
    {
      "login": "oluckyman",
      "name": "Ilya Belsky",
      "avatar_url": "https://avatars.githubusercontent.com/u/642673?v=4",
      "profile": "https://github.com/oluckyman",
      "contributions": ["bug"]
    },
    {
      "login": "JamesBarrettDev",
      "name": "James Barrett",
      "avatar_url": "https://avatars.githubusercontent.com/u/42980207?v=4",
      "profile": "https://jamesbarrett.io/",
      "contributions": ["code"]
    },
    {
      "login": "AbbalYouness",
      "name": "AbbalYouness",
      "avatar_url": "https://avatars.githubusercontent.com/u/15120524?v=4",
      "profile": "https://github.com/AbbalYouness",
      "contributions": ["code"]
    },
    {
      "login": "DidrikLind",
      "name": "didriklind",
      "avatar_url": "https://avatars.githubusercontent.com/u/14201715?v=4",
      "profile": "https://github.com/DidrikLind",
      "contributions": ["code", "test"]
    },
    {
      "login": "hexp1989",
      "name": "hexp1989",
      "avatar_url": "https://avatars.githubusercontent.com/u/2241985?v=4",
      "profile": "https://github.com/hexp1989",
      "contributions": ["code"]
    },
    {
      "login": "alvaroserrrano",
      "name": "Alvaro Serrano",
      "avatar_url": "https://avatars.githubusercontent.com/u/43758471?v=4",
      "profile": "https://www.linkedin.com/in/alvaro-serrano-rivas/",
      "contributions": ["content"]
    },
    {
      "login": "egehandulger",
      "name": "Egehan Dülger",
      "avatar_url": "https://avatars.githubusercontent.com/u/14878259?v=4",
      "profile": "https://github.com/egehandulger",
      "contributions": ["code"]
    },
    {
      "login": "PabloLION",
      "name": "PabloLION",
      "avatar_url": "https://avatars.githubusercontent.com/u/36828324?v=4",
      "profile": "https://github.com/PabloLION",
      "contributions": ["bug", "code"]
    },
    {
      "login": "emulienfou",
      "name": "David Sanchez",
      "avatar_url": "https://avatars.githubusercontent.com/u/84061?v=4",
      "profile": "https://davidsanchez.me/",
      "contributions": ["bug"]
    },
    {
      "login": "AjayTheWizard",
      "name": "Ajay Raja",
      "avatar_url": "https://avatars.githubusercontent.com/u/92772740?v=4",
      "profile": "https://github.com/AjayTheWizard",
      "contributions": ["bug"]
    },
    {
      "login": "docmars",
      "name": "Andy Merskin",
      "avatar_url": "https://avatars.githubusercontent.com/u/758090?v=4",
      "profile": "http://andymerskin.com/",
      "contributions": ["ideas"]
    },
    {
      "login": "GrayGalaxy",
      "name": "Avirup Ghosh",
      "avatar_url": "https://avatars.githubusercontent.com/u/49820575?v=4",
      "profile": "https://github.com/GrayGalaxy",
      "contributions": ["code", "bug"]
    },
    {
      "login": "tilnea",
      "name": "Sanne Wintrén",
      "avatar_url": "https://avatars.githubusercontent.com/u/3692320?v=4",
      "profile": "https://github.com/tilnea",
      "contributions": ["bug"]
    },
    {
      "login": "a-barbieri",
      "name": "Alessandro",
      "avatar_url": "https://avatars.githubusercontent.com/u/1528468?v=4",
      "profile": "http://lacolonia.studio/",
      "contributions": ["bug"]
    },
    {
      "login": "atatarenko",
      "name": "Andrey Tatarenko",
      "avatar_url": "https://avatars.githubusercontent.com/u/9846273?v=4",
      "profile": "https://github.com/atatarenko",
      "contributions": ["bug"]
    },
    {
      "login": "arusak",
      "name": "Anton Rusak",
      "avatar_url": "https://avatars.githubusercontent.com/u/4231915?v=4",
      "profile": "https://github.com/arusak",
      "contributions": ["bug"]
    },
    {
      "login": "createdbymahmood",
      "name": "Mahmood Bagheri",
      "avatar_url": "https://avatars.githubusercontent.com/u/40164360?v=4",
      "profile": "https://github.com/createdbymahmood",
      "contributions": ["code"]
    },
    {
      "login": "anver",
      "name": "Anver Sadutt",
      "avatar_url": "https://avatars.githubusercontent.com/u/506491?v=4",
      "profile": "https://wpowner.com/",
      "contributions": ["content"]
    },
    {
      "login": "bogdanailincaipnt",
      "name": "Bogdan Ailincai",
      "avatar_url": "https://avatars.githubusercontent.com/u/93596663?v=4",
      "profile": "https://github.com/bogdanailincaipnt",
      "contributions": ["code"]
    },
    {
      "login": "SimeonGriggs",
      "name": "Simeon Griggs",
      "avatar_url": "https://avatars.githubusercontent.com/u/9684022?v=4",
      "profile": "https://github.com/SimeonGriggs",
      "contributions": ["bug"]
    },
    {
      "login": "Kepro",
      "name": "Kepro",
      "avatar_url": "https://avatars.githubusercontent.com/u/1714370?v=4",
      "profile": "https://github.com/Kepro",
      "contributions": ["bug"]
    },
    {
      "login": "Jake-Lippert",
      "name": "Jake Lippert",
      "avatar_url": "https://avatars.githubusercontent.com/u/17753127?v=4",
      "profile": "https://github.com/Jake-Lippert",
      "contributions": ["bug"]
    },
    {
      "login": "TunA-Kai",
      "name": "Tu Nguyen Anh",
      "avatar_url": "https://avatars.githubusercontent.com/u/92641762?v=4",
      "profile": "https://github.com/TunA-Kai",
      "contributions": ["bug", "code"]
    },
    {
      "login": "skve",
      "name": "Luke Shiels",
      "avatar_url": "https://avatars.githubusercontent.com/u/47612057?v=4",
      "profile": "https://github.com/skve",
      "contributions": ["bug"]
    },
    {
      "login": "SleLLl",
      "name": "Sergei Kolyago",
      "avatar_url": "https://avatars.githubusercontent.com/u/66108429?v=4",
      "profile": "https://github.com/SleLLl",
      "contributions": ["ideas"]
    },
    {
      "login": "adhamaa",
      "name": "Adham Akmal Azmi",
      "avatar_url": "https://avatars.githubusercontent.com/u/50027371?v=4",
      "profile": "https://github.com/adhamaa",
      "contributions": ["bug"]
    },
    {
      "login": "alex-kowalczyk",
      "name": "Alek Kowalczyk",
      "avatar_url": "https://avatars.githubusercontent.com/u/7422175?v=4",
      "profile": "https://github.com/alex-kowalczyk",
      "contributions": ["bug"]
    },
    {
      "login": "Scalahansolo",
      "name": "Sean Callahan",
      "avatar_url": "https://avatars.githubusercontent.com/u/4317253?v=4",
      "profile": "https://github.com/Scalahansolo",
      "contributions": ["bug"]
    },
    {
      "login": "jbean96",
      "name": "Joshua Bean",
      "avatar_url": "https://avatars.githubusercontent.com/u/22803097?v=4",
      "profile": "https://github.com/jbean96",
      "contributions": ["code", "bug"]
    },
    {
      "login": "ZhaoTim",
      "name": "Tim Zhao",
      "avatar_url": "https://avatars.githubusercontent.com/u/30540533?v=4",
      "profile": "https://github.com/ZhaoTim",
      "contributions": ["bug"]
    },
    {
      "login": "patryk-smc",
      "name": "Patrick",
      "avatar_url": "https://avatars.githubusercontent.com/u/37963339?v=4",
      "profile": "https://github.com/patryk-smc",
      "contributions": ["bug"]
    },
    {
      "login": "brycedorn",
      "name": "Bryce Dorn",
      "avatar_url": "https://avatars.githubusercontent.com/u/3171252?v=4",
      "profile": "https://bryce.io/",
      "contributions": ["code"]
    },
    {
      "login": "angusd3v",
      "name": "angusd3v",
      "avatar_url": "https://avatars.githubusercontent.com/u/52683145?v=4",
      "profile": "https://github.com/angusd3v",
      "contributions": ["code"]
    },
    {
      "login": "ddisimone",
      "name": "Davide Di Simone",
      "avatar_url": "https://avatars.githubusercontent.com/u/78792352?v=4",
      "profile": "https://github.com/ddisimone",
      "contributions": ["bug"]
    },
    {
      "login": "jherr",
      "name": "Jack Herrington",
      "avatar_url": "https://avatars.githubusercontent.com/u/22392?v=4",
      "profile": "https://github.com/jherr",
      "contributions": ["bug"]
    },
    {
      "login": "sharvit",
      "name": "Avi Sharvit",
      "avatar_url": "https://avatars.githubusercontent.com/u/1262502?v=4",
      "profile": "https://sharvit.github.io/",
      "contributions": ["code", "bug"]
    },
    {
      "login": "nmaties",
      "name": "Nicolae Maties",
      "avatar_url": "https://avatars.githubusercontent.com/u/16613184?v=4",
      "profile": "https://github.com/nmaties",
      "contributions": ["bug"]
    },
    {
      "login": "secretshardul",
      "name": "Shardul Aeer",
      "avatar_url": "https://avatars.githubusercontent.com/u/49580849?v=4",
      "profile": "https://github.com/secretshardul",
      "contributions": ["bug"]
    },
    {
      "login": "herlon214",
      "name": "Herlon Aguiar",
      "avatar_url": "https://avatars.githubusercontent.com/u/3419441?v=4",
      "profile": "https://github.com/herlon214",
      "contributions": ["bug"]
    },
    {
      "login": "alexisoney",
      "name": "Alexis Oney",
      "avatar_url": "https://avatars.githubusercontent.com/u/28802989?v=4",
      "profile": "https://github.com/alexisoney",
      "contributions": ["content"]
    },
    {
      "login": "curtvict",
      "name": "curtvict",
      "avatar_url": "https://avatars.githubusercontent.com/u/96080054?v=4",
      "profile": "https://convictional.com/",
      "contributions": ["code"]
    },
    {
      "login": "JoshuaCS94",
      "name": "Josué Cortina",
      "avatar_url": "https://avatars.githubusercontent.com/u/23385700?v=4",
      "profile": "https://github.com/JoshuaCS94",
      "contributions": ["content"]
    },
    {
      "login": "KATT",
      "name": "Alex / KATT",
      "avatar_url": "https://avatars.githubusercontent.com/u/459267?v=4",
      "profile": "https://katt.dev/",
      "contributions": ["code"]
    },
    {
      "login": "modex98",
      "name": "Mourad EL CADI",
      "avatar_url": "https://avatars.githubusercontent.com/u/72814784?v=4",
      "profile": "https://github.com/modex98",
      "contributions": ["code", "bug"]
    },
    {
      "login": "Guesswhoitis",
      "name": "James Hulena",
      "avatar_url": "https://avatars.githubusercontent.com/u/63756285?v=4",
      "profile": "https://github.com/Guesswhoitis",
      "contributions": ["bug"]
    },
    {
      "login": "hailwood",
      "name": "Matthew Hailwood",
      "avatar_url": "https://avatars.githubusercontent.com/u/709773?v=4",
      "profile": "http://hailwood.nz/",
      "contributions": ["code", "review"]
    },
    {
      "login": "mike247",
      "name": "Michael Norrie",
      "avatar_url": "https://avatars.githubusercontent.com/u/676071?v=4",
      "profile": "https://github.com/mike247",
      "contributions": ["bug"]
    },
    {
      "login": "valentinpolitov",
      "name": "Valentin Politov",
      "avatar_url": "https://avatars.githubusercontent.com/u/39585375?v=4",
      "profile": "https://github.com/valentinpolitov",
      "contributions": ["code"]
    },
    {
      "login": "marnusw",
      "name": "Marnus Weststrate",
      "avatar_url": "https://avatars.githubusercontent.com/u/971499?v=4",
      "profile": "https://github.com/marnusw",
      "contributions": ["code"]
    },
    {
      "login": "mancuoj",
      "name": "mancuoj",
      "avatar_url": "https://avatars.githubusercontent.com/u/45707684?v=4",
      "profile": "https://github.com/mancuoj",
      "contributions": ["content"]
    },
    {
      "login": "jcsumlin",
      "name": "Chat Sumlin",
      "avatar_url": "https://avatars.githubusercontent.com/u/3067479?v=4",
      "profile": "https://www.chatsumlin.com/",
      "contributions": ["code"]
    },
    {
      "login": "owenshaupt",
      "name": "Owen Haupt",
      "avatar_url": "https://avatars.githubusercontent.com/u/52288188?v=4",
      "profile": "https://github.com/owenshaupt",
      "contributions": ["bug", "content"]
    },
    {
      "login": "ubarbaxor",
      "name": "ubarbaxor",
      "avatar_url": "https://avatars.githubusercontent.com/u/26365493?v=4",
      "profile": "https://github.com/ubarbaxor",
      "contributions": ["code"]
    },
    {
      "login": "michaelmior",
      "name": "Michael Mior",
      "avatar_url": "https://avatars.githubusercontent.com/u/82501?v=4",
      "profile": "https://michael.mior.ca/",
      "contributions": ["bug", "content"]
    },
    {
      "login": "pkhodaveissi",
      "name": "Pierre",
      "avatar_url": "https://avatars.githubusercontent.com/u/4170795?v=4",
      "profile": "https://github.com/pkhodaveissi",
      "contributions": ["code"]
    },
    {
      "login": "harrywebdev",
      "name": "Harry B",
      "avatar_url": "https://avatars.githubusercontent.com/u/3617415?v=4",
      "profile": "https://github.com/harrywebdev",
      "contributions": ["bug"]
    },
    {
      "login": "valyrie97",
      "name": "Valerie",
      "avatar_url": "https://avatars.githubusercontent.com/u/6365746?v=4",
      "profile": "https://github.com/valyrie97",
      "contributions": ["bug", "code"]
    },
    {
      "login": "stevenvachon",
      "name": "Steven Vachon",
      "avatar_url": "https://avatars.githubusercontent.com/u/170197?v=4",
      "profile": "https://svachon.com/",
      "contributions": ["code"]
    },
    {
      "login": "sskirby",
      "name": "Sean Kirby",
      "avatar_url": "https://avatars.githubusercontent.com/u/25760?v=4",
      "profile": "https://github.com/sskirby",
      "contributions": ["test", "code"]
    },
    {
      "login": "AlecsFarias",
      "name": "Alecsander Farias",
      "avatar_url": "https://avatars.githubusercontent.com/u/91743821?v=4",
      "profile": "https://github.com/AlecsFarias",
      "contributions": ["code"]
    },
    {
      "login": "BlankParticle",
      "name": "Rahul Mishra",
      "avatar_url": "https://avatars.githubusercontent.com/u/130567419?v=4",
      "profile": "https://blankparticle.in/",
      "contributions": ["code", "review", "content"]
    },
    {
      "login": "bryantcodesart",
      "name": "Bryant Smith",
      "avatar_url": "https://avatars.githubusercontent.com/u/14097078?v=4",
      "profile": "https://github.com/bryantcodesart",
      "contributions": ["code", "bug"]
    },
    {
      "login": "RobHannay",
      "name": "Rob Hannay",
      "avatar_url": "https://avatars.githubusercontent.com/u/609062?v=4",
      "profile": "https://github.com/RobHannay",
      "contributions": ["code"]
    },
    {
      "login": "hooriza",
      "name": "Hooriza",
      "avatar_url": "https://avatars.githubusercontent.com/u/507927?v=4",
      "profile": "https://github.com/hooriza",
      "contributions": ["code", "bug"]
    },
    {
      "login": "ShanSenanayake",
      "name": "ShanSenanayake",
      "avatar_url": "https://avatars.githubusercontent.com/u/8779685?v=4",
      "profile": "https://github.com/ShanSenanayake",
      "contributions": ["code"]
    },
    {
      "login": "philipgher",
      "name": "Philip Ghering",
      "avatar_url": "https://avatars.githubusercontent.com/u/32325241?v=4",
      "profile": "https://github.com/philipgher",
      "contributions": ["code"]
    },
    {
      "login": "ladislasdellinger",
      "name": "Ladislas Dellinger",
      "avatar_url": "https://avatars.githubusercontent.com/u/111739019?v=4",
      "profile": "https://github.com/ladislasdellinger",
      "contributions": ["code"]
    },
    {
      "login": "TheHaff",
      "name": "Haff",
      "avatar_url": "https://avatars.githubusercontent.com/u/2486653?v=4",
      "profile": "https://github.com/TheHaff",
      "contributions": ["code"]
    },
    {
      "login": "lisandro52",
      "name": "Lisandro",
      "avatar_url": "https://avatars.githubusercontent.com/u/5612241?v=4",
      "profile": "https://github.com/lisandro52",
      "contributions": ["code"]
    },
    {
      "login": "amirking59",
      "name": "Amir hossein rezaei",
      "avatar_url": "https://avatars.githubusercontent.com/u/58273240?v=4",
      "profile": "https://github.com/amirking59",
      "contributions": ["code"]
    },
    {
      "login": "nmacianx",
      "name": "Nicolas Macian",
      "avatar_url": "https://avatars.githubusercontent.com/u/40004186?v=4",
      "profile": "https://github.com/nmacianx",
      "contributions": ["bug", "code"]
    },
    {
      "login": "nateforsyth",
      "name": "Nate Forsyth",
      "avatar_url": "https://avatars.githubusercontent.com/u/13162026?v=4",
      "profile": "https://dreamsof.dev/",
      "contributions": ["code"]
    },
    {
      "login": "satelllte",
      "name": "satelllte",
      "avatar_url": "https://avatars.githubusercontent.com/u/20585619?v=4",
      "profile": "https://github.com/satelllte",
      "contributions": ["code", "bug"]
    },
    {
      "login": "fedemp",
      "name": "Federico Panico",
      "avatar_url": "https://avatars.githubusercontent.com/u/735314?v=4",
      "profile": "https://github.com/fedemp",
      "contributions": ["code"]
    },
    {
      "login": "iamwillnbcu",
      "name": "William Pei Yuan",
      "avatar_url": "https://avatars.githubusercontent.com/u/137317773?v=4",
      "profile": "https://github.com/iamwillnbcu",
      "contributions": ["code"]
    },
    {
      "login": "DarkAng3L",
      "name": "Mihai",
      "avatar_url": "https://avatars.githubusercontent.com/u/757999?v=4",
      "profile": "http://www.gazeta-cu-anunturi.ro/",
      "contributions": ["code", "bug"]
    },
    {
      "login": "ogunsolahabib",
      "name": "Habib Ogunsola",
      "avatar_url": "https://avatars.githubusercontent.com/u/39172573?v=4",
      "profile": "https://habib.ogunsola.me/",
      "contributions": ["content"]
    },
    {
      "login": "ashfurrow",
      "name": "Ash Furrow",
      "avatar_url": "https://avatars.githubusercontent.com/u/498212?v=4",
      "profile": "https://ashfurrow.com/",
      "contributions": ["code"]
    },
    {
      "login": "danielturus",
      "name": "Daniel Turuș",
      "avatar_url": "https://avatars.githubusercontent.com/u/32390499?v=4",
      "profile": "https://turus.ro/",
      "contributions": ["code"]
    },
    {
      "login": "rahulchaudhary2244",
      "name": "Rahul Chaudhary",
      "avatar_url": "https://avatars.githubusercontent.com/u/54467972?v=4",
      "profile": "https://www.linkedin.com/in/rahulchaudhary2244/",
      "contributions": ["content", "bug"]
    },
    {
      "login": "Joshyahweh",
      "name": "Joshua Ojoawo",
      "avatar_url": "https://avatars.githubusercontent.com/u/61137067?v=4",
      "profile": "https://github.com/Joshyahweh",
      "contributions": ["ideas", "bug"]
    },
    {
      "login": "jackdh",
      "name": "Jack",
      "avatar_url": "https://avatars.githubusercontent.com/u/1907451?v=4",
      "profile": "https://jackdh.com/",
      "contributions": ["code"]
    },
    {
      "login": "jonlinkens",
      "name": "Jon Linkens",
      "avatar_url": "https://avatars.githubusercontent.com/u/20417521?v=4",
      "profile": "https://github.com/jonlinkens",
      "contributions": ["code", "bug"]
    },
    {
      "login": "ojj1123",
      "name": "Jeongjin Oh",
      "avatar_url": "https://avatars.githubusercontent.com/u/33178048?v=4",
      "profile": "https://velog.io/@ojj1123",
      "contributions": ["bug"]
    },
    {
      "login": "tli26",
      "name": "Tianning Li",
      "avatar_url": "https://avatars.githubusercontent.com/u/114947190?v=4",
      "profile": "https://github.com/tli26",
      "contributions": ["code"]
    },
    {
      "login": "LarsArtmann",
      "name": "Lars Artmann",
      "avatar_url": "https://avatars.githubusercontent.com/u/23587853?v=4",
      "profile": "https://larsartmann.com/",
      "contributions": ["content"]
    },
    {
      "login": "KBobovskiy",
      "name": "KBobovskiy",
      "avatar_url": "https://avatars.githubusercontent.com/u/35502578?v=4",
      "profile": "https://github.com/KBobovskiy",
      "contributions": ["code"]
    },
    {
      "login": "ryngonzalez",
      "name": "✨ Kathryn Gonzalez ✨",
      "avatar_url": "https://avatars.githubusercontent.com/u/635300?v=4",
      "profile": "https://github.com/ryngonzalez",
      "contributions": ["content"]
    },
    {
      "login": "slavik-chapelskyi",
      "name": "Yaroslav Chapelskyi",
      "avatar_url": "https://avatars.githubusercontent.com/u/33541009?v=4",
      "profile": "https://github.com/slavik-chapelskyi",
      "contributions": ["content"]
    },
    {
      "login": "sverps",
      "name": "Samuel Van Erps",
      "avatar_url": "https://avatars.githubusercontent.com/u/15879327?v=4",
      "profile": "https://github.com/sverps",
      "contributions": ["review"]
    },
    {
      "login": "ojolowoblue",
      "name": "ojolowoblue",
      "avatar_url": "https://avatars.githubusercontent.com/u/104099474?v=4",
      "profile": "https://github.com/ojolowoblue",
      "contributions": ["content"]
    },
    {
      "login": "gugu",
      "name": "Andrii Kostenko",
      "avatar_url": "https://avatars.githubusercontent.com/u/75169?v=4",
      "profile": "http://short.io/",
      "contributions": ["code"]
    },
    {
      "login": "AkeemAllen",
      "name": "Akeem Allen",
      "avatar_url": "https://avatars.githubusercontent.com/u/32404761?v=4",
      "profile": "https://github.com/AkeemAllen",
      "contributions": ["code", "bug"]
    },
    {
      "login": "trongbinh15",
      "name": "trongbinhnguyen",
      "avatar_url": "https://avatars.githubusercontent.com/u/43725147?v=4",
      "profile": "https://github.com/trongbinh15",
      "contributions": ["content"]
    },
    {
      "login": "lawlesx",
      "name": "Aniruddha Sil",
      "avatar_url": "https://avatars.githubusercontent.com/u/52166437?v=4",
      "profile": "https://lawlesx.vercel.app/",
      "contributions": ["code"]
    },
    {
      "login": "okinawaa",
      "name": "박찬혁",
      "avatar_url": "https://avatars.githubusercontent.com/u/69495129?v=4",
      "profile": "https://github.com/okinawaa",
      "contributions": ["review"]
    },
    {
      "login": "novanish",
      "name": "Anish",
      "avatar_url": "https://avatars.githubusercontent.com/u/98446102?v=4",
      "profile": "https://anishchhetri.com.np/",
      "contributions": ["code"]
    },
    {
      "login": "hugohutri",
      "name": "Hugo Hutri",
      "avatar_url": "https://avatars.githubusercontent.com/u/55588133?v=4",
      "profile": "https://hutri.fi/",
      "contributions": ["content"]
    },
    {
      "login": "BalzGuenat",
      "name": "Balz Guenat",
      "avatar_url": "https://avatars.githubusercontent.com/u/6719014?v=4",
      "profile": "http://balzguenat.ch/",
      "contributions": ["code"]
    },
    {
      "login": "ottergeorge",
      "name": "OtterGeorge",
      "avatar_url": "https://avatars.githubusercontent.com/u/108759685?v=4",
      "profile": "https://github.com/ottergeorge",
      "contributions": ["code"]
    },
    {
      "login": "samay-rgb",
      "name": "Samay Sagar",
      "avatar_url": "https://avatars.githubusercontent.com/u/73112080?v=4",
      "profile": "https://github.com/samay-rgb",
      "contributions": ["content"]
    },
    {
      "login": "pedrobslisboa",
      "name": "Pedro Lisboa",
      "avatar_url": "https://avatars.githubusercontent.com/u/35539594?v=4",
      "profile": "https://github.com/pedrobslisboa",
      "contributions": ["bug"]
    },
    {
      "login": "henriqemalheiros",
      "name": "Henrique Malheiros",
      "avatar_url": "https://avatars.githubusercontent.com/u/23730762?v=4",
      "profile": "https://github.com/henriqemalheiros",
      "contributions": ["bug"]
    },
    {
      "login": "CaptainN",
      "name": "Kevin Newman",
      "avatar_url": "https://avatars.githubusercontent.com/u/245825?v=4",
      "profile": "http://www.unfocus.com/",
      "contributions": ["code"]
    },
    {
      "login": "a503189",
      "name": "a503189",
      "avatar_url": "https://avatars.githubusercontent.com/u/28802989?v=4",
      "profile": "https://github.com/a503189",
      "contributions": ["content"]
    },
    {
      "login": "mod7ex",
      "name": "Mourad EL CADI",
      "avatar_url": "https://avatars.githubusercontent.com/u/72814784?v=4",
      "profile": "https://t.me/mouradelcadi",
      "contributions": ["code"]
    },
    {
      "login": "Lop3sPedro",
      "name": "Pedro Henrique Lopes",
      "avatar_url": "https://avatars.githubusercontent.com/u/89090945?v=4",
      "profile": "https://github.com/Lop3sPedro",
      "contributions": ["code"]
    },
    {
      "login": "danbiilee",
      "name": "Danbi Lee",
      "avatar_url": "https://avatars.githubusercontent.com/u/53761241?v=4",
      "profile": "https://github.com/danbiilee",
      "contributions": ["code"]
    },
    {
      "login": "cojennin",
      "name": "Connor Jennings",
      "avatar_url": "https://avatars.githubusercontent.com/u/1888152?v=4",
      "profile": "https://github.com/cojennin",
      "contributions": ["code"]
    },
    {
      "login": "lgxm3z",
      "name": "Lucas Gomes",
      "avatar_url": "https://avatars.githubusercontent.com/u/28831375?v=4",
      "profile": "https://github.com/lgxm3z",
      "contributions": ["bug", "code"]
    },
    {
      "login": "zaggino",
      "name": "Martin Zagora",
      "avatar_url": "https://avatars.githubusercontent.com/u/1067319?v=4",
      "profile": "https://github.com/zaggino",
      "contributions": ["code"]
    },
    {
      "login": "kvdo2",
      "name": "KvD",
      "avatar_url": "https://avatars.githubusercontent.com/u/78251524?v=4",
      "profile": "https://github.com/kvdo2",
      "contributions": ["code"]
    },
    {
      "login": "SupraSmooth",
      "name": "Alex",
      "avatar_url": "https://avatars.githubusercontent.com/u/18029247?v=4",
      "profile": "https://github.com/SupraSmooth",
      "contributions": ["code"]
    },
    {
      "login": "kaceycleveland",
      "name": "Kacey Cleveland",
      "avatar_url": "https://avatars.githubusercontent.com/u/88064187?v=4",
      "profile": "https://github.com/kaceycleveland",
      "contributions": ["review"]
    },
    {
      "login": "oviirup",
      "name": "Avirup Ghosh",
      "avatar_url": "https://avatars.githubusercontent.com/u/49820575?v=4",
      "profile": "https://github.com/oviirup",
      "contributions": ["bug"]
    },
    {
      "login": "yabbal",
      "name": "yabbal",
      "avatar_url": "https://avatars.githubusercontent.com/u/15120524?v=4",
      "profile": "https://github.com/yabbal",
      "contributions": ["code"]
    },
    {
      "login": "patik",
      "name": "Craig Patik",
      "avatar_url": "https://avatars.githubusercontent.com/u/262137?v=4",
      "profile": "https://patik.com/",
      "contributions": ["bug"]
    },
    {
      "login": "Silverium",
      "name": "Soldeplata Saketos Candela",
      "avatar_url": "https://avatars.githubusercontent.com/u/10578392?v=4",
      "profile": "https://github.com/Silverium",
      "contributions": ["code"]
    },
    {
      "login": "TENDOUZHI",
      "name": "TENDOUZHI",
      "avatar_url": "https://avatars.githubusercontent.com/u/82806526?v=4",
      "profile": "https://github.com/TENDOUZHI",
      "contributions": ["bug"]
    },
    {
      "login": "wachulski",
      "name": "Marcin Wachulski",
      "avatar_url": "https://avatars.githubusercontent.com/u/1669844?v=4",
      "profile": "https://github.com/wachulski",
      "contributions": ["bug"]
    },
    {
      "login": "salmanfazal01",
      "name": "Salman Fazal",
      "avatar_url": "https://avatars.githubusercontent.com/u/15085416?v=4",
      "profile": "https://salmans.work/",
      "contributions": ["bug"]
    },
    {
      "login": "shrugs",
      "name": "shrugs",
      "avatar_url": "https://avatars.githubusercontent.com/u/1535001?v=4",
      "profile": "https://github.com/shrugs",
      "contributions": ["bug"]
    },
    {
      "login": "Hyodori04",
      "name": "hyodori",
      "avatar_url": "https://avatars.githubusercontent.com/u/57362573?v=4",
      "profile": "https://github.com/Hyodori04",
      "contributions": ["bug"]
    },
    {
      "login": "eleazareramos",
      "name": "Eleazar “E” Ramos",
      "avatar_url": "https://avatars.githubusercontent.com/u/25910203?v=4",
      "profile": "https://github.com/eleazareramos",
      "contributions": ["bug"]
    },
    {
      "login": "retnag",
      "name": "retnag",
      "avatar_url": "https://avatars.githubusercontent.com/u/18302198?v=4",
      "profile": "https://github.com/retnag",
      "contributions": ["bug"]
    },
    {
      "login": "beefiker",
      "name": "J young Lee",
      "avatar_url": "https://avatars.githubusercontent.com/u/55247450?v=4",
      "profile": "https://jaeyoung.dev/",
      "contributions": ["bug"]
    },
    {
      "login": "fiws",
      "name": "Filip Weiss",
      "avatar_url": "https://avatars.githubusercontent.com/u/3409958?v=4",
      "profile": "https://github.com/fiws",
      "contributions": ["bug"]
    },
    {
      "login": "mariusGundersen",
      "name": "Marius Gundersen",
      "avatar_url": "https://avatars.githubusercontent.com/u/464152?v=4",
      "profile": "https://mariusgundersen.net/",
      "contributions": ["bug"]
    },
    {
      "login": "VenomFate-619",
      "name": "Syed Aman Ali",
      "avatar_url": "https://avatars.githubusercontent.com/u/67755128?v=4",
      "profile": "https://github.com/VenomFate-619",
      "contributions": ["bug"]
    },
    {
      "login": "ingadi",
      "name": "Axel Ingadi",
      "avatar_url": "https://avatars.githubusercontent.com/u/6121225?v=4",
      "profile": "https://ingadi.work/",
      "contributions": ["bug"]
    },
    {
      "login": "andyjphu",
      "name": "AndyP",
      "avatar_url": "https://avatars.githubusercontent.com/u/51890861?v=4",
      "profile": "https://github.com/andyjphu",
      "contributions": ["bug"]
    },
    {
      "login": "ishanVaghasiya",
      "name": "ishanVaghasiya",
      "avatar_url": "https://avatars.githubusercontent.com/u/98661936?v=4",
      "profile": "https://github.com/ishanVaghasiya",
      "contributions": ["bug"]
    },
    {
      "login": "nico-martinucci",
      "name": "Nico Martinucci",
      "avatar_url": "https://avatars.githubusercontent.com/u/80868741?v=4",
      "profile": "https://github.com/nico-martinucci",
      "contributions": ["bug"]
    },
    {
      "login": "technophile-04",
      "name": "Shiv Bhonde | shivbhonde.eth",
      "avatar_url": "https://avatars.githubusercontent.com/u/80153681?v=4",
      "profile": "https://github.com/technophile-04",
      "contributions": ["bug"]
    },
    {
      "login": "fritzmonkey",
      "name": "fritzmonkey",
      "avatar_url": "https://avatars.githubusercontent.com/u/10103840?v=4",
      "profile": "https://github.com/fritzmonkey",
      "contributions": ["bug"]
    },
    {
      "login": "rrmesquita",
      "name": "Rodrigo Mesquita",
      "avatar_url": "https://avatars.githubusercontent.com/u/30835404?v=4",
      "profile": "https://github.com/rrmesquita",
      "contributions": ["bug"]
    },
    {
      "login": "moshest",
      "name": "Moshe Simantov",
      "avatar_url": "https://avatars.githubusercontent.com/u/534911?v=4",
      "profile": "https://moshe.io/",
      "contributions": ["bug"]
    },
    {
      "login": "BekaArabidze98",
      "name": "Beka",
      "avatar_url": "https://avatars.githubusercontent.com/u/122085038?v=4",
      "profile": "https://github.com/BekaArabidze98",
      "contributions": ["bug"]
    },
    {
      "login": "abdofola",
      "name": "Abdallah Alkaser",
      "avatar_url": "https://avatars.githubusercontent.com/u/30251052?v=4",
      "profile": "https://github.com/abdofola",
      "contributions": ["bug", "code"]
    },
    {
      "login": "CarlosNZ",
      "name": "Carl Smith",
      "avatar_url": "https://avatars.githubusercontent.com/u/5456533?v=4",
      "profile": "https://github.com/CarlosNZ",
      "contributions": ["bug"]
    },
    {
      "login": "ogroppo",
      "name": "Orlando Groppo",
      "avatar_url": "https://avatars.githubusercontent.com/u/4820803?v=4",
      "profile": "https://github.com/ogroppo",
      "contributions": ["bug"]
    },
    {
      "login": "thany",
      "name": "Martijn Saly",
      "avatar_url": "https://avatars.githubusercontent.com/u/152227?v=4",
      "profile": "https://github.com/thany",
      "contributions": ["bug"]
    },
    {
      "login": "quinn",
      "name": "Quinn Shanahan",
      "avatar_url": "https://avatars.githubusercontent.com/u/3764?v=4",
      "profile": "https://quinn.io/",
      "contributions": ["bug"]
    },
    {
      "login": "AntoineKM",
      "name": "Antoine Kingue",
      "avatar_url": "https://avatars.githubusercontent.com/u/54948363?v=4",
      "profile": "https://antoinek.fr/",
      "contributions": ["bug"]
    },
    {
      "login": "zanzlender",
      "name": "Žan Žlender",
      "avatar_url": "https://avatars.githubusercontent.com/u/44570474?v=4",
      "profile": "https://github.com/zanzlender",
      "contributions": ["bug"]
    },
    {
      "login": "sebadom",
      "name": "Sebastian Dominguez",
      "avatar_url": "https://avatars.githubusercontent.com/u/3877952?v=4",
      "profile": "https://github.com/sebadom",
      "contributions": ["bug"]
    },
    {
      "login": "jmc420",
      "name": "James Cowan",
      "avatar_url": "https://avatars.githubusercontent.com/u/11723529?v=4",
      "profile": "https://github.com/jmc420",
      "contributions": ["bug"]
    },
    {
      "login": "bayraak",
      "name": "Bayram Ali Basgul",
      "avatar_url": "https://avatars.githubusercontent.com/u/10470072?v=4",
      "profile": "https://github.com/bayraak",
      "contributions": ["bug"]
    },
    {
      "login": "WyattCast44",
      "name": "Wyatt Castaneda",
      "avatar_url": "https://avatars.githubusercontent.com/u/17957937?v=4",
      "profile": "http://wyatt.castaneda.family/",
      "contributions": ["bug"]
    },
    {
      "login": "tsnevillecom",
      "name": "Tim Neville",
      "avatar_url": "https://avatars.githubusercontent.com/u/3151454?v=4",
      "profile": "https://github.com/tsnevillecom",
      "contributions": ["bug"]
    },
    {
      "login": "shoooe",
      "name": "Thomas Pigarelli",
      "avatar_url": "https://avatars.githubusercontent.com/u/733227?v=4",
      "profile": "https://github.com/shoooe",
      "contributions": ["bug"]
    },
    {
      "login": "jherdman",
      "name": "James Herdman",
      "avatar_url": "https://avatars.githubusercontent.com/u/3300?v=4",
      "profile": "https://github.com/jherdman",
      "contributions": ["bug"]
    },
    {
      "login": "pociej",
      "name": "Grzegorz Pociejewski",
      "avatar_url": "https://avatars.githubusercontent.com/u/3854675?v=4",
      "profile": "https://github.com/pociej",
      "contributions": ["bug"]
    },
    {
      "login": "flyon",
      "name": "René Verheij",
      "avatar_url": "https://avatars.githubusercontent.com/u/341567?v=4",
      "profile": "https://github.com/flyon",
      "contributions": ["bug"]
    },
    {
      "login": "PatrykKuniczak",
      "name": "PatrykKuniczak",
      "avatar_url": "https://avatars.githubusercontent.com/u/64608510?v=4",
      "profile": "https://github.com/PatrykKuniczak",
      "contributions": ["bug"]
    },
    {
      "login": "CroModder",
      "name": "Paolo Božac",
      "avatar_url": "https://avatars.githubusercontent.com/u/7691110?v=4",
      "profile": "https://cromodder.github.io/",
      "contributions": ["bug"]
    },
    {
      "login": "reinos",
      "name": "Rein",
      "avatar_url": "https://avatars.githubusercontent.com/u/633730?v=4",
      "profile": "https://github.com/reinos",
      "contributions": ["bug"]
    },
    {
      "login": "FloorianB",
      "name": "FloorianB",
      "avatar_url": "https://avatars.githubusercontent.com/u/110407858?v=4",
      "profile": "https://github.com/FloorianB",
      "contributions": ["bug"]
    },
    {
      "login": "xuanhung1509",
      "name": "Xuan Hung",
      "avatar_url": "https://avatars.githubusercontent.com/u/89293664?v=4",
      "profile": "https://github.com/xuanhung1509",
      "contributions": ["bug"]
    },
    {
      "login": "mxvsh",
      "name": "Monawwar Abdullah",
      "avatar_url": "https://avatars.githubusercontent.com/u/31907722?v=4",
      "profile": "https://monawwar.io/",
      "contributions": ["bug"]
    },
    {
      "login": "haroldo-ok",
      "name": "Haroldo de Oliveira Pinheiro",
      "avatar_url": "https://avatars.githubusercontent.com/u/1457465?v=4",
      "profile": "https://github.com/haroldo-ok",
      "contributions": ["bug"]
    },
    {
      "login": "TamjidAhmed10",
      "name": "Tamjid Ahmed",
      "avatar_url": "https://avatars.githubusercontent.com/u/57794102?v=4",
      "profile": "https://portfoliobytamjid.vercel.app/",
      "contributions": ["bug"]
    },
    {
      "login": "jv-lopez",
      "name": "jv-lopez",
      "avatar_url": "https://avatars.githubusercontent.com/u/93750956?v=4",
      "profile": "https://github.com/jv-lopez",
      "contributions": ["bug"]
    },
    {
      "login": "callumacrae",
      "name": "Callum Macrae",
      "avatar_url": "https://avatars.githubusercontent.com/u/472830?v=4",
      "profile": "http://macr.ae/",
      "contributions": ["bug"]
    },
    {
      "login": "0529bill",
      "name": "bywater529",
      "avatar_url": "https://avatars.githubusercontent.com/u/62455148?v=4",
      "profile": "https://github.com/0529bill",
      "contributions": ["bug"]
    },
    {
      "login": "kevinxh",
      "name": "Kevin He",
      "avatar_url": "https://avatars.githubusercontent.com/u/10948652?v=4",
      "profile": "https://github.com/kevinxh",
      "contributions": ["bug"]
    },
    {
      "login": "FredericoGauz",
      "name": "FredericoGauz",
      "avatar_url": "https://avatars.githubusercontent.com/u/18327882?v=4",
      "profile": "https://github.com/FredericoGauz",
      "contributions": ["bug"]
    },
    {
      "login": "JonLemOfficial",
      "name": "Jonathan \"JonLem\" Lemos",
      "avatar_url": "https://avatars.githubusercontent.com/u/38771842?v=4",
      "profile": "https://www.jonlemofficial.com/",
      "contributions": ["bug"]
    },
    {
      "login": "xegulon",
      "name": "Xegulon",
      "avatar_url": "https://avatars.githubusercontent.com/u/74178038?v=4",
      "profile": "https://github.com/xegulon",
      "contributions": ["bug"]
    },
    {
      "login": "TomSmedley",
      "name": "Tom Smedley",
      "avatar_url": "https://avatars.githubusercontent.com/u/95056193?v=4",
      "profile": "https://github.com/TomSmedley",
      "contributions": ["bug"]
    },
    {
      "login": "lightbluepoppy",
      "name": "lightbluepoppy",
      "avatar_url": "https://avatars.githubusercontent.com/u/65863981?v=4",
      "profile": "https://github.com/lightbluepoppy",
      "contributions": ["bug"]
    },
    {
      "login": "Dchole",
      "name": "Derek Oware",
      "avatar_url": "https://avatars.githubusercontent.com/u/47068381?v=4",
      "profile": "https://github.com/Dchole",
      "contributions": ["bug"]
    },
    {
      "login": "lancegliser",
      "name": "Lance Gliser",
      "avatar_url": "https://avatars.githubusercontent.com/u/12085479?v=4",
      "profile": "http://fragmentedthought.com/",
      "contributions": ["bug"]
    },
    {
      "login": "lewxdev",
      "name": "J. Lewis",
      "avatar_url": "https://avatars.githubusercontent.com/u/6710419?v=4",
      "profile": "https://github.com/lewxdev",
      "contributions": ["bug"]
    },
    {
      "login": "yairy",
      "name": "Yair",
      "avatar_url": "https://avatars.githubusercontent.com/u/3206243?v=4",
      "profile": "https://github.com/yairy",
      "contributions": ["bug"]
    },
    {
      "login": "Nishchit14",
      "name": "Nishchit",
      "avatar_url": "https://avatars.githubusercontent.com/u/5078921?v=4",
      "profile": "https://firecamp.dev/",
      "contributions": ["bug"]
    },
    {
      "login": "Nejjer",
      "name": "Devofy",
      "avatar_url": "https://avatars.githubusercontent.com/u/80219537?v=4",
      "profile": "https://github.com/Nejjer",
      "contributions": ["bug"]
    },
    {
      "login": "nightness",
      "name": "Josh Guyette",
      "avatar_url": "https://avatars.githubusercontent.com/u/28668902?v=4",
      "profile": "https://joshguyette.com/",
      "contributions": ["bug"]
    },
    {
      "login": "dora-ljh",
      "name": "Dora Li",
      "avatar_url": "https://avatars.githubusercontent.com/u/35205701?v=4",
      "profile": "https://github.com/dora-ljh",
      "contributions": ["bug"]
    },
    {
      "login": "kg-currenxie",
      "name": "Kristian Gerardsson",
      "avatar_url": "https://avatars.githubusercontent.com/u/48229166?v=4",
      "profile": "https://github.com/kg-currenxie",
      "contributions": ["bug"]
    },
    {
      "login": "jdpt0",
      "name": "James Powell",
      "avatar_url": "https://avatars.githubusercontent.com/u/19761394?v=4",
      "profile": "https://github.com/jdpt0",
      "contributions": ["bug"]
    },
    {
      "login": "boazpoolman",
      "name": "Boaz Poolman",
      "avatar_url": "https://avatars.githubusercontent.com/u/9551934?v=4",
      "profile": "https://www.linkedin.com/in/boaz-poolman-662162115/",
      "contributions": ["bug"]
    },
    {
      "login": "roker15",
      "name": "roker15",
      "avatar_url": "https://avatars.githubusercontent.com/u/59526869?v=4",
      "profile": "https://github.com/roker15",
      "contributions": ["bug"]
    },
    {
      "login": "fadhilx",
      "name": "Fadhil Ahmad",
      "avatar_url": "https://avatars.githubusercontent.com/u/15516786?v=4",
      "profile": "https://github.com/fadhilx",
      "contributions": ["bug"]
    },
    {
      "login": "Chandler-Zhu",
      "name": "Chandler-Zhu",
      "avatar_url": "https://avatars.githubusercontent.com/u/61914365?v=4",
      "profile": "https://github.com/Chandler-Zhu",
      "contributions": ["bug"]
    },
    {
      "login": "nixjs",
      "name": "Nghi Nguyen",
      "avatar_url": "https://avatars.githubusercontent.com/u/23132483?v=4",
      "profile": "https://github.com/nixjs",
      "contributions": ["bug"]
    },
    {
      "login": "ShravanSunder",
      "name": "Shravan Sunder",
      "avatar_url": "https://avatars.githubusercontent.com/u/5294949?v=4",
      "profile": "https://github.com/ShravanSunder",
      "contributions": ["bug"]
    },
    {
      "login": "Johannes5",
      "name": "Johannes5",
      "avatar_url": "https://avatars.githubusercontent.com/u/14299835?v=4",
      "profile": "https://github.com/Johannes5",
      "contributions": ["bug"]
    },
    {
      "login": "sebahhpeya",
      "name": "sebahhpeya",
      "avatar_url": "https://avatars.githubusercontent.com/u/93996817?v=4",
      "profile": "https://github.com/sebahhpeya",
      "contributions": ["bug"]
    },
    {
      "login": "ornakash",
      "name": "Or Nakash",
      "avatar_url": "https://avatars.githubusercontent.com/u/45389557?v=4",
      "profile": "https://onezero.co.il/",
      "contributions": ["bug"]
    },
    {
      "login": "hepiyellow",
      "name": "Erez Makavy",
      "avatar_url": "https://avatars.githubusercontent.com/u/6338722?v=4",
      "profile": "https://github.com/hepiyellow",
      "contributions": ["bug"]
    },
    {
      "login": "andymerskin",
      "name": "Andy Merskin",
      "avatar_url": "https://avatars.githubusercontent.com/u/758090?v=4",
      "profile": "http://andymerskin.com/",
      "contributions": ["bug"]
    },
    {
      "login": "chainalert-bot",
      "name": "ChainAlert Bot",
      "avatar_url": "https://avatars.githubusercontent.com/u/95303823?v=4",
      "profile": "https://github.com/chainalert-bot",
      "contributions": ["bug"]
    },
    {
      "login": "tmdesigned",
      "name": "Taylor Morgan",
      "avatar_url": "https://avatars.githubusercontent.com/u/3608018?v=4",
      "profile": "https://github.com/tmdesigned",
      "contributions": ["bug"]
    },
    {
      "login": "wisdomabioye",
      "name": "wisdomabioye",
      "avatar_url": "https://avatars.githubusercontent.com/u/18709032?v=4",
      "profile": "https://abkabioye.me/",
      "contributions": ["bug"]
    },
    {
      "login": "SamuelQuinones",
      "name": "Samuel Quiñones",
      "avatar_url": "https://avatars.githubusercontent.com/u/51345689?v=4",
      "profile": "http://www.samtheq.com",
      "contributions": ["ideas"]
    },
    {
      "login": "ymc-maha",
      "name": "Manuel",
      "avatar_url": "https://avatars.githubusercontent.com/u/697307?v=4",
      "profile": "https://github.com/ymc-maha",
      "contributions": ["code", "bug"]
    },
    {
      "login": "Yurchishin",
      "name": "Yurii Rybak",
      "avatar_url": "https://avatars.githubusercontent.com/u/36650915?v=4",
      "profile": "https://github.com/Yurchishin",
      "contributions": ["bug"]
    },
    {
      "login": "iuriiiurevich",
      "name": "Yury Demin",
      "avatar_url": "https://avatars.githubusercontent.com/u/15759600?v=4",
      "profile": "https://github.com/iuriiiurevich",
      "contributions": ["bug", "code"]
    },
    {
      "login": "jontewks",
      "name": "Jon Tewksbury",
      "avatar_url": "https://avatars.githubusercontent.com/u/3970573?v=4",
      "profile": "http://tewks.io/",
      "contributions": ["code", "bug"]
    },
    {
      "login": "novacdenis",
      "name": "Novac Denis",
      "avatar_url": "https://avatars.githubusercontent.com/u/45555668?v=4",
      "profile": "https://github.com/novacdenis",
      "contributions": ["code", "bug"]
    },
    {
      "login": "kyrylo-soulandwolf",
      "name": "kyrylo-soulandwolf",
      "avatar_url": "https://avatars.githubusercontent.com/u/54762253?v=4",
      "profile": "https://github.com/kyrylo-soulandwolf",
      "contributions": ["code", "bug"]
    },
    {
      "login": "misidoro",
      "name": "Miguel Isidoro",
      "avatar_url": "https://avatars.githubusercontent.com/u/3635023?v=4",
      "profile": "https://github.com/misidoro",
      "contributions": ["code"]
    },
    {
      "login": "gromchen",
      "name": "Yuriy Gromchenko",
      "avatar_url": "https://avatars.githubusercontent.com/u/828918?v=4",
      "profile": "https://crowds.space/",
      "contributions": ["code"]
    },
    {
      "login": "jcbhmr",
      "name": "Jacob Hummer",
      "avatar_url": "https://avatars.githubusercontent.com/u/61068799?v=4",
      "profile": "http://jcbhmr.me",
      "contributions": ["ideas"]
    },
    {
      "login": "k-melnychuk",
      "name": "Kyrylo Melnychuk",
      "avatar_url": "https://avatars.githubusercontent.com/u/22131019?v=4",
      "profile": "https://github.com/k-melnychuk",
      "contributions": ["content", "code"]
    },
    {
      "login": "LumaKernel",
      "name": "Luma",
      "avatar_url": "https://avatars.githubusercontent.com/u/29811106?v=4",
      "profile": "https://github.com/LumaKernel",
      "contributions": ["code"]
    },
    {
      "login": "Newbie012",
      "name": "Eliya Cohen",
      "avatar_url": "https://avatars.githubusercontent.com/u/10504365?v=4",
      "profile": "https://github.com/Newbie012",
      "contributions": ["code"]
    },
    {
      "login": "isumix",
      "name": "Igor Sukharev",
      "avatar_url": "https://avatars.githubusercontent.com/u/16747416?v=4",
      "profile": "https://github.com/isumix",
      "contributions": ["bug"]
    },
    {
      "login": "pookmish",
      "name": "pookmish",
      "avatar_url": "https://avatars.githubusercontent.com/u/7185045?v=4",
      "profile": "https://github.com/pookmish",
      "contributions": ["ideas"]
    },
    {
      "login": "metav-drimz",
      "name": "metav-drimz",
      "avatar_url": "https://avatars.githubusercontent.com/u/113976282?v=4",
      "profile": "https://github.com/metav-drimz",
      "contributions": ["ideas"]
    },
    {
      "login": "luckrnx09",
      "name": "luckrnx09",
      "avatar_url": "https://avatars.githubusercontent.com/u/113882203?v=4",
      "profile": "https://luckrnx09.com/",
      "contributions": ["code"]
    },
    {
      "login": "RubyHuntsman",
      "name": "Hubert Kuczmierczyk",
      "avatar_url": "https://avatars.githubusercontent.com/u/24682602?v=4",
      "profile": "https://github.com/RubyHuntsman",
      "contributions": ["ideas", "review"]
    },
    {
      "login": "dandubya",
      "name": "dandubya",
      "avatar_url": "https://avatars.githubusercontent.com/u/67660308?v=4",
      "profile": "https://github.com/dandubya",
      "contributions": ["doc"]
    },
    {
      "login": "LonelyFellas",
      "name": "Darwish",
      "avatar_url": "https://avatars.githubusercontent.com/u/38754760?v=4",
      "profile": "https://github.com/LonelyFellas",
      "contributions": ["code"]
    },
    {
      "login": "jraoult",
      "name": "Jonathan Raoult",
      "avatar_url": "https://avatars.githubusercontent.com/u/2046871?v=4",
      "profile": "http://www.jesuisjo.com/",
      "contributions": ["bug", "review"]
    }
  ],
  "contributorsPerLine": 7,
  "commitType": "docs"
}



================================================
FILE: .changeset/README.md
================================================
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)


================================================
FILE: .changeset/config.json
================================================
{
  "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
  "changelog": "@changesets/cli/changelog",
  "commit": false,
  "fixed": [],
  "linked": [],
  "access": "public",
  "baseBranch": "master",
  "updateInternalDependencies": "patch",
  "ignore": []
}


================================================
FILE: .editorconfig
================================================
# editorconfig.org

root = true

[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true


================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall
  community

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or advances of
  any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address,
  without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official email address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
<juliencaron@protonmail.com>.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing to `usehooks-ts`

Thanks for wanting to contribute! It's more than welcome 🤗

As the creators and maintainers of this project, we want to ensure that `usehooks-ts` lives and continues to grow and evolve. We would like to encourage everyone to help and support this library by contributing

## Ways to contribute

1. **Replying and handling open issues or discussions.**

   We get some issues and discussions, and some of them may lack necessary information. You can help out by guiding people through the process of filling out the issue template, asking for clarifying information, or pointing them to existing issues that match their description of the problem.

2. **Reviewing pull requests.**

   Pull requests (PRs) are essential for introducing new features, fixing bugs, and improving the overall quality of the codebase. As a reviewer, your role is crucial in ensuring that each PR meets the project's standards and goals. Here are some key aspects to consider when reviewing pull requests:

   - **Code Quality**: Examine the changes for readability, maintainability, and adherence to coding standards. Look for any potential code smells, redundant code, or opportunities for optimization.

   - **Functionality**: Test the changes locally if possible to verify that they work as intended. Check if the new feature functions correctly and if the bug fixes address the reported issues.

   - **Compatibility**: Ensure that the changes don't introduce breaking changes or compatibility issues with existing functionality. Consider how the changes may impact other parts of the codebase and any dependent projects.

   - **Documentation**: Confirm that the PR includes any necessary updates to documentation, including code comments, README files, changesets, or API references.

   - **Testing**: Assess whether the PR includes sufficient unit tests to cover the modified code. If necessary, suggest additional test cases or improvements to the testing strategy.

   - **Feedback**: Provide constructive feedback to the contributor, highlighting areas for improvement and praising positive aspects of the contribution. Encourage collaboration and discussion to address any concerns or questions.

   Your thorough review helps maintain the quality and stability of the project. Remember to be respectful and supportive in your feedback, fostering a positive and inclusive community for contributors.

3. **Help people write unit-tests.**

   Some pull requests sent to the main repository may lack a proper test plan. These help reviewers understand how the change was tested, and can speed up the time it takes for a contribution to be accepted.

4. **Improving the documentation.**

   Reviewing documentation updates can be as simple as checking for spelling and grammar. If you encounter situations that can be explained better in the docs, click Edit at the top of most docs pages to get started with your own contribution.

5. **Contribute the to code.**

   Code-level contributions to `usehooks-ts` like creating or fixing a hook generally come in the form of pull requests. These are done by forking the repo and making changes locally explained below.

## Code contributions

Here is a quick guide to doing code contributions to the library.

1. Make sure to have the right dependencies up-to-date:

   - `"node": ">=18.17.0"`
   - `"pnpm": "^8"`

2. Fork and clone the repo to your local machine:

   ```shellscript
   git clone https://github.com/YOUR_GITHUB_USERNAME/usehooks-ts.git
   ```

3. Create a new branch from `master` with a meaningful name for a new feature or an issue you want to work on:

   ```shellscript
   git checkout -b your-meaningful-branch-name
   ```

4. Install packages by running:

   ```shellscript
   pnpm install
   pnpm build
   ```

5. If you want to create a new hook, use the generator:

   ```shellscript
   pnpm gen-hook
   ```

6. Ensure your code lints without errors and the test suite still passes.

   ```shellscript
   pnpm build && pnpm lint && pnpm test
   ```

7. Try to write some unit tests to cover as much of your code as possible.

8. Push your branch: `git push -u origin your-meaningful-branch-name`

9. Submit a pull request to the upstream `usehooks-ts` repository.

10. Choose a descriptive title and describe your changes briefly.

## Coding style

Please follow the coding style of the project. `usehooks-ts` uses eslint and prettier. If possible, enable their respective plugins in your editor to get real-time feedback. The linting can be run manually with the following command: `pnpm lint` and `pnpm prettier`.

## License

By contributing your code to the `usehooks-ts` GitHub repository, you agree to license your contribution under the [MIT license](https://github.com/juliencrn/usehooks-ts/blob/master/LICENSE).

## Contributors

Big thanks go to all our contributors! [[Become a contributor](https://github.com/juliencrn/usehooks-ts/blob/master/.github/CONTRIBUTING.md)]

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tbody>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/juliencrn"><img src="https://avatars.githubusercontent.com/u/14028029?v=4?s=64" width="64px;" alt="Julien"/><br /><sub><b>Julien</b></sub></a><br /><a href="#content-juliencrn" title="Content">🖋</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=juliencrn" title="Code">💻</a> <a href="#design-juliencrn" title="Design">🎨</a> <a href="#ideas-juliencrn" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/a777med"><img src="https://avatars.githubusercontent.com/u/15968280?v=4?s=64" width="64px;" alt="a777med"/><br /><sub><b>a777med</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=a777med" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://datkira.com/"><img src="https://avatars.githubusercontent.com/u/53250212?v=4?s=64" width="64px;" alt="Nguyen Tien Dat"/><br /><sub><b>Nguyen Tien Dat</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=datkira" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/elifer5000"><img src="https://avatars.githubusercontent.com/u/4311278?v=4?s=64" width="64px;" alt="Elias Cohenca"/><br /><sub><b>Elias Cohenca</b></sub></a><br /><a href="#content-elifer5000" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://joaov.com.br/"><img src="https://avatars.githubusercontent.com/u/17601527?v=4?s=64" width="64px;" alt="João Deroldo"/><br /><sub><b>João Deroldo</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajoaoderoldo" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=joaoderoldo" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Nishit-Dua"><img src="https://avatars.githubusercontent.com/u/35453301?v=4?s=64" width="64px;" alt="Nishit"/><br /><sub><b>Nishit</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=Nishit-Dua" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jonkoops"><img src="https://avatars.githubusercontent.com/u/695720?v=4?s=64" width="64px;" alt="Jon Koops"/><br /><sub><b>Jon Koops</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=jonkoops" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/LoneRifle"><img src="https://avatars.githubusercontent.com/u/10572368?v=4?s=64" width="64px;" alt="LoneRifle"/><br /><sub><b>LoneRifle</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=LoneRifle" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/vfonic"><img src="https://avatars.githubusercontent.com/u/67437?v=4?s=64" width="64px;" alt="Viktor"/><br /><sub><b>Viktor</b></sub></a><br /><a href="#ideas-vfonic" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Avfonic" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/bclermont"><img src="https://avatars.githubusercontent.com/u/474302?v=4?s=64" width="64px;" alt="Bruno Clermont"/><br /><sub><b>Bruno Clermont</b></sub></a><br /><a href="#question-bclermont" title="Answering Questions">💬</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/yoannesbourg"><img src="https://avatars.githubusercontent.com/u/73404603?v=4?s=64" width="64px;" alt="yoannesbourg"/><br /><sub><b>yoannesbourg</b></sub></a><br /><a href="#ideas-yoannesbourg" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/strange2x"><img src="https://avatars.githubusercontent.com/u/10759731?v=4?s=64" width="64px;" alt="Strange2x"/><br /><sub><b>Strange2x</b></sub></a><br /><a href="#ideas-strange2x" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/steinybot"><img src="https://avatars.githubusercontent.com/u/4659562?v=4?s=64" width="64px;" alt="Jason Pickens"/><br /><sub><b>Jason Pickens</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asteinybot" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://smackagency.com/"><img src="https://avatars.githubusercontent.com/u/3469560?v=4?s=64" width="64px;" alt="Sel-Vin Kuik"/><br /><sub><b>Sel-Vin Kuik</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aselvinkuik" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/isaacalves"><img src="https://avatars.githubusercontent.com/u/1765942?v=4?s=64" width="64px;" alt="isaac"/><br /><sub><b>isaac</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aisaacalves" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/brunorzn"><img src="https://avatars.githubusercontent.com/u/18266054?v=4?s=64" width="64px;" alt="Bruno RZN"/><br /><sub><b>Bruno RZN</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=brunorzn" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3Abrunorzn" title="Reviewed Pull Requests">👀</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://www.cykeprojects.com/"><img src="https://avatars.githubusercontent.com/u/2979318?v=4?s=64" width="64px;" alt="Nathan Manceaux-Panot"/><br /><sub><b>Nathan Manceaux-Panot</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=Cykelero" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3ACykelero" title="Reviewed Pull Requests">👀</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/meotimdihia"><img src="https://avatars.githubusercontent.com/u/300961?v=4?s=64" width="64px;" alt="Dien Vu"/><br /><sub><b>Dien Vu</b></sub></a><br /><a href="#ideas-meotimdihia" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/olegKusov"><img src="https://avatars.githubusercontent.com/u/28058268?v=4?s=64" width="64px;" alt="Oleg Kusov"/><br /><sub><b>Oleg Kusov</b></sub></a><br /><a href="#ideas-olegKusov" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://mattguy.me/"><img src="https://avatars.githubusercontent.com/u/6647355?v=4?s=64" width="64px;" alt="Matthew Guy"/><br /><sub><b>Matthew Guy</b></sub></a><br /><a href="#ideas-mankittens" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/andrewbihl"><img src="https://avatars.githubusercontent.com/u/16709744?v=4?s=64" width="64px;" alt="andrewbihl"/><br /><sub><b>andrewbihl</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aandrewbihl" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/lancepollard"><img src="https://avatars.githubusercontent.com/u/86631222?v=4?s=64" width="64px;" alt="lancepollard"/><br /><sub><b>lancepollard</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Alancepollard" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/gmukul01"><img src="https://avatars.githubusercontent.com/u/3636885?v=4?s=64" width="64px;" alt="Mukul Bansal"/><br /><sub><b>Mukul Bansal</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Agmukul01" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://127.0.0.1:8000/"><img src="https://avatars.githubusercontent.com/u/474302?v=4?s=64" width="64px;" alt="Jean-Luc Mongrain sur la Brosse"/><br /><sub><b>Jean-Luc Mongrain sur la Brosse</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=jeanlucmongrain" title="Code">💻</a> <a href="#ideas-jeanlucmongrain" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/n1c"><img src="https://avatars.githubusercontent.com/u/284075?v=4?s=64" width="64px;" alt="Nic"/><br /><sub><b>Nic</b></sub></a><br /><a href="#content-n1c" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://valtism.com/"><img src="https://avatars.githubusercontent.com/u/1286001?v=4?s=64" width="64px;" alt="Dan Wood"/><br /><sub><b>Dan Wood</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=valtism" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://www.sixt.de/"><img src="https://avatars.githubusercontent.com/u/25299148?v=4?s=64" width="64px;" alt="jo wendenbuerger"/><br /><sub><b>jo wendenbuerger</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AWendenburg" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://nozillium.com/"><img src="https://avatars.githubusercontent.com/u/4774875?v=4?s=64" width="64px;" alt="Andrew Nosenko"/><br /><sub><b>Andrew Nosenko</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Anoseratio" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/CharlieJhonSmith"><img src="https://avatars.githubusercontent.com/u/90845154?v=4?s=64" width="64px;" alt="CharlieJhonSmith"/><br /><sub><b>CharlieJhonSmith</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=CharlieJhonSmith" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://keybase.io/soullivaneuh"><img src="https://avatars.githubusercontent.com/u/1698357?v=4?s=64" width="64px;" alt="Sullivan SENECHAL"/><br /><sub><b>Sullivan SENECHAL</b></sub></a><br /><a href="#ideas-soullivaneuh" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asoullivaneuh" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=soullivaneuh" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jaslong"><img src="https://avatars.githubusercontent.com/u/797348?v=4?s=64" width="64px;" alt="Jason Long"/><br /><sub><b>Jason Long</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajaslong" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/kxm766"><img src="https://avatars.githubusercontent.com/u/88443148?v=4?s=64" width="64px;" alt="kxm766"/><br /><sub><b>kxm766</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Akxm766" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://qlaffont.com/"><img src="https://avatars.githubusercontent.com/u/10044790?v=4?s=64" width="64px;" alt="Quentin"/><br /><sub><b>Quentin</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=qlaffont" title="Code">💻</a> <a href="#ideas-qlaffont" title="Ideas, Planning, & Feedback">🤔</a> <a href="#content-qlaffont" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ducktordanny"><img src="https://avatars.githubusercontent.com/u/38068717?v=4?s=64" width="64px;" alt="Daniel Lazar"/><br /><sub><b>Daniel Lazar</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=ducktordanny" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aducktordanny" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/mterrel"><img src="https://avatars.githubusercontent.com/u/17746857?v=4?s=64" width="64px;" alt="Mark Terrel"/><br /><sub><b>Mark Terrel</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Amterrel" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=mterrel" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/mendrik"><img src="https://avatars.githubusercontent.com/u/160805?v=4?s=64" width="64px;" alt="Andreas Herd"/><br /><sub><b>Andreas Herd</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Amendrik" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://sonjoydatta.me/"><img src="https://avatars.githubusercontent.com/u/49079726?v=4?s=64" width="64px;" alt="Sonjoy Datta"/><br /><sub><b>Sonjoy Datta</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=sonjoydatta" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/oluckyman"><img src="https://avatars.githubusercontent.com/u/642673?v=4?s=64" width="64px;" alt="Ilya Belsky"/><br /><sub><b>Ilya Belsky</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aoluckyman" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://jamesbarrett.io/"><img src="https://avatars.githubusercontent.com/u/42980207?v=4?s=64" width="64px;" alt="James Barrett"/><br /><sub><b>James Barrett</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=JamesBarrettDev" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/AbbalYouness"><img src="https://avatars.githubusercontent.com/u/15120524?v=4?s=64" width="64px;" alt="AbbalYouness"/><br /><sub><b>AbbalYouness</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=AbbalYouness" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/DidrikLind"><img src="https://avatars.githubusercontent.com/u/14201715?v=4?s=64" width="64px;" alt="didriklind"/><br /><sub><b>didriklind</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=DidrikLind" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=DidrikLind" title="Tests">⚠️</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/hexp1989"><img src="https://avatars.githubusercontent.com/u/2241985?v=4?s=64" width="64px;" alt="hexp1989"/><br /><sub><b>hexp1989</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=hexp1989" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/alvaro-serrano-rivas/"><img src="https://avatars.githubusercontent.com/u/43758471?v=4?s=64" width="64px;" alt="Alvaro Serrano"/><br /><sub><b>Alvaro Serrano</b></sub></a><br /><a href="#content-alvaroserrrano" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/egehandulger"><img src="https://avatars.githubusercontent.com/u/14878259?v=4?s=64" width="64px;" alt="Egehan Dülger"/><br /><sub><b>Egehan Dülger</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=egehandulger" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/PabloLION"><img src="https://avatars.githubusercontent.com/u/36828324?v=4?s=64" width="64px;" alt="PabloLION"/><br /><sub><b>PabloLION</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3APabloLION" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=PabloLION" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://davidsanchez.me/"><img src="https://avatars.githubusercontent.com/u/84061?v=4?s=64" width="64px;" alt="David Sanchez"/><br /><sub><b>David Sanchez</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aemulienfou" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/AjayTheWizard"><img src="https://avatars.githubusercontent.com/u/92772740?v=4?s=64" width="64px;" alt="Ajay Raja"/><br /><sub><b>Ajay Raja</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AAjayTheWizard" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://andymerskin.com/"><img src="https://avatars.githubusercontent.com/u/758090?v=4?s=64" width="64px;" alt="Andy Merskin"/><br /><sub><b>Andy Merskin</b></sub></a><br /><a href="#ideas-docmars" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/GrayGalaxy"><img src="https://avatars.githubusercontent.com/u/49820575?v=4?s=64" width="64px;" alt="Avirup Ghosh"/><br /><sub><b>Avirup Ghosh</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=GrayGalaxy" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AGrayGalaxy" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/tilnea"><img src="https://avatars.githubusercontent.com/u/3692320?v=4?s=64" width="64px;" alt="Sanne Wintrén"/><br /><sub><b>Sanne Wintrén</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Atilnea" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://lacolonia.studio/"><img src="https://avatars.githubusercontent.com/u/1528468?v=4?s=64" width="64px;" alt="Alessandro"/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aa-barbieri" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/atatarenko"><img src="https://avatars.githubusercontent.com/u/9846273?v=4?s=64" width="64px;" alt="Andrey Tatarenko"/><br /><sub><b>Andrey Tatarenko</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aatatarenko" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/arusak"><img src="https://avatars.githubusercontent.com/u/4231915?v=4?s=64" width="64px;" alt="Anton Rusak"/><br /><sub><b>Anton Rusak</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aarusak" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/createdbymahmood"><img src="https://avatars.githubusercontent.com/u/40164360?v=4?s=64" width="64px;" alt="Mahmood Bagheri"/><br /><sub><b>Mahmood Bagheri</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=createdbymahmood" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://wpowner.com/"><img src="https://avatars.githubusercontent.com/u/506491?v=4?s=64" width="64px;" alt="Anver Sadutt"/><br /><sub><b>Anver Sadutt</b></sub></a><br /><a href="#content-anver" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/bogdanailincaipnt"><img src="https://avatars.githubusercontent.com/u/93596663?v=4?s=64" width="64px;" alt="Bogdan Ailincai"/><br /><sub><b>Bogdan Ailincai</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=bogdanailincaipnt" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/SimeonGriggs"><img src="https://avatars.githubusercontent.com/u/9684022?v=4?s=64" width="64px;" alt="Simeon Griggs"/><br /><sub><b>Simeon Griggs</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ASimeonGriggs" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Kepro"><img src="https://avatars.githubusercontent.com/u/1714370?v=4?s=64" width="64px;" alt="Kepro"/><br /><sub><b>Kepro</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AKepro" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Jake-Lippert"><img src="https://avatars.githubusercontent.com/u/17753127?v=4?s=64" width="64px;" alt="Jake Lippert"/><br /><sub><b>Jake Lippert</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AJake-Lippert" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/TunA-Kai"><img src="https://avatars.githubusercontent.com/u/92641762?v=4?s=64" width="64px;" alt="Tu Nguyen Anh"/><br /><sub><b>Tu Nguyen Anh</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ATunA-Kai" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=TunA-Kai" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/skve"><img src="https://avatars.githubusercontent.com/u/47612057?v=4?s=64" width="64px;" alt="Luke Shiels"/><br /><sub><b>Luke Shiels</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Askve" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/SleLLl"><img src="https://avatars.githubusercontent.com/u/66108429?v=4?s=64" width="64px;" alt="Sergei Kolyago"/><br /><sub><b>Sergei Kolyago</b></sub></a><br /><a href="#ideas-SleLLl" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/adhamaa"><img src="https://avatars.githubusercontent.com/u/50027371?v=4?s=64" width="64px;" alt="Adham Akmal Azmi"/><br /><sub><b>Adham Akmal Azmi</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aadhamaa" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/alex-kowalczyk"><img src="https://avatars.githubusercontent.com/u/7422175?v=4?s=64" width="64px;" alt="Alek Kowalczyk"/><br /><sub><b>Alek Kowalczyk</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aalex-kowalczyk" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Scalahansolo"><img src="https://avatars.githubusercontent.com/u/4317253?v=4?s=64" width="64px;" alt="Sean Callahan"/><br /><sub><b>Sean Callahan</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AScalahansolo" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jbean96"><img src="https://avatars.githubusercontent.com/u/22803097?v=4?s=64" width="64px;" alt="Joshua Bean"/><br /><sub><b>Joshua Bean</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=jbean96" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajbean96" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ZhaoTim"><img src="https://avatars.githubusercontent.com/u/30540533?v=4?s=64" width="64px;" alt="Tim Zhao"/><br /><sub><b>Tim Zhao</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AZhaoTim" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/patryk-smc"><img src="https://avatars.githubusercontent.com/u/37963339?v=4?s=64" width="64px;" alt="Patrick"/><br /><sub><b>Patrick</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Apatryk-smc" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://bryce.io/"><img src="https://avatars.githubusercontent.com/u/3171252?v=4?s=64" width="64px;" alt="Bryce Dorn"/><br /><sub><b>Bryce Dorn</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=brycedorn" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/angusd3v"><img src="https://avatars.githubusercontent.com/u/52683145?v=4?s=64" width="64px;" alt="angusd3v"/><br /><sub><b>angusd3v</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=angusd3v" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ddisimone"><img src="https://avatars.githubusercontent.com/u/78792352?v=4?s=64" width="64px;" alt="Davide Di Simone"/><br /><sub><b>Davide Di Simone</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Addisimone" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jherr"><img src="https://avatars.githubusercontent.com/u/22392?v=4?s=64" width="64px;" alt="Jack Herrington"/><br /><sub><b>Jack Herrington</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajherr" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://sharvit.github.io/"><img src="https://avatars.githubusercontent.com/u/1262502?v=4?s=64" width="64px;" alt="Avi Sharvit"/><br /><sub><b>Avi Sharvit</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=sharvit" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asharvit" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/nmaties"><img src="https://avatars.githubusercontent.com/u/16613184?v=4?s=64" width="64px;" alt="Nicolae Maties"/><br /><sub><b>Nicolae Maties</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Anmaties" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/secretshardul"><img src="https://avatars.githubusercontent.com/u/49580849?v=4?s=64" width="64px;" alt="Shardul Aeer"/><br /><sub><b>Shardul Aeer</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asecretshardul" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/herlon214"><img src="https://avatars.githubusercontent.com/u/3419441?v=4?s=64" width="64px;" alt="Herlon Aguiar"/><br /><sub><b>Herlon Aguiar</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aherlon214" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/alexisoney"><img src="https://avatars.githubusercontent.com/u/28802989?v=4?s=64" width="64px;" alt="Alexis Oney"/><br /><sub><b>Alexis Oney</b></sub></a><br /><a href="#content-alexisoney" title="Content">🖋</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://convictional.com/"><img src="https://avatars.githubusercontent.com/u/96080054?v=4?s=64" width="64px;" alt="curtvict"/><br /><sub><b>curtvict</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=curtvict" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/JoshuaCS94"><img src="https://avatars.githubusercontent.com/u/23385700?v=4?s=64" width="64px;" alt="Josué Cortina"/><br /><sub><b>Josué Cortina</b></sub></a><br /><a href="#content-JoshuaCS94" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://katt.dev/"><img src="https://avatars.githubusercontent.com/u/459267?v=4?s=64" width="64px;" alt="Alex / KATT"/><br /><sub><b>Alex / KATT</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=KATT" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/modex98"><img src="https://avatars.githubusercontent.com/u/72814784?v=4?s=64" width="64px;" alt="Mourad EL CADI"/><br /><sub><b>Mourad EL CADI</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=modex98" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Amodex98" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Guesswhoitis"><img src="https://avatars.githubusercontent.com/u/63756285?v=4?s=64" width="64px;" alt="James Hulena"/><br /><sub><b>James Hulena</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AGuesswhoitis" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://hailwood.nz/"><img src="https://avatars.githubusercontent.com/u/709773?v=4?s=64" width="64px;" alt="Matthew Hailwood"/><br /><sub><b>Matthew Hailwood</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=hailwood" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3Ahailwood" title="Reviewed Pull Requests">👀</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/mike247"><img src="https://avatars.githubusercontent.com/u/676071?v=4?s=64" width="64px;" alt="Michael Norrie"/><br /><sub><b>Michael Norrie</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Amike247" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/valentinpolitov"><img src="https://avatars.githubusercontent.com/u/39585375?v=4?s=64" width="64px;" alt="Valentin Politov"/><br /><sub><b>Valentin Politov</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=valentinpolitov" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/marnusw"><img src="https://avatars.githubusercontent.com/u/971499?v=4?s=64" width="64px;" alt="Marnus Weststrate"/><br /><sub><b>Marnus Weststrate</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=marnusw" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/mancuoj"><img src="https://avatars.githubusercontent.com/u/45707684?v=4?s=64" width="64px;" alt="mancuoj"/><br /><sub><b>mancuoj</b></sub></a><br /><a href="#content-mancuoj" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://www.chatsumlin.com/"><img src="https://avatars.githubusercontent.com/u/3067479?v=4?s=64" width="64px;" alt="Chat Sumlin"/><br /><sub><b>Chat Sumlin</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=jcsumlin" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/owenshaupt"><img src="https://avatars.githubusercontent.com/u/52288188?v=4?s=64" width="64px;" alt="Owen Haupt"/><br /><sub><b>Owen Haupt</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aowenshaupt" title="Bug reports">🐛</a> <a href="#content-owenshaupt" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ubarbaxor"><img src="https://avatars.githubusercontent.com/u/26365493?v=4?s=64" width="64px;" alt="ubarbaxor"/><br /><sub><b>ubarbaxor</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=ubarbaxor" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://michael.mior.ca/"><img src="https://avatars.githubusercontent.com/u/82501?v=4?s=64" width="64px;" alt="Michael Mior"/><br /><sub><b>Michael Mior</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Amichaelmior" title="Bug reports">🐛</a> <a href="#content-michaelmior" title="Content">🖋</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/pkhodaveissi"><img src="https://avatars.githubusercontent.com/u/4170795?v=4?s=64" width="64px;" alt="Pierre"/><br /><sub><b>Pierre</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=pkhodaveissi" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/harrywebdev"><img src="https://avatars.githubusercontent.com/u/3617415?v=4?s=64" width="64px;" alt="Harry B"/><br /><sub><b>Harry B</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aharrywebdev" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/valyrie97"><img src="https://avatars.githubusercontent.com/u/6365746?v=4?s=64" width="64px;" alt="Valerie"/><br /><sub><b>Valerie</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Avalyrie97" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=valyrie97" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://svachon.com/"><img src="https://avatars.githubusercontent.com/u/170197?v=4?s=64" width="64px;" alt="Steven Vachon"/><br /><sub><b>Steven Vachon</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=stevenvachon" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/sskirby"><img src="https://avatars.githubusercontent.com/u/25760?v=4?s=64" width="64px;" alt="Sean Kirby"/><br /><sub><b>Sean Kirby</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=sskirby" title="Tests">⚠️</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=sskirby" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/AlecsFarias"><img src="https://avatars.githubusercontent.com/u/91743821?v=4?s=64" width="64px;" alt="Alecsander Farias"/><br /><sub><b>Alecsander Farias</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=AlecsFarias" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://blankparticle.in/"><img src="https://avatars.githubusercontent.com/u/130567419?v=4?s=64" width="64px;" alt="Rahul Mishra"/><br /><sub><b>Rahul Mishra</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=BlankParticle" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3ABlankParticle" title="Reviewed Pull Requests">👀</a> <a href="#content-BlankParticle" title="Content">🖋</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/bryantcodesart"><img src="https://avatars.githubusercontent.com/u/14097078?v=4?s=64" width="64px;" alt="Bryant Smith"/><br /><sub><b>Bryant Smith</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=bryantcodesart" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Abryantcodesart" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/RobHannay"><img src="https://avatars.githubusercontent.com/u/609062?v=4?s=64" width="64px;" alt="Rob Hannay"/><br /><sub><b>Rob Hannay</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=RobHannay" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/hooriza"><img src="https://avatars.githubusercontent.com/u/507927?v=4?s=64" width="64px;" alt="Hooriza"/><br /><sub><b>Hooriza</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=hooriza" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ahooriza" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ShanSenanayake"><img src="https://avatars.githubusercontent.com/u/8779685?v=4?s=64" width="64px;" alt="ShanSenanayake"/><br /><sub><b>ShanSenanayake</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=ShanSenanayake" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/philipgher"><img src="https://avatars.githubusercontent.com/u/32325241?v=4?s=64" width="64px;" alt="Philip Ghering"/><br /><sub><b>Philip Ghering</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=philipgher" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ladislasdellinger"><img src="https://avatars.githubusercontent.com/u/111739019?v=4?s=64" width="64px;" alt="Ladislas Dellinger"/><br /><sub><b>Ladislas Dellinger</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=ladislasdellinger" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/TheHaff"><img src="https://avatars.githubusercontent.com/u/2486653?v=4?s=64" width="64px;" alt="Haff"/><br /><sub><b>Haff</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=TheHaff" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/lisandro52"><img src="https://avatars.githubusercontent.com/u/5612241?v=4?s=64" width="64px;" alt="Lisandro"/><br /><sub><b>Lisandro</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=lisandro52" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/amirking59"><img src="https://avatars.githubusercontent.com/u/58273240?v=4?s=64" width="64px;" alt="Amir hossein rezaei"/><br /><sub><b>Amir hossein rezaei</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=amirking59" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/nmacianx"><img src="https://avatars.githubusercontent.com/u/40004186?v=4?s=64" width="64px;" alt="Nicolas Macian"/><br /><sub><b>Nicolas Macian</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Anmacianx" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=nmacianx" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://dreamsof.dev/"><img src="https://avatars.githubusercontent.com/u/13162026?v=4?s=64" width="64px;" alt="Nate Forsyth"/><br /><sub><b>Nate Forsyth</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=nateforsyth" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/satelllte"><img src="https://avatars.githubusercontent.com/u/20585619?v=4?s=64" width="64px;" alt="satelllte"/><br /><sub><b>satelllte</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=satelllte" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asatelllte" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/fedemp"><img src="https://avatars.githubusercontent.com/u/735314?v=4?s=64" width="64px;" alt="Federico Panico"/><br /><sub><b>Federico Panico</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=fedemp" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/iamwillnbcu"><img src="https://avatars.githubusercontent.com/u/137317773?v=4?s=64" width="64px;" alt="William Pei Yuan"/><br /><sub><b>William Pei Yuan</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=iamwillnbcu" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="http://www.gazeta-cu-anunturi.ro/"><img src="https://avatars.githubusercontent.com/u/757999?v=4?s=64" width="64px;" alt="Mihai"/><br /><sub><b>Mihai</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=DarkAng3L" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ADarkAng3L" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://habib.ogunsola.me/"><img src="https://avatars.githubusercontent.com/u/39172573?v=4?s=64" width="64px;" alt="Habib Ogunsola"/><br /><sub><b>Habib Ogunsola</b></sub></a><br /><a href="#content-ogunsolahabib" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://ashfurrow.com/"><img src="https://avatars.githubusercontent.com/u/498212?v=4?s=64" width="64px;" alt="Ash Furrow"/><br /><sub><b>Ash Furrow</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=ashfurrow" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://turus.ro/"><img src="https://avatars.githubusercontent.com/u/32390499?v=4?s=64" width="64px;" alt="Daniel Turuș"/><br /><sub><b>Daniel Turuș</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=danielturus" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/rahulchaudhary2244/"><img src="https://avatars.githubusercontent.com/u/54467972?v=4?s=64" width="64px;" alt="Rahul Chaudhary"/><br /><sub><b>Rahul Chaudhary</b></sub></a><br /><a href="#content-rahulchaudhary2244" title="Content">🖋</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Arahulchaudhary2244" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Joshyahweh"><img src="https://avatars.githubusercontent.com/u/61137067?v=4?s=64" width="64px;" alt="Joshua Ojoawo"/><br /><sub><b>Joshua Ojoawo</b></sub></a><br /><a href="#ideas-Joshyahweh" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AJoshyahweh" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://jackdh.com/"><img src="https://avatars.githubusercontent.com/u/1907451?v=4?s=64" width="64px;" alt="Jack"/><br /><sub><b>Jack</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=jackdh" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jonlinkens"><img src="https://avatars.githubusercontent.com/u/20417521?v=4?s=64" width="64px;" alt="Jon Linkens"/><br /><sub><b>Jon Linkens</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=jonlinkens" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajonlinkens" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://velog.io/@ojj1123"><img src="https://avatars.githubusercontent.com/u/33178048?v=4?s=64" width="64px;" alt="Jeongjin Oh"/><br /><sub><b>Jeongjin Oh</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aojj1123" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/tli26"><img src="https://avatars.githubusercontent.com/u/114947190?v=4?s=64" width="64px;" alt="Tianning Li"/><br /><sub><b>Tianning Li</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=tli26" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://larsartmann.com/"><img src="https://avatars.githubusercontent.com/u/23587853?v=4?s=64" width="64px;" alt="Lars Artmann"/><br /><sub><b>Lars Artmann</b></sub></a><br /><a href="#content-LarsArtmann" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/KBobovskiy"><img src="https://avatars.githubusercontent.com/u/35502578?v=4?s=64" width="64px;" alt="KBobovskiy"/><br /><sub><b>KBobovskiy</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=KBobovskiy" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ryngonzalez"><img src="https://avatars.githubusercontent.com/u/635300?v=4?s=64" width="64px;" alt="✨ Kathryn Gonzalez ✨"/><br /><sub><b>✨ Kathryn Gonzalez ✨</b></sub></a><br /><a href="#content-ryngonzalez" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/slavik-chapelskyi"><img src="https://avatars.githubusercontent.com/u/33541009?v=4?s=64" width="64px;" alt="Yaroslav Chapelskyi"/><br /><sub><b>Yaroslav Chapelskyi</b></sub></a><br /><a href="#content-slavik-chapelskyi" title="Content">🖋</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/sverps"><img src="https://avatars.githubusercontent.com/u/15879327?v=4?s=64" width="64px;" alt="Samuel Van Erps"/><br /><sub><b>Samuel Van Erps</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3Asverps" title="Reviewed Pull Requests">👀</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ojolowoblue"><img src="https://avatars.githubusercontent.com/u/104099474?v=4?s=64" width="64px;" alt="ojolowoblue"/><br /><sub><b>ojolowoblue</b></sub></a><br /><a href="#content-ojolowoblue" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://short.io/"><img src="https://avatars.githubusercontent.com/u/75169?v=4?s=64" width="64px;" alt="Andrii Kostenko"/><br /><sub><b>Andrii Kostenko</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=gugu" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/AkeemAllen"><img src="https://avatars.githubusercontent.com/u/32404761?v=4?s=64" width="64px;" alt="Akeem Allen"/><br /><sub><b>Akeem Allen</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=AkeemAllen" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AAkeemAllen" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/trongbinh15"><img src="https://avatars.githubusercontent.com/u/43725147?v=4?s=64" width="64px;" alt="trongbinhnguyen"/><br /><sub><b>trongbinhnguyen</b></sub></a><br /><a href="#content-trongbinh15" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://lawlesx.vercel.app/"><img src="https://avatars.githubusercontent.com/u/52166437?v=4?s=64" width="64px;" alt="Aniruddha Sil"/><br /><sub><b>Aniruddha Sil</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=lawlesx" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/okinawaa"><img src="https://avatars.githubusercontent.com/u/69495129?v=4?s=64" width="64px;" alt="박찬혁"/><br /><sub><b>박찬혁</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3Aokinawaa" title="Reviewed Pull Requests">👀</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://anishchhetri.com.np/"><img src="https://avatars.githubusercontent.com/u/98446102?v=4?s=64" width="64px;" alt="Anish"/><br /><sub><b>Anish</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=novanish" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://hutri.fi/"><img src="https://avatars.githubusercontent.com/u/55588133?v=4?s=64" width="64px;" alt="Hugo Hutri"/><br /><sub><b>Hugo Hutri</b></sub></a><br /><a href="#content-hugohutri" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://balzguenat.ch/"><img src="https://avatars.githubusercontent.com/u/6719014?v=4?s=64" width="64px;" alt="Balz Guenat"/><br /><sub><b>Balz Guenat</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=BalzGuenat" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ottergeorge"><img src="https://avatars.githubusercontent.com/u/108759685?v=4?s=64" width="64px;" alt="OtterGeorge"/><br /><sub><b>OtterGeorge</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=ottergeorge" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/samay-rgb"><img src="https://avatars.githubusercontent.com/u/73112080?v=4?s=64" width="64px;" alt="Samay Sagar"/><br /><sub><b>Samay Sagar</b></sub></a><br /><a href="#content-samay-rgb" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/pedrobslisboa"><img src="https://avatars.githubusercontent.com/u/35539594?v=4?s=64" width="64px;" alt="Pedro Lisboa"/><br /><sub><b>Pedro Lisboa</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Apedrobslisboa" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/henriqemalheiros"><img src="https://avatars.githubusercontent.com/u/23730762?v=4?s=64" width="64px;" alt="Henrique Malheiros"/><br /><sub><b>Henrique Malheiros</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ahenriqemalheiros" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="http://www.unfocus.com/"><img src="https://avatars.githubusercontent.com/u/245825?v=4?s=64" width="64px;" alt="Kevin Newman"/><br /><sub><b>Kevin Newman</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=CaptainN" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/a503189"><img src="https://avatars.githubusercontent.com/u/28802989?v=4?s=64" width="64px;" alt="a503189"/><br /><sub><b>a503189</b></sub></a><br /><a href="#content-a503189" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://t.me/mouradelcadi"><img src="https://avatars.githubusercontent.com/u/72814784?v=4?s=64" width="64px;" alt="Mourad EL CADI"/><br /><sub><b>Mourad EL CADI</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=mod7ex" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Lop3sPedro"><img src="https://avatars.githubusercontent.com/u/89090945?v=4?s=64" width="64px;" alt="Pedro Henrique Lopes"/><br /><sub><b>Pedro Henrique Lopes</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=Lop3sPedro" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/danbiilee"><img src="https://avatars.githubusercontent.com/u/53761241?v=4?s=64" width="64px;" alt="Danbi Lee"/><br /><sub><b>Danbi Lee</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=danbiilee" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/cojennin"><img src="https://avatars.githubusercontent.com/u/1888152?v=4?s=64" width="64px;" alt="Connor Jennings"/><br /><sub><b>Connor Jennings</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=cojennin" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/lgxm3z"><img src="https://avatars.githubusercontent.com/u/28831375?v=4?s=64" width="64px;" alt="Lucas Gomes"/><br /><sub><b>Lucas Gomes</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Algxm3z" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=lgxm3z" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/zaggino"><img src="https://avatars.githubusercontent.com/u/1067319?v=4?s=64" width="64px;" alt="Martin Zagora"/><br /><sub><b>Martin Zagora</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=zaggino" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/kvdo2"><img src="https://avatars.githubusercontent.com/u/78251524?v=4?s=64" width="64px;" alt="KvD"/><br /><sub><b>KvD</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=kvdo2" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/SupraSmooth"><img src="https://avatars.githubusercontent.com/u/18029247?v=4?s=64" width="64px;" alt="Alex"/><br /><sub><b>Alex</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=SupraSmooth" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/kaceycleveland"><img src="https://avatars.githubusercontent.com/u/88064187?v=4?s=64" width="64px;" alt="Kacey Cleveland"/><br /><sub><b>Kacey Cleveland</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3Akaceycleveland" title="Reviewed Pull Requests">👀</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/oviirup"><img src="https://avatars.githubusercontent.com/u/49820575?v=4?s=64" width="64px;" alt="Avirup Ghosh"/><br /><sub><b>Avirup Ghosh</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aoviirup" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/yabbal"><img src="https://avatars.githubusercontent.com/u/15120524?v=4?s=64" width="64px;" alt="yabbal"/><br /><sub><b>yabbal</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=yabbal" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://patik.com/"><img src="https://avatars.githubusercontent.com/u/262137?v=4?s=64" width="64px;" alt="Craig Patik"/><br /><sub><b>Craig Patik</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Apatik" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Silverium"><img src="https://avatars.githubusercontent.com/u/10578392?v=4?s=64" width="64px;" alt="Soldeplata Saketos Candela"/><br /><sub><b>Soldeplata Saketos Candela</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=Silverium" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/TENDOUZHI"><img src="https://avatars.githubusercontent.com/u/82806526?v=4?s=64" width="64px;" alt="TENDOUZHI"/><br /><sub><b>TENDOUZHI</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ATENDOUZHI" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/wachulski"><img src="https://avatars.githubusercontent.com/u/1669844?v=4?s=64" width="64px;" alt="Marcin Wachulski"/><br /><sub><b>Marcin Wachulski</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Awachulski" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://salmans.work/"><img src="https://avatars.githubusercontent.com/u/15085416?v=4?s=64" width="64px;" alt="Salman Fazal"/><br /><sub><b>Salman Fazal</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asalmanfazal01" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/shrugs"><img src="https://avatars.githubusercontent.com/u/1535001?v=4?s=64" width="64px;" alt="shrugs"/><br /><sub><b>shrugs</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ashrugs" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Hyodori04"><img src="https://avatars.githubusercontent.com/u/57362573?v=4?s=64" width="64px;" alt="hyodori"/><br /><sub><b>hyodori</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AHyodori04" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/eleazareramos"><img src="https://avatars.githubusercontent.com/u/25910203?v=4?s=64" width="64px;" alt="Eleazar “E” Ramos"/><br /><sub><b>Eleazar “E” Ramos</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aeleazareramos" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/retnag"><img src="https://avatars.githubusercontent.com/u/18302198?v=4?s=64" width="64px;" alt="retnag"/><br /><sub><b>retnag</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aretnag" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://jaeyoung.dev/"><img src="https://avatars.githubusercontent.com/u/55247450?v=4?s=64" width="64px;" alt="J young Lee"/><br /><sub><b>J young Lee</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Abeefiker" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/fiws"><img src="https://avatars.githubusercontent.com/u/3409958?v=4?s=64" width="64px;" alt="Filip Weiss"/><br /><sub><b>Filip Weiss</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Afiws" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://mariusgundersen.net/"><img src="https://avatars.githubusercontent.com/u/464152?v=4?s=64" width="64px;" alt="Marius Gundersen"/><br /><sub><b>Marius Gundersen</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AmariusGundersen" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/VenomFate-619"><img src="https://avatars.githubusercontent.com/u/67755128?v=4?s=64" width="64px;" alt="Syed Aman Ali"/><br /><sub><b>Syed Aman Ali</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AVenomFate-619" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://ingadi.work/"><img src="https://avatars.githubusercontent.com/u/6121225?v=4?s=64" width="64px;" alt="Axel Ingadi"/><br /><sub><b>Axel Ingadi</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aingadi" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/andyjphu"><img src="https://avatars.githubusercontent.com/u/51890861?v=4?s=64" width="64px;" alt="AndyP"/><br /><sub><b>AndyP</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aandyjphu" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ishanVaghasiya"><img src="https://avatars.githubusercontent.com/u/98661936?v=4?s=64" width="64px;" alt="ishanVaghasiya"/><br /><sub><b>ishanVaghasiya</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AishanVaghasiya" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/nico-martinucci"><img src="https://avatars.githubusercontent.com/u/80868741?v=4?s=64" width="64px;" alt="Nico Martinucci"/><br /><sub><b>Nico Martinucci</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Anico-martinucci" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/technophile-04"><img src="https://avatars.githubusercontent.com/u/80153681?v=4?s=64" width="64px;" alt="Shiv Bhonde &#124; shivbhonde.eth"/><br /><sub><b>Shiv Bhonde &#124; shivbhonde.eth</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Atechnophile-04" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/fritzmonkey"><img src="https://avatars.githubusercontent.com/u/10103840?v=4?s=64" width="64px;" alt="fritzmonkey"/><br /><sub><b>fritzmonkey</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Afritzmonkey" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/rrmesquita"><img src="https://avatars.githubusercontent.com/u/30835404?v=4?s=64" width="64px;" alt="Rodrigo Mesquita"/><br /><sub><b>Rodrigo Mesquita</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Arrmesquita" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://moshe.io/"><img src="https://avatars.githubusercontent.com/u/534911?v=4?s=64" width="64px;" alt="Moshe Simantov"/><br /><sub><b>Moshe Simantov</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Amoshest" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/BekaArabidze98"><img src="https://avatars.githubusercontent.com/u/122085038?v=4?s=64" width="64px;" alt="Beka"/><br /><sub><b>Beka</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ABekaArabidze98" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/abdofola"><img src="https://avatars.githubusercontent.com/u/30251052?v=4?s=64" width="64px;" alt="Abdallah Alkaser"/><br /><sub><b>Abdallah Alkaser</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aabdofola" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=abdofola" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/CarlosNZ"><img src="https://avatars.githubusercontent.com/u/5456533?v=4?s=64" width="64px;" alt="Carl Smith"/><br /><sub><b>Carl Smith</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ACarlosNZ" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ogroppo"><img src="https://avatars.githubusercontent.com/u/4820803?v=4?s=64" width="64px;" alt="Orlando Groppo"/><br /><sub><b>Orlando Groppo</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aogroppo" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/thany"><img src="https://avatars.githubusercontent.com/u/152227?v=4?s=64" width="64px;" alt="Martijn Saly"/><br /><sub><b>Martijn Saly</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Athany" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://quinn.io/"><img src="https://avatars.githubusercontent.com/u/3764?v=4?s=64" width="64px;" alt="Quinn Shanahan"/><br /><sub><b>Quinn Shanahan</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aquinn" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://antoinek.fr/"><img src="https://avatars.githubusercontent.com/u/54948363?v=4?s=64" width="64px;" alt="Antoine Kingue"/><br /><sub><b>Antoine Kingue</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AAntoineKM" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/zanzlender"><img src="https://avatars.githubusercontent.com/u/44570474?v=4?s=64" width="64px;" alt="Žan Žlender"/><br /><sub><b>Žan Žlender</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Azanzlender" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/sebadom"><img src="https://avatars.githubusercontent.com/u/3877952?v=4?s=64" width="64px;" alt="Sebastian Dominguez"/><br /><sub><b>Sebastian Dominguez</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asebadom" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jmc420"><img src="https://avatars.githubusercontent.com/u/11723529?v=4?s=64" width="64px;" alt="James Cowan"/><br /><sub><b>James Cowan</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajmc420" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/bayraak"><img src="https://avatars.githubusercontent.com/u/10470072?v=4?s=64" width="64px;" alt="Bayram Ali Basgul"/><br /><sub><b>Bayram Ali Basgul</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Abayraak" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://wyatt.castaneda.family/"><img src="https://avatars.githubusercontent.com/u/17957937?v=4?s=64" width="64px;" alt="Wyatt Castaneda"/><br /><sub><b>Wyatt Castaneda</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AWyattCast44" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/tsnevillecom"><img src="https://avatars.githubusercontent.com/u/3151454?v=4?s=64" width="64px;" alt="Tim Neville"/><br /><sub><b>Tim Neville</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Atsnevillecom" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/shoooe"><img src="https://avatars.githubusercontent.com/u/733227?v=4?s=64" width="64px;" alt="Thomas Pigarelli"/><br /><sub><b>Thomas Pigarelli</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ashoooe" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jherdman"><img src="https://avatars.githubusercontent.com/u/3300?v=4?s=64" width="64px;" alt="James Herdman"/><br /><sub><b>James Herdman</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajherdman" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/pociej"><img src="https://avatars.githubusercontent.com/u/3854675?v=4?s=64" width="64px;" alt="Grzegorz Pociejewski"/><br /><sub><b>Grzegorz Pociejewski</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Apociej" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/flyon"><img src="https://avatars.githubusercontent.com/u/341567?v=4?s=64" width="64px;" alt="René Verheij"/><br /><sub><b>René Verheij</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aflyon" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/PatrykKuniczak"><img src="https://avatars.githubusercontent.com/u/64608510?v=4?s=64" width="64px;" alt="PatrykKuniczak"/><br /><sub><b>PatrykKuniczak</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3APatrykKuniczak" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://cromodder.github.io/"><img src="https://avatars.githubusercontent.com/u/7691110?v=4?s=64" width="64px;" alt="Paolo Božac"/><br /><sub><b>Paolo Božac</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ACroModder" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/reinos"><img src="https://avatars.githubusercontent.com/u/633730?v=4?s=64" width="64px;" alt="Rein"/><br /><sub><b>Rein</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Areinos" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/FloorianB"><img src="https://avatars.githubusercontent.com/u/110407858?v=4?s=64" width="64px;" alt="FloorianB"/><br /><sub><b>FloorianB</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AFloorianB" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/xuanhung1509"><img src="https://avatars.githubusercontent.com/u/89293664?v=4?s=64" width="64px;" alt="Xuan Hung"/><br /><sub><b>Xuan Hung</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Axuanhung1509" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://monawwar.io/"><img src="https://avatars.githubusercontent.com/u/31907722?v=4?s=64" width="64px;" alt="Monawwar Abdullah"/><br /><sub><b>Monawwar Abdullah</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Amxvsh" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/haroldo-ok"><img src="https://avatars.githubusercontent.com/u/1457465?v=4?s=64" width="64px;" alt="Haroldo de Oliveira Pinheiro"/><br /><sub><b>Haroldo de Oliveira Pinheiro</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aharoldo-ok" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://portfoliobytamjid.vercel.app/"><img src="https://avatars.githubusercontent.com/u/57794102?v=4?s=64" width="64px;" alt="Tamjid Ahmed"/><br /><sub><b>Tamjid Ahmed</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ATamjidAhmed10" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jv-lopez"><img src="https://avatars.githubusercontent.com/u/93750956?v=4?s=64" width="64px;" alt="jv-lopez"/><br /><sub><b>jv-lopez</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajv-lopez" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://macr.ae/"><img src="https://avatars.githubusercontent.com/u/472830?v=4?s=64" width="64px;" alt="Callum Macrae"/><br /><sub><b>Callum Macrae</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Acallumacrae" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/0529bill"><img src="https://avatars.githubusercontent.com/u/62455148?v=4?s=64" width="64px;" alt="bywater529"/><br /><sub><b>bywater529</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3A0529bill" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/kevinxh"><img src="https://avatars.githubusercontent.com/u/10948652?v=4?s=64" width="64px;" alt="Kevin He"/><br /><sub><b>Kevin He</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Akevinxh" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/FredericoGauz"><img src="https://avatars.githubusercontent.com/u/18327882?v=4?s=64" width="64px;" alt="FredericoGauz"/><br /><sub><b>FredericoGauz</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AFredericoGauz" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://www.jonlemofficial.com/"><img src="https://avatars.githubusercontent.com/u/38771842?v=4?s=64" width="64px;" alt="Jonathan &quot;JonLem&quot; Lemos"/><br /><sub><b>Jonathan &quot;JonLem&quot; Lemos</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AJonLemOfficial" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/xegulon"><img src="https://avatars.githubusercontent.com/u/74178038?v=4?s=64" width="64px;" alt="Xegulon"/><br /><sub><b>Xegulon</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Axegulon" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/TomSmedley"><img src="https://avatars.githubusercontent.com/u/95056193?v=4?s=64" width="64px;" alt="Tom Smedley"/><br /><sub><b>Tom Smedley</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ATomSmedley" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/lightbluepoppy"><img src="https://avatars.githubusercontent.com/u/65863981?v=4?s=64" width="64px;" alt="lightbluepoppy"/><br /><sub><b>lightbluepoppy</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Alightbluepoppy" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Dchole"><img src="https://avatars.githubusercontent.com/u/47068381?v=4?s=64" width="64px;" alt="Derek Oware"/><br /><sub><b>Derek Oware</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ADchole" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://fragmentedthought.com/"><img src="https://avatars.githubusercontent.com/u/12085479?v=4?s=64" width="64px;" alt="Lance Gliser"/><br /><sub><b>Lance Gliser</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Alancegliser" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/lewxdev"><img src="https://avatars.githubusercontent.com/u/6710419?v=4?s=64" width="64px;" alt="J. Lewis"/><br /><sub><b>J. Lewis</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Alewxdev" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/yairy"><img src="https://avatars.githubusercontent.com/u/3206243?v=4?s=64" width="64px;" alt="Yair"/><br /><sub><b>Yair</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ayairy" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://firecamp.dev/"><img src="https://avatars.githubusercontent.com/u/5078921?v=4?s=64" width="64px;" alt="Nishchit"/><br /><sub><b>Nishchit</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ANishchit14" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Nejjer"><img src="https://avatars.githubusercontent.com/u/80219537?v=4?s=64" width="64px;" alt="Devofy"/><br /><sub><b>Devofy</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3ANejjer" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://joshguyette.com/"><img src="https://avatars.githubusercontent.com/u/28668902?v=4?s=64" width="64px;" alt="Josh Guyette"/><br /><sub><b>Josh Guyette</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Anightness" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/dora-ljh"><img src="https://avatars.githubusercontent.com/u/35205701?v=4?s=64" width="64px;" alt="Dora Li"/><br /><sub><b>Dora Li</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Adora-ljh" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/kg-currenxie"><img src="https://avatars.githubusercontent.com/u/48229166?v=4?s=64" width="64px;" alt="Kristian Gerardsson"/><br /><sub><b>Kristian Gerardsson</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Akg-currenxie" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jdpt0"><img src="https://avatars.githubusercontent.com/u/19761394?v=4?s=64" width="64px;" alt="James Powell"/><br /><sub><b>James Powell</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajdpt0" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/boaz-poolman-662162115/"><img src="https://avatars.githubusercontent.com/u/9551934?v=4?s=64" width="64px;" alt="Boaz Poolman"/><br /><sub><b>Boaz Poolman</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aboazpoolman" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/roker15"><img src="https://avatars.githubusercontent.com/u/59526869?v=4?s=64" width="64px;" alt="roker15"/><br /><sub><b>roker15</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aroker15" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/fadhilx"><img src="https://avatars.githubusercontent.com/u/15516786?v=4?s=64" width="64px;" alt="Fadhil Ahmad"/><br /><sub><b>Fadhil Ahmad</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Afadhilx" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Chandler-Zhu"><img src="https://avatars.githubusercontent.com/u/61914365?v=4?s=64" width="64px;" alt="Chandler-Zhu"/><br /><sub><b>Chandler-Zhu</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AChandler-Zhu" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/nixjs"><img src="https://avatars.githubusercontent.com/u/23132483?v=4?s=64" width="64px;" alt="Nghi Nguyen"/><br /><sub><b>Nghi Nguyen</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Anixjs" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ShravanSunder"><img src="https://avatars.githubusercontent.com/u/5294949?v=4?s=64" width="64px;" alt="Shravan Sunder"/><br /><sub><b>Shravan Sunder</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AShravanSunder" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Johannes5"><img src="https://avatars.githubusercontent.com/u/14299835?v=4?s=64" width="64px;" alt="Johannes5"/><br /><sub><b>Johannes5</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AJohannes5" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/sebahhpeya"><img src="https://avatars.githubusercontent.com/u/93996817?v=4?s=64" width="64px;" alt="sebahhpeya"/><br /><sub><b>sebahhpeya</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asebahhpeya" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://onezero.co.il/"><img src="https://avatars.githubusercontent.com/u/45389557?v=4?s=64" width="64px;" alt="Or Nakash"/><br /><sub><b>Or Nakash</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aornakash" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/hepiyellow"><img src="https://avatars.githubusercontent.com/u/6338722?v=4?s=64" width="64px;" alt="Erez Makavy"/><br /><sub><b>Erez Makavy</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ahepiyellow" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://andymerskin.com/"><img src="https://avatars.githubusercontent.com/u/758090?v=4?s=64" width="64px;" alt="Andy Merskin"/><br /><sub><b>Andy Merskin</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aandymerskin" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/chainalert-bot"><img src="https://avatars.githubusercontent.com/u/95303823?v=4?s=64" width="64px;" alt="ChainAlert Bot"/><br /><sub><b>ChainAlert Bot</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Achainalert-bot" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/tmdesigned"><img src="https://avatars.githubusercontent.com/u/3608018?v=4?s=64" width="64px;" alt="Taylor Morgan"/><br /><sub><b>Taylor Morgan</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Atmdesigned" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://abkabioye.me/"><img src="https://avatars.githubusercontent.com/u/18709032?v=4?s=64" width="64px;" alt="wisdomabioye"/><br /><sub><b>wisdomabioye</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Awisdomabioye" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://www.samtheq.com"><img src="https://avatars.githubusercontent.com/u/51345689?v=4?s=64" width="64px;" alt="Samuel Quiñones"/><br /><sub><b>Samuel Quiñones</b></sub></a><br /><a href="#ideas-SamuelQuinones" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ymc-maha"><img src="https://avatars.githubusercontent.com/u/697307?v=4?s=64" width="64px;" alt="Manuel"/><br /><sub><b>Manuel</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=ymc-maha" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aymc-maha" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Yurchishin"><img src="https://avatars.githubusercontent.com/u/36650915?v=4?s=64" width="64px;" alt="Yurii Rybak"/><br /><sub><b>Yurii Rybak</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AYurchishin" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/iuriiiurevich"><img src="https://avatars.githubusercontent.com/u/15759600?v=4?s=64" width="64px;" alt="Yury Demin"/><br /><sub><b>Yury Demin</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aiuriiiurevich" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=iuriiiurevich" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://tewks.io/"><img src="https://avatars.githubusercontent.com/u/3970573?v=4?s=64" width="64px;" alt="Jon Tewksbury"/><br /><sub><b>Jon Tewksbury</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=jontewks" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajontewks" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/novacdenis"><img src="https://avatars.githubusercontent.com/u/45555668?v=4?s=64" width="64px;" alt="Novac Denis"/><br /><sub><b>Novac Denis</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=novacdenis" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Anovacdenis" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/kyrylo-soulandwolf"><img src="https://avatars.githubusercontent.com/u/54762253?v=4?s=64" width="64px;" alt="kyrylo-soulandwolf"/><br /><sub><b>kyrylo-soulandwolf</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=kyrylo-soulandwolf" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Akyrylo-soulandwolf" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/misidoro"><img src="https://avatars.githubusercontent.com/u/3635023?v=4?s=64" width="64px;" alt="Miguel Isidoro"/><br /><sub><b>Miguel Isidoro</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=misidoro" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://crowds.space/"><img src="https://avatars.githubusercontent.com/u/828918?v=4?s=64" width="64px;" alt="Yuriy Gromchenko"/><br /><sub><b>Yuriy Gromchenko</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=gromchen" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://jcbhmr.me"><img src="https://avatars.githubusercontent.com/u/61068799?v=4?s=64" width="64px;" alt="Jacob Hummer"/><br /><sub><b>Jacob Hummer</b></sub></a><br /><a href="#ideas-jcbhmr" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/k-melnychuk"><img src="https://avatars.githubusercontent.com/u/22131019?v=4?s=64" width="64px;" alt="Kyrylo Melnychuk"/><br /><sub><b>Kyrylo Melnychuk</b></sub></a><br /><a href="#content-k-melnychuk" title="Content">🖋</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=k-melnychuk" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/LumaKernel"><img src="https://avatars.githubusercontent.com/u/29811106?v=4?s=64" width="64px;" alt="Luma"/><br /><sub><b>Luma</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=LumaKernel" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Newbie012"><img src="https://avatars.githubusercontent.com/u/10504365?v=4?s=64" width="64px;" alt="Eliya Cohen"/><br /><sub><b>Eliya Cohen</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=Newbie012" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/isumix"><img src="https://avatars.githubusercontent.com/u/16747416?v=4?s=64" width="64px;" alt="Igor Sukharev"/><br /><sub><b>Igor Sukharev</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aisumix" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/pookmish"><img src="https://avatars.githubusercontent.com/u/7185045?v=4?s=64" width="64px;" alt="pookmish"/><br /><sub><b>pookmish</b></sub></a><br /><a href="#ideas-pookmish" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/metav-drimz"><img src="https://avatars.githubusercontent.com/u/113976282?v=4?s=64" width="64px;" alt="metav-drimz"/><br /><sub><b>metav-drimz</b></sub></a><br /><a href="#ideas-metav-drimz" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://luckrnx09.com/"><img src="https://avatars.githubusercontent.com/u/113882203?v=4?s=64" width="64px;" alt="luckrnx09"/><br /><sub><b>luckrnx09</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=luckrnx09" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/RubyHuntsman"><img src="https://avatars.githubusercontent.com/u/24682602?v=4?s=64" width="64px;" alt="Hubert Kuczmierczyk"/><br /><sub><b>Hubert Kuczmierczyk</b></sub></a><br /><a href="#ideas-RubyHuntsman" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3ARubyHuntsman" title="Reviewed Pull Requests">👀</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/dandubya"><img src="https://avatars.githubusercontent.com/u/67660308?v=4?s=64" width="64px;" alt="dandubya"/><br /><sub><b>dandubya</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=dandubya" title="Documentation">📖</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/LonelyFellas"><img src="https://avatars.githubusercontent.com/u/38754760?v=4?s=64" width="64px;" alt="Darwish"/><br /><sub><b>Darwish</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=LonelyFellas" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="http://www.jesuisjo.com/"><img src="https://avatars.githubusercontent.com/u/2046871?v=4?s=64" width="64px;" alt="Jonathan Raoult"/><br /><sub><b>Jonathan Raoult</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajraoult" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3Ajraoult" title="Reviewed Pull Requests">👀</a></td>
    </tr>
  </tbody>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification ([emoji key](https://allcontributors.org/docs/en/emoji-key)). Contributions of any kind welcome!


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: [juliencrn]
# patreon: # Replace with a single Patreon username
# open_collective: #usehooks-ts # Replace with a single Open Collective username
# ko_fi: # Replace with a single Ko-fi username
# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
# liberapay: # Replace with a single Liberapay username
# issuehunt: # Replace with a single IssueHunt username
# otechie: # Replace with a single Otechie username
# lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: [
  "https://juliencaron.com/donate",
  "https://www.paypal.com/paypalme/juliencrn",
  "https://buy.stripe.com/fZefZY8Bv32cg9O3cc",
  "https://www.buymeacoffee.com/juliencrn"
]


================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.yml
================================================
name: 'Bug report 🐞'
description: >-
  Create a report to help us improve
title: '[BUG]'
labels:
  - bug
body:
  - type: textarea
    id: describe_bug
    attributes:
      label: Describe the bug
      description: A clear and concise description of what the bug is. Include any error messages or unexpected behaviors.
    validations:
      required: true

  - type: textarea
    id: reproduce_steps
    attributes:
      label: To Reproduce
      description: Outline the steps to reproduce the issue. Be specific and include details like browser, OS, or any relevant configurations.
    validations:
      required: true

  - type: textarea
    id: expected_behavior
    attributes:
      label: Expected behavior
      description: Explain what you expected to happen.
    validations:
      required: true

  - type: textarea
    id: additional_context
    attributes:
      label: Additional context
      description: Include any other relevant information that might help understand the issue.


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: View documentation 📚
    url: https://usehooks-ts.com/
    about: Check out the official docs for answers to common questions.
  - name: Feature requests 💡
    url: https://github.com/juliencrn/usehooks-ts/discussions/categories/ideas
    about: Suggest a new React hook idea.
  - name: Questions 💭
    url: https://github.com/juliencrn/usehooks-ts/discussions/categories/help
    about: Need support with a React hook problem? Open up a help request.
  - name: Donate ❤️
    url: https://github.com/sponsors/juliencrn
    about: Love usehooks-ts? Show your support by donating today!


================================================
FILE: .github/ISSUE_TEMPLATE/update-docs.yml
================================================
name: Update docs ✍️
description: >-
  Find a mistake in our documentation, or have a suggestion to improve them? Let us know here.
labels:
  - documentation
body:
  - type: textarea
    id: description
    attributes:
      label: Describe the problem
      description: A clear and concise description of what is wrong in the documentation or what you would like to improve. Please include URLs to the pages you're referring to.
    validations:
      required: true
  - type: textarea
    id: context
    attributes:
      label: Additional context
      description: Add any other context about the problem here.


================================================
FILE: .github/workflows/ci.yml
================================================
name: Build and test

on:
  push:
    branches:
      - 'master'
  pull_request:

env:
  NODE_VERSION: 20
  PNPM_VERSION: 8

jobs:
  test:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 2

      - name: Setup Pnpm
        uses: pnpm/action-setup@v3
        with:
          version: ${{ env.PNPM_VERSION }}

      - name: Setup Node.js environment
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: pnpm build

      - name: Lint
        run: pnpm lint

      - name: Test
        run: pnpm test


================================================
FILE: .github/workflows/update-algolia-index.yml
================================================
name: Update Algolia index

on:
  push:
    branches:
      - master

env:
  NODE_VERSION: 20
  PNPM_VERSION: 8

jobs:
  run:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 2

      - name: Setup Pnpm
        uses: pnpm/action-setup@v3
        with:
          version: ${{ env.PNPM_VERSION }}

      - name: Setup Node.js environment
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: pnpm build

      - name: Generate documentation from JSDoc
        run: pnpm generate-doc

      - name: Update Algolia index
        env:
          ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }}
          ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }}
        run: pnpm update-algolia-index


================================================
FILE: .gitignore
================================================
node_modules

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
npm-debug.log*
*.tsbuildinfo

# Cache
.npm
.cache
.eslintcache
.turbo

# Compiled stuff
dist
generated

# Coverage
coverage

# dotenv environment variable files
.env*
!.env.example

# Output of 'npm pack'
*.tgz

# Mac files
.DS_Store

# Local Netlify folder
.netlify


================================================
FILE: .prettierignore
================================================
node_modules
templates
dist
.turbo
public
.cache
pnpm-lock.yaml
.changeset
.github
apps/www/.next


================================================
FILE: .prettierrc
================================================
{
  "arrowParens": "avoid",
  "semi": false,
  "printWidth": 80,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "all"
}


================================================
FILE: .vscode/settings.json
================================================
{
  "editor.formatOnSave": true,
  "editor.tabSize": 2,
  "files.encoding": "utf8",
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  "search.exclude": {
    "public/**": true,
    "node_modules/**": true,
    "coverage/**": true,
    "dist/**": true,
    "generated/**": true,
    ".cache/**": true,
    ".git/**": true,
    "**/package-lock.json": true,
    "**/pnpm-lock.yaml": true
  },
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact"
  ],
  "eslint.format.enable": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.fixAll": "explicit"
  },
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "cSpell.words": [
    "algolia",
    "clsx",
    "cmdk",
    "contentlayer",
    "fira",
    "frontmatter",
    "gtag",
    "juliencrn",
    "lucide",
    "nextjs",
    "okaidia",
    "prismjs",
    "rehype",
    "tailwindcss",
    "UMAMI",
    "usehooks"
  ],
  "eslint.workingDirectories": [
    {
      "directory": "apps/www",
      "changeProcessCWD": true
    },
    {
      "directory": "packages/eslint-config-custom",
      "changeProcessCWD": true
    },
    {
      "directory": "packages/usehooks-ts",
      "changeProcessCWD": true
    }
  ],
  "[jsonc]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[yaml]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescript]": {
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  },
  "files.associations": { "*.json": "jsonc" }
}


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2020 Julien CARON

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



================================================
FILE: README.md
================================================
<img src="https://github.com/juliencrn/usehooks-ts/blob/master/.github/screenshot.png" alt="usehooks-ts banner" align="center" />

<br />

<div align="center">
<h1>usehooks-ts</h1>

<div>React hook library, ready to use, written in Typescript.</div>

<br />

<!-- Badges -->

[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md)
![NPM Downloads](https://img.shields.io/npm/dm/usehooks-ts)
![NPM Downloads](https://img.shields.io/npm/dt/usehooks-ts)
[![License](https://badgen.net/badge/License/MIT/blue)](https://github.com/juliencrn/usehooks-ts/blob/master/LICENSE)
![npm bundle size](https://img.shields.io/bundlephobia/minzip/usehooks-ts)
![npm](https://img.shields.io/npm/v/usehooks-ts)<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-253-orange.svg?style=flat-square)](#contributors-)

<!-- ALL-CONTRIBUTORS-BADGE:END -->

<br />
  <pre>npm i <a href="https://www.npmjs.com/package/usehooks-ts">usehooks-ts</a></pre>
  <br />

<div align="center">
  <sub>Created by <a href="https://github.com/juliencrn">Julien Caron</a> and maintained with ❤️ by an amazing <a href="#contributors">team of developers</a>.</sub>
</div>

</div>

<br />

## 💫 Introduction

useHooks(🔥).ts is a React hooks library, written in Typescript and easy to use. It provides a set of hooks that enables you to build your React applications faster. The hooks are built upon the principles of DRY (Don't Repeat Yourself). There are hooks for most common use cases you might need.

The library is designed to be as minimal as possible. It is fully tree-shakable (using the ESM version), meaning that you only import the hooks you need, and the rest will be removed from your bundle making the cost of using this library negligible. Most hooks are extensively tested and are being used in production environments.

### Usage example

```tsx
import { useLocalStorage } from 'usehooks-ts'

function Component() {
  const [value, setValue] = useLocalStorage('my-localStorage-key', 0)

  // ...
}
```

## 🪝 Available Hooks

<!-- HOOKS:START -->

- [`useBoolean`](https://usehooks-ts.com/react-hook/use-boolean) — handles boolean state with useful utility functions.
- [`useClickAnyWhere`](https://usehooks-ts.com/react-hook/use-click-any-where) — handles click events anywhere on the document.
- [`useCopyToClipboard`](https://usehooks-ts.com/react-hook/use-copy-to-clipboard) — copies text to the clipboard using the [Clipboard API](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API).
- [`useCountdown`](https://usehooks-ts.com/react-hook/use-countdown) — manages countdown.
- [`useCounter`](https://usehooks-ts.com/react-hook/use-counter) — manages a counter with increment, decrement, reset, and setCount functionalities.
- [`useDarkMode`](https://usehooks-ts.com/react-hook/use-dark-mode) — returns the current state of the dark mode.
- [`useDebounceCallback`](https://usehooks-ts.com/react-hook/use-debounce-callback) — creates a debounced version of a callback function.
- [`useDebounceValue`](https://usehooks-ts.com/react-hook/use-debounce-value) — returns a debounced version of the provided value, along with a function to update it.
- [`useDocumentTitle`](https://usehooks-ts.com/react-hook/use-document-title) — sets the document title.
- [`useEventCallback`](https://usehooks-ts.com/react-hook/use-event-callback) — creates a memoized event callback.
- [`useEventListener`](https://usehooks-ts.com/react-hook/use-event-listener) — attaches event listeners to DOM elements, the window, or media query lists.
- [`useHover`](https://usehooks-ts.com/react-hook/use-hover) — tracks whether a DOM element is being hovered over.
- [`useIntersectionObserver`](https://usehooks-ts.com/react-hook/use-intersection-observer) — tracks the intersection of a DOM element with its containing element or the viewport using the [Intersection Observer API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API).
- [`useInterval`](https://usehooks-ts.com/react-hook/use-interval) — creates an interval that invokes a callback function at a specified delay using the [setInterval API](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval).
- [`useIsClient`](https://usehooks-ts.com/react-hook/use-is-client) — determines if the code is running on the client side (in the browser).
- [`useIsMounted`](https://usehooks-ts.com/react-hook/use-is-mounted) — determines if the component is currently mounted.
- [`useIsomorphicLayoutEffect`](https://usehooks-ts.com/react-hook/use-isomorphic-layout-effect) — uses either useLayoutEffect or useEffect based on the environment (client-side or server-side).
- [`useLocalStorage`](https://usehooks-ts.com/react-hook/use-local-storage) — uses the [localStorage API](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) to persist state across page reloads.
- [`useMap`](https://usehooks-ts.com/react-hook/use-map) — manages a key-value [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) state with setter actions.
- [`useMediaQuery`](https://usehooks-ts.com/react-hook/use-media-query) — tracks the state of a media query using the [Match Media API](https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia).
- [`useOnClickOutside`](https://usehooks-ts.com/react-hook/use-on-click-outside) — handles clicks outside a specified element.
- [`useReadLocalStorage`](https://usehooks-ts.com/react-hook/use-read-local-storage) — reads a value from [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), closely related to [useLocalStorage()](https://usehooks-ts.com/react-hook/use-local-storage).
- [`useResizeObserver`](https://usehooks-ts.com/react-hook/use-resize-observer) — observes the size of an element using the [ResizeObserver API](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).
- [`useScreen`](https://usehooks-ts.com/react-hook/use-screen) — tracks the [screen](https://developer.mozilla.org/en-US/docs/Web/API/Window/screen) dimensions and properties.
- [`useScript`](https://usehooks-ts.com/react-hook/use-script) — dynamically loads scripts and tracking their loading status.
- [`useScrollLock`](https://usehooks-ts.com/react-hook/use-scroll-lock) — A custom hook that locks and unlocks scroll.
- [`useSessionStorage`](https://usehooks-ts.com/react-hook/use-session-storage) — uses the [sessionStorage API](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage) to persist state across page reloads.
- [`useStep`](https://usehooks-ts.com/react-hook/use-step) — manages and navigates between steps in a multi-step process.
- [`useTernaryDarkMode`](https://usehooks-ts.com/react-hook/use-ternary-dark-mode) — manages ternary (system, dark, light) dark mode with local storage support.
- [`useTimeout`](https://usehooks-ts.com/react-hook/use-timeout) — handles timeouts in React components using the [setTimeout API](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout).
- [`useToggle`](https://usehooks-ts.com/react-hook/use-toggle) — manages a boolean toggle state in React components.
- [`useUnmount`](https://usehooks-ts.com/react-hook/use-unmount) — runs a cleanup function when the component is unmounted.
- [`useWindowSize`](https://usehooks-ts.com/react-hook/use-window-size) — tracks the size of the window.
<!-- HOOKS:END -->

## 💚 Backers

Big thanks go to all our backers! [[Become a backer](https://github.com/sponsors/juliencrn)]

<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tbody>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/getsentry"><img src="https://avatars.githubusercontent.com/u/1396951?v=4" width="100px;" alt="Sentry"/><br /><sub><b>Sentry</b></sub></a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/KATT"><img src="https://avatars.githubusercontent.com/u/459267?v=4" width="100px;" alt="KATT"/><br /><sub><b>KATT</b></sub></a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/adhiravishankar"><img src="https://avatars.githubusercontent.com/u/3884741?v=4" width="100px;" alt="Adhi Ravishankar"/><br /><sub><b>Adhi Ravishankar</b></sub></a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/great-work-told-is"><img src="https://avatars.githubusercontent.com/u/113922084?v=4" width="100px;" alt="great-work-told-is"/><br /><sub><b>great-work-told-is</b></sub></a></td>
    </tr>
  </tbody>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

## ✨ Contributors

Big thanks go to all our contributors! [[Become a contributor](https://github.com/juliencrn/usehooks-ts/blob/master/.github/CONTRIBUTING.md)]

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tbody>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/juliencrn"><img src="https://avatars.githubusercontent.com/u/14028029?v=4?s=64" width="64px;" alt="Julien"/><br /><sub><b>Julien</b></sub></a><br /><a href="#content-juliencrn" title="Content">🖋</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=juliencrn" title="Code">💻</a> <a href="#design-juliencrn" title="Design">🎨</a> <a href="#ideas-juliencrn" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/a777med"><img src="https://avatars.githubusercontent.com/u/15968280?v=4?s=64" width="64px;" alt="a777med"/><br /><sub><b>a777med</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=a777med" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://datkira.com/"><img src="https://avatars.githubusercontent.com/u/53250212?v=4?s=64" width="64px;" alt="Nguyen Tien Dat"/><br /><sub><b>Nguyen Tien Dat</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=datkira" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/elifer5000"><img src="https://avatars.githubusercontent.com/u/4311278?v=4?s=64" width="64px;" alt="Elias Cohenca"/><br /><sub><b>Elias Cohenca</b></sub></a><br /><a href="#content-elifer5000" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://joaov.com.br/"><img src="https://avatars.githubusercontent.com/u/17601527?v=4?s=64" width="64px;" alt="João Deroldo"/><br /><sub><b>João Deroldo</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajoaoderoldo" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=joaoderoldo" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Nishit-Dua"><img src="https://avatars.githubusercontent.com/u/35453301?v=4?s=64" width="64px;" alt="Nishit"/><br /><sub><b>Nishit</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=Nishit-Dua" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jonkoops"><img src="https://avatars.githubusercontent.com/u/695720?v=4?s=64" width="64px;" alt="Jon Koops"/><br /><sub><b>Jon Koops</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=jonkoops" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/LoneRifle"><img src="https://avatars.githubusercontent.com/u/10572368?v=4?s=64" width="64px;" alt="LoneRifle"/><br /><sub><b>LoneRifle</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=LoneRifle" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/vfonic"><img src="https://avatars.githubusercontent.com/u/67437?v=4?s=64" width="64px;" alt="Viktor"/><br /><sub><b>Viktor</b></sub></a><br /><a href="#ideas-vfonic" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Avfonic" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/bclermont"><img src="https://avatars.githubusercontent.com/u/474302?v=4?s=64" width="64px;" alt="Bruno Clermont"/><br /><sub><b>Bruno Clermont</b></sub></a><br /><a href="#question-bclermont" title="Answering Questions">💬</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/yoannesbourg"><img src="https://avatars.githubusercontent.com/u/73404603?v=4?s=64" width="64px;" alt="yoannesbourg"/><br /><sub><b>yoannesbourg</b></sub></a><br /><a href="#ideas-yoannesbourg" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/strange2x"><img src="https://avatars.githubusercontent.com/u/10759731?v=4?s=64" width="64px;" alt="Strange2x"/><br /><sub><b>Strange2x</b></sub></a><br /><a href="#ideas-strange2x" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/steinybot"><img src="https://avatars.githubusercontent.com/u/4659562?v=4?s=64" width="64px;" alt="Jason Pickens"/><br /><sub><b>Jason Pickens</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asteinybot" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://smackagency.com/"><img src="https://avatars.githubusercontent.com/u/3469560?v=4?s=64" width="64px;" alt="Sel-Vin Kuik"/><br /><sub><b>Sel-Vin Kuik</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aselvinkuik" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/isaacalves"><img src="https://avatars.githubusercontent.com/u/1765942?v=4?s=64" width="64px;" alt="isaac"/><br /><sub><b>isaac</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aisaacalves" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/brunorzn"><img src="https://avatars.githubusercontent.com/u/18266054?v=4?s=64" width="64px;" alt="Bruno RZN"/><br /><sub><b>Bruno RZN</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=brunorzn" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3Abrunorzn" title="Reviewed Pull Requests">👀</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://www.cykeprojects.com/"><img src="https://avatars.githubusercontent.com/u/2979318?v=4?s=64" width="64px;" alt="Nathan Manceaux-Panot"/><br /><sub><b>Nathan Manceaux-Panot</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=Cykelero" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/pulls?q=is%3Apr+reviewed-by%3ACykelero" title="Reviewed Pull Requests">👀</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/meotimdihia"><img src="https://avatars.githubusercontent.com/u/300961?v=4?s=64" width="64px;" alt="Dien Vu"/><br /><sub><b>Dien Vu</b></sub></a><br /><a href="#ideas-meotimdihia" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/olegKusov"><img src="https://avatars.githubusercontent.com/u/28058268?v=4?s=64" width="64px;" alt="Oleg Kusov"/><br /><sub><b>Oleg Kusov</b></sub></a><br /><a href="#ideas-olegKusov" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://mattguy.me/"><img src="https://avatars.githubusercontent.com/u/6647355?v=4?s=64" width="64px;" alt="Matthew Guy"/><br /><sub><b>Matthew Guy</b></sub></a><br /><a href="#ideas-mankittens" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/andrewbihl"><img src="https://avatars.githubusercontent.com/u/16709744?v=4?s=64" width="64px;" alt="andrewbihl"/><br /><sub><b>andrewbihl</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aandrewbihl" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/lancepollard"><img src="https://avatars.githubusercontent.com/u/86631222?v=4?s=64" width="64px;" alt="lancepollard"/><br /><sub><b>lancepollard</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Alancepollard" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/gmukul01"><img src="https://avatars.githubusercontent.com/u/3636885?v=4?s=64" width="64px;" alt="Mukul Bansal"/><br /><sub><b>Mukul Bansal</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Agmukul01" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://127.0.0.1:8000/"><img src="https://avatars.githubusercontent.com/u/474302?v=4?s=64" width="64px;" alt="Jean-Luc Mongrain sur la Brosse"/><br /><sub><b>Jean-Luc Mongrain sur la Brosse</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=jeanlucmongrain" title="Code">💻</a> <a href="#ideas-jeanlucmongrain" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/n1c"><img src="https://avatars.githubusercontent.com/u/284075?v=4?s=64" width="64px;" alt="Nic"/><br /><sub><b>Nic</b></sub></a><br /><a href="#content-n1c" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://valtism.com/"><img src="https://avatars.githubusercontent.com/u/1286001?v=4?s=64" width="64px;" alt="Dan Wood"/><br /><sub><b>Dan Wood</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=valtism" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://www.sixt.de/"><img src="https://avatars.githubusercontent.com/u/25299148?v=4?s=64" width="64px;" alt="jo wendenbuerger"/><br /><sub><b>jo wendenbuerger</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AWendenburg" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://nozillium.com/"><img src="https://avatars.githubusercontent.com/u/4774875?v=4?s=64" width="64px;" alt="Andrew Nosenko"/><br /><sub><b>Andrew Nosenko</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Anoseratio" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/CharlieJhonSmith"><img src="https://avatars.githubusercontent.com/u/90845154?v=4?s=64" width="64px;" alt="CharlieJhonSmith"/><br /><sub><b>CharlieJhonSmith</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=CharlieJhonSmith" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://keybase.io/soullivaneuh"><img src="https://avatars.githubusercontent.com/u/1698357?v=4?s=64" width="64px;" alt="Sullivan SENECHAL"/><br /><sub><b>Sullivan SENECHAL</b></sub></a><br /><a href="#ideas-soullivaneuh" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Asoullivaneuh" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=soullivaneuh" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/jaslong"><img src="https://avatars.githubusercontent.com/u/797348?v=4?s=64" width="64px;" alt="Jason Long"/><br /><sub><b>Jason Long</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Ajaslong" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/kxm766"><img src="https://avatars.githubusercontent.com/u/88443148?v=4?s=64" width="64px;" alt="kxm766"/><br /><sub><b>kxm766</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Akxm766" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://qlaffont.com/"><img src="https://avatars.githubusercontent.com/u/10044790?v=4?s=64" width="64px;" alt="Quentin"/><br /><sub><b>Quentin</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=qlaffont" title="Code">💻</a> <a href="#ideas-qlaffont" title="Ideas, Planning, & Feedback">🤔</a> <a href="#content-qlaffont" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/ducktordanny"><img src="https://avatars.githubusercontent.com/u/38068717?v=4?s=64" width="64px;" alt="Daniel Lazar"/><br /><sub><b>Daniel Lazar</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=ducktordanny" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aducktordanny" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/mterrel"><img src="https://avatars.githubusercontent.com/u/17746857?v=4?s=64" width="64px;" alt="Mark Terrel"/><br /><sub><b>Mark Terrel</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Amterrel" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=mterrel" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/mendrik"><img src="https://avatars.githubusercontent.com/u/160805?v=4?s=64" width="64px;" alt="Andreas Herd"/><br /><sub><b>Andreas Herd</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Amendrik" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://sonjoydatta.me/"><img src="https://avatars.githubusercontent.com/u/49079726?v=4?s=64" width="64px;" alt="Sonjoy Datta"/><br /><sub><b>Sonjoy Datta</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=sonjoydatta" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/oluckyman"><img src="https://avatars.githubusercontent.com/u/642673?v=4?s=64" width="64px;" alt="Ilya Belsky"/><br /><sub><b>Ilya Belsky</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aoluckyman" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://jamesbarrett.io/"><img src="https://avatars.githubusercontent.com/u/42980207?v=4?s=64" width="64px;" alt="James Barrett"/><br /><sub><b>James Barrett</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=JamesBarrettDev" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/AbbalYouness"><img src="https://avatars.githubusercontent.com/u/15120524?v=4?s=64" width="64px;" alt="AbbalYouness"/><br /><sub><b>AbbalYouness</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=AbbalYouness" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/DidrikLind"><img src="https://avatars.githubusercontent.com/u/14201715?v=4?s=64" width="64px;" alt="didriklind"/><br /><sub><b>didriklind</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=DidrikLind" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=DidrikLind" title="Tests">⚠️</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/hexp1989"><img src="https://avatars.githubusercontent.com/u/2241985?v=4?s=64" width="64px;" alt="hexp1989"/><br /><sub><b>hexp1989</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=hexp1989" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/alvaro-serrano-rivas/"><img src="https://avatars.githubusercontent.com/u/43758471?v=4?s=64" width="64px;" alt="Alvaro Serrano"/><br /><sub><b>Alvaro Serrano</b></sub></a><br /><a href="#content-alvaroserrrano" title="Content">🖋</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/egehandulger"><img src="https://avatars.githubusercontent.com/u/14878259?v=4?s=64" width="64px;" alt="Egehan Dülger"/><br /><sub><b>Egehan Dülger</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=egehandulger" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/PabloLION"><img src="https://avatars.githubusercontent.com/u/36828324?v=4?s=64" width="64px;" alt="PabloLION"/><br /><sub><b>PabloLION</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3APabloLION" title="Bug reports">🐛</a> <a href="https://github.com/juliencrn/usehooks-ts/commits?author=PabloLION" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://davidsanchez.me/"><img src="https://avatars.githubusercontent.com/u/84061?v=4?s=64" width="64px;" alt="David Sanchez"/><br /><sub><b>David Sanchez</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aemulienfou" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/AjayTheWizard"><img src="https://avatars.githubusercontent.com/u/92772740?v=4?s=64" width="64px;" alt="Ajay Raja"/><br /><sub><b>Ajay Raja</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AAjayTheWizard" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://andymerskin.com/"><img src="https://avatars.githubusercontent.com/u/758090?v=4?s=64" width="64px;" alt="Andy Merskin"/><br /><sub><b>Andy Merskin</b></sub></a><br /><a href="#ideas-docmars" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/GrayGalaxy"><img src="https://avatars.githubusercontent.com/u/49820575?v=4?s=64" width="64px;" alt="Avirup Ghosh"/><br /><sub><b>Avirup Ghosh</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/commits?author=GrayGalaxy" title="Code">💻</a> <a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3AGrayGalaxy" title="Bug reports">🐛</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/tilnea"><img src="https://avatars.githubusercontent.com/u/3692320?v=4?s=64" width="64px;" alt="Sanne Wintrén"/><br /><sub><b>Sanne Wintrén</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Atilnea" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://lacolonia.studio/"><img src="https://avatars.githubusercontent.com/u/1528468?v=4?s=64" width="64px;" alt="Alessandro"/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://github.com/juliencrn/usehooks-ts/issues?q=author%3Aa-barbieri" title="Bug reports">🐛</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/atatarenko"><img src="https://avatars.githubu
Download .txt
gitextract_oyjuehk2/

├── .all-contributorsrc
├── .changeset/
│   ├── README.md
│   └── config.json
├── .editorconfig
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.yml
│   │   ├── config.yml
│   │   └── update-docs.yml
│   └── workflows/
│       ├── ci.yml
│       └── update-algolia-index.yml
├── .gitignore
├── .prettierignore
├── .prettierrc
├── .vscode/
│   └── settings.json
├── LICENSE
├── README.md
├── apps/
│   └── www/
│       ├── .eslintrc.cjs
│       ├── .gitignore
│       ├── CHANGELOG.md
│       ├── env.js
│       ├── next-sitemap.config.js
│       ├── next.config.js
│       ├── package.json
│       ├── postcss.config.cjs
│       ├── public/
│       │   └── site.webmanifest
│       ├── src/
│       │   ├── app/
│       │   │   ├── (docs)/
│       │   │   │   ├── introduction/
│       │   │   │   │   └── page.tsx
│       │   │   │   ├── layout.tsx
│       │   │   │   ├── migrate-to-v3/
│       │   │   │   │   └── page.tsx
│       │   │   │   └── react-hook/
│       │   │   │       └── [slug]/
│       │   │   │           └── page.tsx
│       │   │   ├── (marketing)/
│       │   │   │   ├── layout.tsx
│       │   │   │   └── page.tsx
│       │   │   ├── globals.css
│       │   │   ├── layout.tsx
│       │   │   └── prism.css
│       │   ├── components/
│       │   │   ├── buy-me-a-coffee.tsx
│       │   │   ├── carbon-ads/
│       │   │   │   ├── ads.tsx
│       │   │   │   ├── index.ts
│       │   │   │   └── use-script.ts
│       │   │   ├── command-copy.tsx
│       │   │   ├── doc-search/
│       │   │   │   ├── command-menu.tsx
│       │   │   │   ├── doc-search.tsx
│       │   │   │   ├── footer.tsx
│       │   │   │   ├── hits.tsx
│       │   │   │   ├── index.ts
│       │   │   │   ├── input.tsx
│       │   │   │   ├── modal.context.tsx
│       │   │   │   ├── open-button.tsx
│       │   │   │   ├── types.ts
│       │   │   │   └── use-cmd-k.ts
│       │   │   ├── docs/
│       │   │   │   ├── left-sidebar.tsx
│       │   │   │   ├── page-header.tsx
│       │   │   │   ├── pager.tsx
│       │   │   │   ├── right-sidebar.tsx
│       │   │   │   └── table-of-content.tsx
│       │   │   ├── main-nav.tsx
│       │   │   ├── mobile-nav.tsx
│       │   │   └── ui/
│       │   │       ├── button.tsx
│       │   │       ├── command.tsx
│       │   │       ├── components.tsx
│       │   │       ├── dialog.tsx
│       │   │       ├── dropdown-menu.tsx
│       │   │       └── icons.tsx
│       │   ├── config/
│       │   │   ├── docs.ts
│       │   │   ├── marketing.ts
│       │   │   └── site.ts
│       │   ├── lib/
│       │   │   ├── api.ts
│       │   │   └── utils.ts
│       │   └── types/
│       │       └── index.ts
│       ├── tailwind.config.js
│       └── tsconfig.json
├── package.json
├── packages/
│   ├── eslint-config-custom/
│   │   ├── .eslintrc.cjs
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── index.cjs
│   │   └── package.json
│   └── usehooks-ts/
│       ├── .eslintrc.cjs
│       ├── .gitignore
│       ├── CHANGELOG.md
│       ├── README.md
│       ├── package.json
│       ├── src/
│       │   ├── index.ts
│       │   ├── useBoolean/
│       │   │   ├── index.ts
│       │   │   ├── useBoolean.demo.tsx
│       │   │   ├── useBoolean.md
│       │   │   ├── useBoolean.test.ts
│       │   │   └── useBoolean.ts
│       │   ├── useClickAnyWhere/
│       │   │   ├── index.ts
│       │   │   ├── useClickAnyWhere.demo.tsx
│       │   │   ├── useClickAnyWhere.md
│       │   │   ├── useClickAnyWhere.test.ts
│       │   │   └── useClickAnyWhere.ts
│       │   ├── useCopyToClipboard/
│       │   │   ├── index.ts
│       │   │   ├── useCopyToClipboard.demo.tsx
│       │   │   ├── useCopyToClipboard.md
│       │   │   ├── useCopyToClipboard.test.ts
│       │   │   └── useCopyToClipboard.ts
│       │   ├── useCountdown/
│       │   │   ├── index.ts
│       │   │   ├── useCountdown.demo.tsx
│       │   │   ├── useCountdown.md
│       │   │   ├── useCountdown.test.ts
│       │   │   └── useCountdown.ts
│       │   ├── useCounter/
│       │   │   ├── index.ts
│       │   │   ├── useCounter.demo.tsx
│       │   │   ├── useCounter.md
│       │   │   ├── useCounter.test.ts
│       │   │   └── useCounter.ts
│       │   ├── useDarkMode/
│       │   │   ├── index.ts
│       │   │   ├── useDarkMode.demo.tsx
│       │   │   ├── useDarkMode.md
│       │   │   ├── useDarkMode.test.ts
│       │   │   └── useDarkMode.ts
│       │   ├── useDebounceCallback/
│       │   │   ├── index.ts
│       │   │   ├── useDebounceCallback.demo.tsx
│       │   │   ├── useDebounceCallback.md
│       │   │   ├── useDebounceCallback.test.ts
│       │   │   └── useDebounceCallback.ts
│       │   ├── useDebounceValue/
│       │   │   ├── index.ts
│       │   │   ├── useDebounceValue.demo.tsx
│       │   │   ├── useDebounceValue.md
│       │   │   ├── useDebounceValue.test.ts
│       │   │   └── useDebounceValue.ts
│       │   ├── useDocumentTitle/
│       │   │   ├── index.ts
│       │   │   ├── useDocumentTitle.demo.tsx
│       │   │   ├── useDocumentTitle.md
│       │   │   ├── useDocumentTitle.test.ts
│       │   │   └── useDocumentTitle.ts
│       │   ├── useEventCallback/
│       │   │   ├── index.ts
│       │   │   ├── useEventCallback.demo.tsx
│       │   │   ├── useEventCallback.md
│       │   │   ├── useEventCallback.test.tsx
│       │   │   └── useEventCallback.ts
│       │   ├── useEventListener/
│       │   │   ├── index.ts
│       │   │   ├── useEventListener.demo.tsx
│       │   │   ├── useEventListener.md
│       │   │   ├── useEventListener.test.ts
│       │   │   └── useEventListener.ts
│       │   ├── useHover/
│       │   │   ├── index.ts
│       │   │   ├── useHover.demo.tsx
│       │   │   ├── useHover.md
│       │   │   ├── useHover.test.ts
│       │   │   └── useHover.ts
│       │   ├── useIntersectionObserver/
│       │   │   ├── index.ts
│       │   │   ├── useIntersectionObserver.demo.tsx
│       │   │   ├── useIntersectionObserver.md
│       │   │   └── useIntersectionObserver.ts
│       │   ├── useInterval/
│       │   │   ├── index.ts
│       │   │   ├── useInterval.demo.tsx
│       │   │   ├── useInterval.md
│       │   │   ├── useInterval.test.ts
│       │   │   └── useInterval.ts
│       │   ├── useIsClient/
│       │   │   ├── index.ts
│       │   │   ├── useIsClient.demo.tsx
│       │   │   ├── useIsClient.md
│       │   │   ├── useIsClient.test.ts
│       │   │   └── useIsClient.ts
│       │   ├── useIsMounted/
│       │   │   ├── index.ts
│       │   │   ├── useIsMounted.demo.tsx
│       │   │   ├── useIsMounted.md
│       │   │   ├── useIsMounted.test.ts
│       │   │   └── useIsMounted.ts
│       │   ├── useIsomorphicLayoutEffect/
│       │   │   ├── index.ts
│       │   │   ├── useIsomorphicLayoutEffect.demo.tsx
│       │   │   ├── useIsomorphicLayoutEffect.md
│       │   │   └── useIsomorphicLayoutEffect.ts
│       │   ├── useLocalStorage/
│       │   │   ├── index.ts
│       │   │   ├── useLocalStorage.demo.tsx
│       │   │   ├── useLocalStorage.md
│       │   │   ├── useLocalStorage.test.ts
│       │   │   └── useLocalStorage.ts
│       │   ├── useMap/
│       │   │   ├── index.ts
│       │   │   ├── useMap.demo.tsx
│       │   │   ├── useMap.md
│       │   │   ├── useMap.test.ts
│       │   │   └── useMap.ts
│       │   ├── useMediaQuery/
│       │   │   ├── index.ts
│       │   │   ├── useMediaQuery.demo.tsx
│       │   │   ├── useMediaQuery.md
│       │   │   └── useMediaQuery.ts
│       │   ├── useOnClickOutside/
│       │   │   ├── index.ts
│       │   │   ├── useOnClickOuside.test.ts
│       │   │   ├── useOnClickOutside.demo.tsx
│       │   │   ├── useOnClickOutside.md
│       │   │   └── useOnClickOutside.ts
│       │   ├── useReadLocalStorage/
│       │   │   ├── index.ts
│       │   │   ├── useReadLocalStorage.demo.tsx
│       │   │   ├── useReadLocalStorage.md
│       │   │   ├── useReadLocalStorage.test.ts
│       │   │   └── useReadLocalStorage.ts
│       │   ├── useResizeObserver/
│       │   │   ├── index.ts
│       │   │   ├── useResizeObserver.demo.tsx
│       │   │   ├── useResizeObserver.md
│       │   │   ├── useResizeObserver.test.tsx
│       │   │   └── useResizeObserver.ts
│       │   ├── useScreen/
│       │   │   ├── index.ts
│       │   │   ├── useScreen.demo.tsx
│       │   │   ├── useScreen.md
│       │   │   └── useScreen.ts
│       │   ├── useScript/
│       │   │   ├── index.ts
│       │   │   ├── useScript.demo.tsx
│       │   │   ├── useScript.md
│       │   │   ├── useScript.test.ts
│       │   │   └── useScript.ts
│       │   ├── useScrollLock/
│       │   │   ├── index.ts
│       │   │   ├── useScrollLock.demo.tsx
│       │   │   ├── useScrollLock.md
│       │   │   ├── useScrollLock.test.ts
│       │   │   └── useScrollLock.ts
│       │   ├── useSessionStorage/
│       │   │   ├── index.ts
│       │   │   ├── useSessionStorage.demo.tsx
│       │   │   ├── useSessionStorage.md
│       │   │   ├── useSessionStorage.test.ts
│       │   │   └── useSessionStorage.ts
│       │   ├── useStep/
│       │   │   ├── index.ts
│       │   │   ├── useStep.demo.tsx
│       │   │   ├── useStep.md
│       │   │   ├── useStep.test.ts
│       │   │   └── useStep.ts
│       │   ├── useTernaryDarkMode/
│       │   │   ├── index.ts
│       │   │   ├── useTernaryDarkMode.demo.tsx
│       │   │   ├── useTernaryDarkMode.md
│       │   │   ├── useTernaryDarkMode.test.ts
│       │   │   └── useTernaryDarkMode.ts
│       │   ├── useTimeout/
│       │   │   ├── index.ts
│       │   │   ├── useTimeout.demo.tsx
│       │   │   ├── useTimeout.md
│       │   │   ├── useTimeout.test.ts
│       │   │   └── useTimeout.ts
│       │   ├── useToggle/
│       │   │   ├── index.ts
│       │   │   ├── useToggle.demo.tsx
│       │   │   ├── useToggle.md
│       │   │   ├── useToggle.test.ts
│       │   │   └── useToggle.ts
│       │   ├── useUnmount/
│       │   │   ├── index.ts
│       │   │   ├── useUnmount.demo.tsx
│       │   │   ├── useUnmount.md
│       │   │   ├── useUnmount.test.ts
│       │   │   └── useUnmount.ts
│       │   └── useWindowSize/
│       │       ├── index.ts
│       │       ├── useWindowSize.demo.tsx
│       │       ├── useWindowSize.md
│       │       ├── useWindowSize.test.ts
│       │       └── useWindowSize.ts
│       ├── tests/
│       │   ├── mocks.ts
│       │   └── setup.ts
│       ├── tsconfig.json
│       ├── tsup.config.ts
│       └── vitest.config.ts
├── pnpm-workspace.yaml
├── renovate.json
├── scripts/
│   ├── env.js
│   ├── generate-doc.js
│   ├── update-algolia-index.js
│   ├── update-testing-issue.js
│   └── utils/
│       ├── data-transform.js
│       ├── generate-doc-files.js
│       ├── get-hooks.js
│       ├── get-markdown-data.js
│       └── update-readme.js
├── turbo/
│   └── generators/
│       ├── config.cts
│       └── templates/
│           ├── hook/
│           │   ├── hook.demo.tsx.hbs
│           │   ├── hook.mdx.hbs
│           │   ├── hook.test.ts.hbs
│           │   ├── hook.ts.hbs
│           │   └── index.ts.hbs
│           └── index.ts.hbs
├── turbo.json
└── typedoc.json
Download .txt
SYMBOL INDEX (236 symbols across 105 files)

FILE: apps/www/next.config.js
  method redirects (line 16) | async redirects() {

FILE: apps/www/src/app/(docs)/introduction/page.tsx
  function IntroductionPage (line 7) | async function IntroductionPage() {

FILE: apps/www/src/app/(docs)/layout.tsx
  type DocsLayoutProps (line 11) | type DocsLayoutProps = {
  function DocsLayout (line 15) | async function DocsLayout({ children }: DocsLayoutProps) {

FILE: apps/www/src/app/(docs)/migrate-to-v3/page.tsx
  function MigrateToV3Page (line 5) | async function MigrateToV3Page() {

FILE: apps/www/src/app/(docs)/react-hook/[slug]/page.tsx
  function stringifyDescription (line 15) | function stringifyDescription(description: string) {
  function getPostUrl (line 19) | function getPostUrl(slug: string) {
  function getImageUrl (line 23) | function getImageUrl(name: string) {
  function HookPage (line 66) | async function HookPage({

FILE: apps/www/src/app/(marketing)/layout.tsx
  type MarketingLayoutProps (line 9) | type MarketingLayoutProps = {
  function MarketingLayout (line 13) | async function MarketingLayout({

FILE: apps/www/src/app/(marketing)/page.tsx
  type Feature (line 20) | type Feature = {
  function getGitHubStars (line 65) | async function getGitHubStars(): Promise<string | null> {
  function IndexPage (line 93) | async function IndexPage() {

FILE: apps/www/src/app/layout.tsx
  type RootLayoutProps (line 22) | type RootLayoutProps = {
  function RootLayout (line 75) | function RootLayout({ children }: RootLayoutProps) {

FILE: apps/www/src/components/buy-me-a-coffee.tsx
  function BuyMeACoffee (line 3) | function BuyMeACoffee() {
  function BuyMeACoffeeLogo (line 17) | function BuyMeACoffeeLogo({

FILE: apps/www/src/components/carbon-ads/ads.tsx
  type CarbonAdsProps (line 11) | type CarbonAdsProps = {
  function CarbonAds (line 17) | function CarbonAds({

FILE: apps/www/src/components/command-copy.tsx
  type CommandCopyProps (line 18) | type CommandCopyProps = {
  function CommandCopy (line 23) | function CommandCopy({

FILE: apps/www/src/components/doc-search/command-menu.tsx
  function CommandMenu (line 14) | function CommandMenu() {

FILE: apps/www/src/components/doc-search/footer.tsx
  function Footer (line 1) | function Footer() {
  function EscapeKey (line 42) | function EscapeKey() {
  function ArrowDownKey (line 58) | function ArrowDownKey() {
  function ArrowUpKey (line 73) | function ArrowUpKey() {
  function EnterKey (line 89) | function EnterKey() {
  function Kbd (line 105) | function Kbd({ children }: { children: React.ReactNode }) {
  function AlgoliaLogo (line 113) | function AlgoliaLogo() {

FILE: apps/www/src/components/doc-search/hits.tsx
  function RenderHits (line 8) | function RenderHits() {
  type HitProps (line 32) | type HitProps = {
  function HitComponent (line 37) | function HitComponent({ hit, makeUrl }: HitProps) {

FILE: apps/www/src/components/doc-search/input.tsx
  function SearchInput (line 7) | function SearchInput() {

FILE: apps/www/src/components/doc-search/modal.context.tsx
  type CommandMenuContextType (line 7) | type CommandMenuContextType = {
  function CommandMenuProvider (line 23) | function CommandMenuProvider(props: { children: React.ReactNode }) {
  function useCommandMenuContext (line 48) | function useCommandMenuContext() {

FILE: apps/www/src/components/doc-search/open-button.tsx
  type ButtonProps (line 9) | type ButtonProps = Omit<

FILE: apps/www/src/components/doc-search/types.ts
  type Highlight (line 1) | type Highlight = {
  type Fields (line 7) | type Fields<T> = {
  type Hit (line 13) | type Hit = Fields<string> & {

FILE: apps/www/src/components/doc-search/use-cmd-k.ts
  function useCmdK (line 3) | function useCmdK(callback: () => void) {

FILE: apps/www/src/components/docs/left-sidebar.tsx
  type DocsSidebarNavProps (line 9) | type DocsSidebarNavProps = {
  function LeftSidebar (line 14) | function LeftSidebar(props: DocsSidebarNavProps) {
  type NavItemsProps (line 41) | type NavItemsProps = {
  function NavItems (line 46) | function NavItems({ items, pathname }: NavItemsProps) {

FILE: apps/www/src/components/docs/page-header.tsx
  type DocsPageHeaderProps (line 3) | type DocsPageHeaderProps = {
  function PageHeader (line 8) | function PageHeader({

FILE: apps/www/src/components/docs/pager.tsx
  type DocsPagerProps (line 8) | type DocsPagerProps = {
  function Pager (line 13) | function Pager({ slug, hooks }: DocsPagerProps) {
  function getPaperElements (line 44) | function getPaperElements({ slug, hooks }: DocsPagerProps) {

FILE: apps/www/src/components/docs/right-sidebar.tsx
  type Props (line 5) | type Props = {
  function RightSidebar (line 9) | function RightSidebar({ toc }: Props) {

FILE: apps/www/src/components/docs/table-of-content.tsx
  type Item (line 7) | type Item = {
  type Items (line 13) | type Items = {
  type TableOfContents (line 17) | type TableOfContents = Items
  type TocItem (line 18) | type TocItem = Item
  type TocProps (line 20) | type TocProps = {
  function TableOfContent (line 24) | function TableOfContent({ toc }: TocProps) {
  function useActiveItem (line 51) | function useActiveItem(itemIds: (string | undefined)[]) {
  type TreeProps (line 94) | type TreeProps = {
  function Tree (line 100) | function Tree({ tree, level = 1, activeItem }: TreeProps) {

FILE: apps/www/src/components/main-nav.tsx
  type MainNavProps (line 14) | type MainNavProps = {
  function MainNav (line 19) | function MainNav({ items, children }: MainNavProps) {

FILE: apps/www/src/components/mobile-nav.tsx
  type MobileNavProps (line 11) | type MobileNavProps = {
  function MobileNav (line 16) | function MobileNav({ items, children }: MobileNavProps) {

FILE: apps/www/src/components/ui/button.tsx
  type ButtonProps (line 38) | type ButtonProps = {

FILE: apps/www/src/components/ui/command.tsx
  type CommandDialogProps (line 27) | type CommandDialogProps = DialogProps

FILE: apps/www/src/lib/api.ts
  constant SOURCE_PATH (line 12) | const SOURCE_PATH = path.resolve(process.cwd(), '..', '..', 'generated',...

FILE: apps/www/src/lib/utils.ts
  function cn (line 7) | function cn(...inputs: ClassValue[]) {
  function mapHookToNavLink (line 11) | function mapHookToNavLink(hook: BaseHook): NavItem {

FILE: apps/www/src/types/index.ts
  type SiteConfig (line 3) | type SiteConfig = {
  type BaseHook (line 14) | type BaseHook = {
  type NavItem (line 21) | type NavItem = {
  type MainNavItem (line 27) | type MainNavItem = NavItem
  type SidebarNavItem (line 29) | type SidebarNavItem = {
  type DocsConfig (line 45) | type DocsConfig = {
  type MarketingConfig (line 50) | type MarketingConfig = {

FILE: packages/usehooks-ts/src/useBoolean/useBoolean.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useBoolean/useBoolean.ts
  type UseBooleanReturn (line 6) | type UseBooleanReturn = {
  function useBoolean (line 31) | function useBoolean(defaultValue = false): UseBooleanReturn {

FILE: packages/usehooks-ts/src/useClickAnyWhere/useClickAnyWhere.demo.tsx
  function Component (line 5) | function Component() {

FILE: packages/usehooks-ts/src/useClickAnyWhere/useClickAnyWhere.ts
  function useClickAnyWhere (line 18) | function useClickAnyWhere(handler: (event: MouseEvent) => void) {

FILE: packages/usehooks-ts/src/useCopyToClipboard/useCopyToClipboard.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useCopyToClipboard/useCopyToClipboard.ts
  type CopiedValue (line 6) | type CopiedValue = string | null
  type CopyFn (line 13) | type CopyFn = (text: string) => Promise<boolean>
  function useCopyToClipboard (line 36) | function useCopyToClipboard(): [CopiedValue, CopyFn] {

FILE: packages/usehooks-ts/src/useCountdown/useCountdown.demo.tsx
  function Component (line 7) | function Component() {

FILE: packages/usehooks-ts/src/useCountdown/useCountdown.ts
  type CountdownOptions (line 8) | type CountdownOptions = {
  type CountdownControllers (line 31) | type CountdownControllers = {
  function useCountdown (line 55) | function useCountdown({

FILE: packages/usehooks-ts/src/useCounter/useCounter.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useCounter/useCounter.ts
  type UseCounterReturn (line 6) | type UseCounterReturn = {
  function useCounter (line 30) | function useCounter(initialValue?: number): UseCounterReturn {

FILE: packages/usehooks-ts/src/useDarkMode/useDarkMode.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useDarkMode/useDarkMode.ts
  constant COLOR_SCHEME_QUERY (line 5) | const COLOR_SCHEME_QUERY = '(prefers-color-scheme: dark)'
  constant LOCAL_STORAGE_KEY (line 6) | const LOCAL_STORAGE_KEY = 'usehooks-ts-dark-mode'
  type DarkModeOptions (line 9) | type DarkModeOptions = {
  type DarkModeReturn (line 29) | type DarkModeReturn = {
  function useDarkMode (line 53) | function useDarkMode(options: DarkModeOptions = {}): DarkModeReturn {

FILE: packages/usehooks-ts/src/useDebounceCallback/useDebounceCallback.demo.tsx
  function Component (line 5) | function Component() {

FILE: packages/usehooks-ts/src/useDebounceCallback/useDebounceCallback.ts
  type DebounceOptions (line 8) | type DebounceOptions = {
  type ControlFunctions (line 26) | type ControlFunctions = {
  type DebouncedState (line 45) | type DebouncedState<T extends (...args: any) => ReturnType<T>> = ((
  function useDebounceCallback (line 74) | function useDebounceCallback<T extends (...args: any) => ReturnType<T>>(

FILE: packages/usehooks-ts/src/useDebounceValue/useDebounceValue.demo.tsx
  function Component (line 3) | function Component({ defaultValue = 'John' }) {

FILE: packages/usehooks-ts/src/useDebounceValue/useDebounceValue.ts
  type UseDebounceValueOptions (line 10) | type UseDebounceValueOptions<T> = {
  function useDebounceValue (line 43) | function useDebounceValue<T>(

FILE: packages/usehooks-ts/src/useDocumentTitle/useDocumentTitle.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useDocumentTitle/useDocumentTitle.ts
  type UseDocumentTitleOptions (line 7) | type UseDocumentTitleOptions = {
  function useDocumentTitle (line 23) | function useDocumentTitle(

FILE: packages/usehooks-ts/src/useEventCallback/useEventCallback.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useEventCallback/useEventCallback.ts
  function useEventCallback (line 26) | function useEventCallback<Args extends unknown[], R>(

FILE: packages/usehooks-ts/src/useEventListener/useEventListener.demo.tsx
  function Component (line 5) | function Component() {

FILE: packages/usehooks-ts/src/useEventListener/useEventListener.test.ts
  type WindowEventMap (line 7) | interface WindowEventMap {
  type HTMLElementEventMap (line 11) | interface HTMLElementEventMap {
  type SVGElementEventMap (line 15) | interface SVGElementEventMap {
  type DocumentEventMap (line 19) | interface DocumentEventMap {

FILE: packages/usehooks-ts/src/useEventListener/useEventListener.ts
  function useEventListener (line 76) | function useEventListener<

FILE: packages/usehooks-ts/src/useHover/useHover.demo.tsx
  function Component (line 5) | function Component() {

FILE: packages/usehooks-ts/src/useHover/useHover.ts
  function useHover (line 21) | function useHover<T extends HTMLElement = HTMLElement>(

FILE: packages/usehooks-ts/src/useIntersectionObserver/useIntersectionObserver.demo.tsx
  function Component (line 27) | function Component() {

FILE: packages/usehooks-ts/src/useIntersectionObserver/useIntersectionObserver.ts
  type State (line 4) | type State = {
  type UseIntersectionObserverOptions (line 12) | type UseIntersectionObserverOptions = {
  type IntersectionReturn (line 55) | type IntersectionReturn = [
  function useIntersectionObserver (line 82) | function useIntersectionObserver({

FILE: packages/usehooks-ts/src/useInterval/useInterval.demo.tsx
  function Component (line 7) | function Component() {

FILE: packages/usehooks-ts/src/useInterval/useInterval.test.ts
  function mockSetInterval (line 54) | function mockSetInterval() {
  function mockClearInterval (line 58) | function mockClearInterval() {

FILE: packages/usehooks-ts/src/useInterval/useInterval.ts
  function useInterval (line 19) | function useInterval(callback: () => void, delay: number | null) {

FILE: packages/usehooks-ts/src/useIsClient/useIsClient.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useIsClient/useIsClient.ts
  function useIsClient (line 14) | function useIsClient() {

FILE: packages/usehooks-ts/src/useIsMounted/useIsMounted.demo.tsx
  function Child (line 7) | function Child() {
  function Component (line 21) | function Component() {

FILE: packages/usehooks-ts/src/useIsMounted/useIsMounted.ts
  function useIsMounted (line 14) | function useIsMounted(): () => boolean {

FILE: packages/usehooks-ts/src/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useLocalStorage/useLocalStorage.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useLocalStorage/useLocalStorage.ts
  type WindowEventMap (line 10) | interface WindowEventMap {
  type UseLocalStorageOptions (line 19) | type UseLocalStorageOptions<T> = {
  constant IS_SERVER (line 31) | const IS_SERVER = typeof window === 'undefined'
  function useLocalStorage (line 48) | function useLocalStorage<T>(

FILE: packages/usehooks-ts/src/useMap/useMap.demo.tsx
  function Component (line 5) | function Component() {

FILE: packages/usehooks-ts/src/useMap/useMap.ts
  type MapOrEntries (line 8) | type MapOrEntries<K, V> = Map<K, V> | [K, V][]
  type UseMapActions (line 15) | type UseMapActions<K, V> = {
  type UseMapReturn (line 32) | type UseMapReturn<K, V> = [
  function useMap (line 51) | function useMap<K, V>(

FILE: packages/usehooks-ts/src/useMediaQuery/useMediaQuery.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useMediaQuery/useMediaQuery.ts
  type UseMediaQueryOptions (line 6) | type UseMediaQueryOptions = {
  constant IS_SERVER (line 19) | const IS_SERVER = typeof window === 'undefined'
  function useMediaQuery (line 34) | function useMediaQuery(

FILE: packages/usehooks-ts/src/useOnClickOutside/useOnClickOutside.demo.tsx
  function Component (line 5) | function Component() {

FILE: packages/usehooks-ts/src/useOnClickOutside/useOnClickOutside.ts
  type EventType (line 6) | type EventType =
  function useOnClickOutside (line 32) | function useOnClickOutside<T extends HTMLElement = HTMLElement>(

FILE: packages/usehooks-ts/src/useReadLocalStorage/useReadLocalStorage.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useReadLocalStorage/useReadLocalStorage.ts
  constant IS_SERVER (line 5) | const IS_SERVER = typeof window === 'undefined'
  type Options (line 11) | type Options<T, InitializeWithValue extends boolean | undefined> = {
  function useReadLocalStorage (line 42) | function useReadLocalStorage<T>(

FILE: packages/usehooks-ts/src/useResizeObserver/useResizeObserver.demo.tsx
  type Size (line 6) | type Size = {
  function Component (line 11) | function Component() {
  function WithDebounce (line 25) | function WithDebounce() {

FILE: packages/usehooks-ts/src/useResizeObserver/useResizeObserver.ts
  type Size (line 8) | type Size = {
  type UseResizeObserverOptions (line 16) | type UseResizeObserverOptions<T extends HTMLElement = HTMLElement> = {
  function useResizeObserver (line 54) | function useResizeObserver<T extends HTMLElement = HTMLElement>(
  type BoxSizesKey (line 110) | type BoxSizesKey = keyof Pick<
  function extractSize (line 115) | function extractSize(

FILE: packages/usehooks-ts/src/useScreen/useScreen.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useScreen/useScreen.ts
  type UseScreenOptions (line 11) | type UseScreenOptions<InitializeWithValue extends boolean | undefined> = {
  constant IS_SERVER (line 24) | const IS_SERVER = typeof window === 'undefined'
  function useScreen (line 42) | function useScreen(

FILE: packages/usehooks-ts/src/useScript/useScript.demo.tsx
  function Component (line 9) | function Component() {

FILE: packages/usehooks-ts/src/useScript/useScript.ts
  type UseScriptStatus (line 4) | type UseScriptStatus = 'idle' | 'loading' | 'ready' | 'error'
  type UseScriptOptions (line 7) | type UseScriptOptions = {
  function getScriptNode (line 29) | function getScriptNode(src: string) {
  function useScript (line 53) | function useScript(

FILE: packages/usehooks-ts/src/useScrollLock/useScrollLock.demo.tsx
  function Modal (line 4) | function Modal() {
  function App (line 10) | function App() {

FILE: packages/usehooks-ts/src/useScrollLock/useScrollLock.ts
  type UseScrollLockOptions (line 6) | type UseScrollLockOptions = {
  type UseScrollLockReturn (line 25) | type UseScrollLockReturn = {
  type OriginalStyle (line 34) | type OriginalStyle = {
  constant IS_SERVER (line 39) | const IS_SERVER = typeof window === 'undefined'
  function useScrollLock (line 65) | function useScrollLock(

FILE: packages/usehooks-ts/src/useSessionStorage/useSessionStorage.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useSessionStorage/useSessionStorage.ts
  type WindowEventMap (line 10) | interface WindowEventMap {
  type UseSessionStorageOptions (line 19) | type UseSessionStorageOptions<T> = {
  constant IS_SERVER (line 31) | const IS_SERVER = typeof window === 'undefined'
  function useSessionStorage (line 48) | function useSessionStorage<T>(

FILE: packages/usehooks-ts/src/useStep/useStep.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useStep/useStep.ts
  type UseStepActions (line 6) | type UseStepActions = {
  type SetStepCallbackType (line 21) | type SetStepCallbackType = (step: number | ((step: number) => number)) =...
  function useStep (line 35) | function useStep(maxStep: number): [number, UseStepActions] {

FILE: packages/usehooks-ts/src/useTernaryDarkMode/useTernaryDarkMode.demo.tsx
  type TernaryDarkMode (line 3) | type TernaryDarkMode = ReturnType<typeof useTernaryDarkMode>['ternaryDar...
  function Component (line 5) | function Component() {

FILE: packages/usehooks-ts/src/useTernaryDarkMode/useTernaryDarkMode.ts
  constant COLOR_SCHEME_QUERY (line 6) | const COLOR_SCHEME_QUERY = '(prefers-color-scheme: dark)'
  constant LOCAL_STORAGE_KEY (line 7) | const LOCAL_STORAGE_KEY = 'usehooks-ts-ternary-dark-mode'
  type TernaryDarkMode (line 10) | type TernaryDarkMode = 'system' | 'dark' | 'light'
  type TernaryDarkModeOptions (line 13) | type TernaryDarkModeOptions = {
  type TernaryDarkModeReturn (line 32) | type TernaryDarkModeReturn = {
  function useTernaryDarkMode (line 55) | function useTernaryDarkMode({

FILE: packages/usehooks-ts/src/useTimeout/useTimeout.demo.tsx
  function Component (line 5) | function Component() {

FILE: packages/usehooks-ts/src/useTimeout/useTimeout.ts
  function useTimeout (line 20) | function useTimeout(callback: () => void, delay: number | null): void {

FILE: packages/usehooks-ts/src/useToggle/useToggle.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useToggle/useToggle.ts
  function useToggle (line 20) | function useToggle(

FILE: packages/usehooks-ts/src/useUnmount/useUnmount.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useUnmount/useUnmount.ts
  function useUnmount (line 15) | function useUnmount(func: () => void) {

FILE: packages/usehooks-ts/src/useWindowSize/useWindowSize.demo.tsx
  function Component (line 3) | function Component() {

FILE: packages/usehooks-ts/src/useWindowSize/useWindowSize.ts
  type WindowSize (line 11) | type WindowSize<T extends number | undefined = number | undefined> = {
  type UseWindowSizeOptions (line 22) | type UseWindowSizeOptions<InitializeWithValue extends boolean | undefine...
  constant IS_SERVER (line 35) | const IS_SERVER = typeof window === 'undefined'
  function useWindowSize (line 55) | function useWindowSize(

FILE: packages/usehooks-ts/tests/mocks.ts
  class StorageMock (line 29) | class StorageMock implements Omit<Storage, 'key' | 'length'> {
    method clear (line 32) | clear() {
    method getItem (line 36) | getItem(key: string) {
    method setItem (line 40) | setItem(key: string, value: unknown) {
    method removeItem (line 44) | removeItem(key: string) {

FILE: scripts/update-testing-issue.js
  constant SOURCE_DIR (line 5) | const SOURCE_DIR = path.resolve('./packages/usehooks-ts/src')
  constant GITHUB_REPO (line 6) | const GITHUB_REPO = `juliencrn/usehooks-ts`
  constant GITHUB_ISSUE_PATH (line 7) | const GITHUB_ISSUE_PATH = `${GITHUB_REPO}/issues/423`
  constant EXCLUDED_HOOK (line 8) | const EXCLUDED_HOOK = ['useIsomorphicLayoutEffect']
  function isTestFile (line 48) | function isTestFile(filename) {
  function issueTemplate (line 52) | function issueTemplate(body) {

FILE: scripts/utils/data-transform.js
  function transformImports (line 16) | function transformImports(data) {
  function removeJSDocComments (line 49) | function removeJSDocComments(data) {
  function removeFirstLine (line 60) | function removeFirstLine(data) {
  function removeDefinedInSections (line 69) | function removeDefinedInSections(data) {
  function removeEslintDisableComments (line 88) | function removeEslintDisableComments(data) {
  function camelToKebabCase (line 95) | function camelToKebabCase(str) {
  function replaceRelativePaths (line 99) | function replaceRelativePaths(data) {

FILE: scripts/utils/generate-doc-files.js
  function generateDocFiles (line 17) | function generateDocFiles(hook) {

FILE: scripts/utils/get-hooks.js
  function getHooks (line 4) | function getHooks() {

FILE: scripts/utils/get-markdown-data.js
  function getHookDocData (line 6) | function getHookDocData(hook) {
  function getTypeAliasesData (line 12) | function getTypeAliasesData(hook) {
  function getCodeData (line 23) | function getCodeData(hook) {
  function getDemoData (line 28) | function getDemoData(hook) {
  function getFile (line 36) | function getFile(filename, type) {

FILE: scripts/utils/update-readme.js
  function updateReadme (line 6) | function updateReadme(hooks) {
  function formatHook (line 20) | function formatHook(hook) {
Condensed preview — 271 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (782K chars).
[
  {
    "path": ".all-contributorsrc",
    "chars": 58083,
    "preview": "{\n  \"projectName\": \"usehooks-ts\",\n  \"projectOwner\": \"juliencrn\",\n  \"repoType\": \"github\",\n  \"repoHost\": \"https://github.c"
  },
  {
    "path": ".changeset/README.md",
    "chars": 510,
    "preview": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that wo"
  },
  {
    "path": ".changeset/config.json",
    "chars": 273,
    "preview": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@2.3.0/schema.json\",\n  \"changelog\": \"@changesets/cli/changelog\",\n  \""
  },
  {
    "path": ".editorconfig",
    "chars": 150,
    "preview": "# editorconfig.org\n\nroot = true\n\n[*]\nindent_style = space\nindent_size = 2\ncharset = utf-8\ntrim_trailing_whitespace = tru"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "chars": 5492,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 96846,
    "preview": "# Contributing to `usehooks-ts`\n\nThanks for wanting to contribute! It's more than welcome 🤗\n\nAs the creators and maintai"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 873,
    "preview": "# These are supported funding model platforms\n\ngithub: [juliencrn]\n# patreon: # Replace with a single Patreon username\n#"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.yml",
    "chars": 1003,
    "preview": "name: 'Bug report 🐞'\ndescription: >-\n  Create a report to help us improve\ntitle: '[BUG]'\nlabels:\n  - bug\nbody:\n  - type:"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 638,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: View documentation 📚\n    url: https://usehooks-ts.com/\n    about: C"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/update-docs.yml",
    "chars": 617,
    "preview": "name: Update docs ✍️\ndescription: >-\n  Find a mistake in our documentation, or have a suggestion to improve them? Let us"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 847,
    "preview": "name: Build and test\n\non:\n  push:\n    branches:\n      - 'master'\n  pull_request:\n\nenv:\n  NODE_VERSION: 20\n  PNPM_VERSION"
  },
  {
    "path": ".github/workflows/update-algolia-index.yml",
    "chars": 1034,
    "preview": "name: Update Algolia index\n\non:\n  push:\n    branches:\n      - master\n\nenv:\n  NODE_VERSION: 20\n  PNPM_VERSION: 8\n\njobs:\n "
  },
  {
    "path": ".gitignore",
    "chars": 346,
    "preview": "node_modules\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nnpm-debug.log*\n*.tsbuildinfo\n\n# Cache\n.np"
  },
  {
    "path": ".prettierignore",
    "chars": 98,
    "preview": "node_modules\ntemplates\ndist\n.turbo\npublic\n.cache\npnpm-lock.yaml\n.changeset\n.github\napps/www/.next\n"
  },
  {
    "path": ".prettierrc",
    "chars": 132,
    "preview": "{\n  \"arrowParens\": \"avoid\",\n  \"semi\": false,\n  \"printWidth\": 80,\n  \"singleQuote\": true,\n  \"tabWidth\": 2,\n  \"trailingComm"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 1723,
    "preview": "{\n  \"editor.formatOnSave\": true,\n  \"editor.tabSize\": 2,\n  \"files.encoding\": \"utf8\",\n  \"files.trimTrailingWhitespace\": tr"
  },
  {
    "path": "LICENSE",
    "chars": 1080,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2020 Julien CARON\n\nPermission is hereby granted, free of charge, to any person obta"
  },
  {
    "path": "README.md",
    "chars": 101575,
    "preview": "<img src=\"https://github.com/juliencrn/usehooks-ts/blob/master/.github/screenshot.png\" alt=\"usehooks-ts banner\" align=\"c"
  },
  {
    "path": "apps/www/.eslintrc.cjs",
    "chars": 131,
    "preview": "module.exports = {\n  extends: ['next/core-web-vitals', 'custom'],\n  rules: {\n    '@typescript-eslint/require-await': 'of"
  },
  {
    "path": "apps/www/.gitignore",
    "chars": 405,
    "preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
  },
  {
    "path": "apps/www/CHANGELOG.md",
    "chars": 4050,
    "preview": "# www\n\n## 1.0.4\n\n### Patch Changes\n\n- Updated dependencies [b1dffb9]\n  - usehooks-ts@3.1.1\n\n## 1.0.3\n\n### Patch Changes\n"
  },
  {
    "path": "apps/www/env.js",
    "chars": 857,
    "preview": "/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimpo"
  },
  {
    "path": "apps/www/next-sitemap.config.js",
    "chars": 456,
    "preview": "/**\n * Generate sitemap.xml and robots.txt for all kind of pages\n * @doc https://www.npmjs.com/package/next-sitemap\n */\n"
  },
  {
    "path": "apps/www/next.config.js",
    "chars": 489,
    "preview": "import './env.js'\n\nconst deletedHooks = [\n  'use-debounce',\n  'use-effect-once',\n  'use-element-size',\n  'use-fetch',\n  "
  },
  {
    "path": "apps/www/package.json",
    "chars": 1759,
    "preview": "{\n  \"name\": \"www\",\n  \"version\": \"1.0.4\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"next dev\",\n  "
  },
  {
    "path": "apps/www/postcss.config.cjs",
    "chars": 82,
    "preview": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "apps/www/public/site.webmanifest",
    "chars": 263,
    "preview": "{\"name\":\"\",\"short_name\":\"\",\"icons\":[{\"src\":\"/android-chrome-192x192.png\",\"sizes\":\"192x192\",\"type\":\"image/png\"},{\"src\":\"/"
  },
  {
    "path": "apps/www/src/app/(docs)/introduction/page.tsx",
    "chars": 2389,
    "preview": "import { CommandCopy } from '@/components/command-copy'\nimport { PageHeader } from '@/components/docs/page-header'\nimpor"
  },
  {
    "path": "apps/www/src/app/(docs)/layout.tsx",
    "chars": 1685,
    "preview": "import Link from 'next/link'\n\nimport { DocSearch } from '@/components/doc-search'\nimport { LeftSidebar } from '@/compone"
  },
  {
    "path": "apps/www/src/app/(docs)/migrate-to-v3/page.tsx",
    "chars": 5311,
    "preview": "import { PageHeader } from '@/components/docs/page-header'\nimport { RightSidebar } from '@/components/docs/right-sidebar"
  },
  {
    "path": "apps/www/src/app/(docs)/react-hook/[slug]/page.tsx",
    "chars": 3147,
    "preview": "import type { Metadata } from 'next'\nimport type { Article, WithContext } from 'schema-dts'\n\nimport { PageHeader } from "
  },
  {
    "path": "apps/www/src/app/(marketing)/layout.tsx",
    "chars": 1126,
    "preview": "import Link from 'next/link'\n\nimport { DocSearch } from '@/components/doc-search'\nimport { MainNav } from '@/components/"
  },
  {
    "path": "apps/www/src/app/(marketing)/page.tsx",
    "chars": 9498,
    "preview": "import type { LucideIcon } from 'lucide-react'\nimport { Blocks, ChevronRight, Gift, Star } from 'lucide-react'\nimport Li"
  },
  {
    "path": "apps/www/src/app/globals.css",
    "chars": 2269,
    "preview": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n@import './prism.css';\n\n@layer base {\n  :root {\n    --backgro"
  },
  {
    "path": "apps/www/src/app/layout.tsx",
    "chars": 2623,
    "preview": "import { GoogleAnalytics } from '@next/third-parties/google'\nimport type { Metadata, Viewport } from 'next'\nimport { Int"
  },
  {
    "path": "apps/www/src/app/prism.css",
    "chars": 2695,
    "preview": "@tailwind base;\n\n@layer base {\n  :root {\n    --github-background: #ffffff;\n    --github-color: #24292e;\n    --github-com"
  },
  {
    "path": "apps/www/src/components/buy-me-a-coffee.tsx",
    "chars": 9163,
    "preview": "import type { CSSProperties } from 'react'\n\nexport function BuyMeACoffee() {\n  return (\n    <a\n      href=\"https://www.b"
  },
  {
    "path": "apps/www/src/components/carbon-ads/ads.tsx",
    "chars": 686,
    "preview": "import type { ComponentPropsWithoutRef } from 'react'\n\nimport { useScript } from './use-script'\nimport { cn } from '@/li"
  },
  {
    "path": "apps/www/src/components/carbon-ads/index.ts",
    "chars": 36,
    "preview": "'use client'\n\nexport * from './ads'\n"
  },
  {
    "path": "apps/www/src/components/carbon-ads/use-script.ts",
    "chars": 825,
    "preview": "import { useEffect, useRef } from 'react'\n\n// TODO: We can't use usehooks-ts's useScript because it mounts the script in"
  },
  {
    "path": "apps/www/src/components/command-copy.tsx",
    "chars": 2491,
    "preview": "'use client'\n\nimport { useState } from 'react'\n\nimport { Check, Copy } from 'lucide-react'\nimport type { ComponentProps "
  },
  {
    "path": "apps/www/src/components/doc-search/command-menu.tsx",
    "chars": 935,
    "preview": "import { Index } from 'react-instantsearch'\n\nimport { Footer } from './footer'\nimport { RenderHits } from './hits'\nimpor"
  },
  {
    "path": "apps/www/src/components/doc-search/doc-search.tsx",
    "chars": 714,
    "preview": "'use client'\n\nimport algoliasearch from 'algoliasearch/lite'\nimport { InstantSearch } from 'react-instantsearch'\n\nimport"
  },
  {
    "path": "apps/www/src/components/doc-search/footer.tsx",
    "chars": 8790,
    "preview": "export function Footer() {\n  return (\n    <footer className=\"flex flex-row-reverse items-center justify-between relative"
  },
  {
    "path": "apps/www/src/components/doc-search/hits.tsx",
    "chars": 1570,
    "preview": "import { useRouter } from 'next/navigation'\nimport { useHits } from 'react-instantsearch'\n\nimport { CommandItem } from '"
  },
  {
    "path": "apps/www/src/components/doc-search/index.ts",
    "chars": 29,
    "preview": "export * from './doc-search'\n"
  },
  {
    "path": "apps/www/src/components/doc-search/input.tsx",
    "chars": 1171,
    "preview": "import { useRef, useState } from 'react'\n\nimport { useSearchBox } from 'react-instantsearch'\n\nimport { CommandInput } fr"
  },
  {
    "path": "apps/www/src/components/doc-search/modal.context.tsx",
    "chars": 1282,
    "preview": "import { createContext, useContext, useState } from 'react'\n\nimport type { Dispatch, SetStateAction } from 'react'\n\nimpo"
  },
  {
    "path": "apps/www/src/components/doc-search/open-button.tsx",
    "chars": 1120,
    "preview": "import { forwardRef } from 'react'\n\nimport { Search } from 'lucide-react'\nimport type { ButtonHTMLAttributes } from 'rea"
  },
  {
    "path": "apps/www/src/components/doc-search/types.ts",
    "chars": 242,
    "preview": "type Highlight = {\n  value: string\n  matchLevel: string\n  matchedWords: string[]\n}\n\ntype Fields<T> = {\n  objectID: T\n  n"
  },
  {
    "path": "apps/www/src/components/doc-search/use-cmd-k.ts",
    "chars": 261,
    "preview": "import { useEventListener } from 'usehooks-ts'\n\nexport function useCmdK(callback: () => void) {\n  useEventListener('keyd"
  },
  {
    "path": "apps/www/src/components/docs/left-sidebar.tsx",
    "chars": 2006,
    "preview": "'use client'\n\nimport Link from 'next/link'\nimport { usePathname } from 'next/navigation'\n\nimport { cn, mapHookToNavLink "
  },
  {
    "path": "apps/www/src/components/docs/page-header.tsx",
    "chars": 554,
    "preview": "import { cn } from '@/lib/utils'\n\ntype DocsPageHeaderProps = {\n  heading: string\n  text?: string\n} & React.HTMLAttribute"
  },
  {
    "path": "apps/www/src/components/docs/pager.tsx",
    "chars": 1371,
    "preview": "import Link from 'next/link'\n\nimport { buttonVariants } from '@/components/ui/button'\nimport { ChevronLeft, ChevronRight"
  },
  {
    "path": "apps/www/src/components/docs/right-sidebar.tsx",
    "chars": 524,
    "preview": "import { CarbonAds } from '../carbon-ads'\nimport type { TableOfContents } from './table-of-content'\nimport { TableOfCont"
  },
  {
    "path": "apps/www/src/components/docs/table-of-content.tsx",
    "chars": 2702,
    "preview": "'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\ntype Item = {\n  title: string\n  url: str"
  },
  {
    "path": "apps/www/src/components/main-nav.tsx",
    "chars": 1944,
    "preview": "'use client'\n\nimport * as React from 'react'\n\nimport Link from 'next/link'\nimport { useSelectedLayoutSegment } from 'nex"
  },
  {
    "path": "apps/www/src/components/mobile-nav.tsx",
    "chars": 1481,
    "preview": "import * as React from 'react'\n\nimport Link from 'next/link'\nimport { useScrollLock } from 'usehooks-ts'\n\nimport { Logo "
  },
  {
    "path": "apps/www/src/components/ui/button.tsx",
    "chars": 1836,
    "preview": "import * as React from 'react'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport type { VariantProps } from 'class-var"
  },
  {
    "path": "apps/www/src/components/ui/command.tsx",
    "chars": 5010,
    "preview": "'use client'\n\nimport * as React from 'react'\n\nimport type { DialogProps } from '@radix-ui/react-dialog'\nimport { Command"
  },
  {
    "path": "apps/www/src/components/ui/components.tsx",
    "chars": 4758,
    "preview": "/* eslint-disable jsx-a11y/heading-has-content */\n\nimport Link from 'next/link'\nimport type { ComponentProps, ReactNode "
  },
  {
    "path": "apps/www/src/components/ui/dialog.tsx",
    "chars": 3912,
    "preview": "'use client'\n\nimport * as React from 'react'\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { X } fro"
  },
  {
    "path": "apps/www/src/components/ui/dropdown-menu.tsx",
    "chars": 6977,
    "preview": "'use client'\n\nimport * as React from 'react'\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimp"
  },
  {
    "path": "apps/www/src/components/ui/icons.tsx",
    "chars": 3186,
    "preview": "import { forwardRef } from 'react'\n\nimport type { LucideIcon, LucideProps } from 'lucide-react'\n\nexport { Flame as Logo "
  },
  {
    "path": "apps/www/src/config/docs.ts",
    "chars": 487,
    "preview": "import type { DocsConfig } from '@/types'\n\nexport const docsConfig: DocsConfig = {\n  mainNav: [\n    {\n      title: 'Docu"
  },
  {
    "path": "apps/www/src/config/marketing.ts",
    "chars": 254,
    "preview": "import type { MarketingConfig } from '@/types'\n\nexport const marketingConfig: MarketingConfig = {\n  mainNav: [\n    {\n   "
  },
  {
    "path": "apps/www/src/config/site.ts",
    "chars": 431,
    "preview": "import type { SiteConfig } from '@/types'\n\nexport const siteConfig: SiteConfig = {\n  name: 'usehooks-ts',\n  description:"
  },
  {
    "path": "apps/www/src/lib/api.ts",
    "chars": 1575,
    "preview": "'use server'\n\nimport { compileMDX } from 'next-mdx-remote/rsc'\nimport path from 'path'\nimport rehypePrism from 'rehype-p"
  },
  {
    "path": "apps/www/src/lib/utils.ts",
    "chars": 359,
    "preview": "import type { ClassValue } from 'clsx'\nimport { clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nimport type"
  },
  {
    "path": "apps/www/src/types/index.ts",
    "chars": 773,
    "preview": "import type { IconNode } from 'lucide-react'\n\nexport type SiteConfig = {\n  name: string\n  description: string\n  url: str"
  },
  {
    "path": "apps/www/tailwind.config.js",
    "chars": 2267,
    "preview": "import { fontFamily } from 'tailwindcss/defaultTheme'\n\n/** @type {import('tailwindcss').Config} */\nconst config = {\n  co"
  },
  {
    "path": "apps/www/tsconfig.json",
    "chars": 677,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"sk"
  },
  {
    "path": "package.json",
    "chars": 1913,
    "preview": "{\n  \"name\": \"workspace\",\n  \"private\": true,\n  \"description\": \"React hook library, ready to use, written in Typescript.\","
  },
  {
    "path": "packages/eslint-config-custom/.eslintrc.cjs",
    "chars": 3163,
    "preview": "module.exports = {\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    ecmaVersion: 2020,\n    sourceType: 'mod"
  },
  {
    "path": "packages/eslint-config-custom/.gitignore",
    "chars": 13,
    "preview": "node_modules\n"
  },
  {
    "path": "packages/eslint-config-custom/CHANGELOG.md",
    "chars": 550,
    "preview": "# eslint-config-custom\n\n## 2.0.0\n\n### Major Changes\n\n- a8e8968: Move the full workspace into ES Module\n\n### Minor Change"
  },
  {
    "path": "packages/eslint-config-custom/README.md",
    "chars": 100,
    "preview": "# eslint-config-custom\n\n## Usage\n\nin your .eslintrc\n\n```json\n{\n  \"extends\": [\"custom-config\"]\n}\n```\n"
  },
  {
    "path": "packages/eslint-config-custom/index.cjs",
    "chars": 71,
    "preview": "const eslintrc = require('./.eslintrc.cjs')\n\nmodule.exports = eslintrc\n"
  },
  {
    "path": "packages/eslint-config-custom/package.json",
    "chars": 725,
    "preview": "{\n  \"name\": \"eslint-config-custom\",\n  \"private\": true,\n  \"version\": \"2.0.0\",\n  \"description\": \"Base configuration for Es"
  },
  {
    "path": "packages/usehooks-ts/.eslintrc.cjs",
    "chars": 3108,
    "preview": "module.exports = {\n  extends: ['custom'],\n  plugins: ['jsdoc'],\n  rules: {\n    'jsdoc/check-access': 'warn', // Recommen"
  },
  {
    "path": "packages/usehooks-ts/.gitignore",
    "chars": 25,
    "preview": "node_modules\n.turbo\ndist\n"
  },
  {
    "path": "packages/usehooks-ts/CHANGELOG.md",
    "chars": 13916,
    "preview": "# Changelog\n\n## 3.1.1\n\n### Patch Changes\n\n- b1dffb9: feat: Update peerDependencies to include React 19 @michal-worwag\n\n#"
  },
  {
    "path": "packages/usehooks-ts/README.md",
    "chars": 101575,
    "preview": "<img src=\"https://github.com/juliencrn/usehooks-ts/blob/master/.github/screenshot.png\" alt=\"usehooks-ts banner\" align=\"c"
  },
  {
    "path": "packages/usehooks-ts/package.json",
    "chars": 1841,
    "preview": "{\n  \"name\": \"usehooks-ts\",\n  \"private\": false,\n  \"version\": \"3.1.1\",\n  \"description\": \"React hook library, ready to use,"
  },
  {
    "path": "packages/usehooks-ts/src/index.ts",
    "chars": 1079,
    "preview": "export * from './useBoolean'\nexport * from './useClickAnyWhere'\nexport * from './useCopyToClipboard'\nexport * from './us"
  },
  {
    "path": "packages/usehooks-ts/src/useBoolean/index.ts",
    "chars": 29,
    "preview": "export * from './useBoolean'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useBoolean/useBoolean.demo.tsx",
    "chars": 576,
    "preview": "import { useBoolean } from './useBoolean'\n\nexport default function Component() {\n  const { value, setValue, setTrue, set"
  },
  {
    "path": "packages/usehooks-ts/src/useBoolean/useBoolean.md",
    "chars": 127,
    "preview": "A simple abstraction to play with a boolean, don't repeat yourself.\n\nRelated hooks:\n\n- [`useToggle()`](/react-hook/use-t"
  },
  {
    "path": "packages/usehooks-ts/src/useBoolean/useBoolean.test.ts",
    "chars": 2440,
    "preview": "import { act, renderHook } from '@testing-library/react'\n\nimport { useBoolean } from './useBoolean'\n\ndescribe('useBoolea"
  },
  {
    "path": "packages/usehooks-ts/src/useBoolean/useBoolean.ts",
    "chars": 1598,
    "preview": "import { useCallback, useState } from 'react'\n\nimport type { Dispatch, SetStateAction } from 'react'\n\n/** The useBoolean"
  },
  {
    "path": "packages/usehooks-ts/src/useClickAnyWhere/index.ts",
    "chars": 35,
    "preview": "export * from './useClickAnyWhere'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useClickAnyWhere/useClickAnyWhere.demo.tsx",
    "chars": 271,
    "preview": "import { useState } from 'react'\n\nimport { useClickAnyWhere } from './useClickAnyWhere'\n\nexport default function Compone"
  },
  {
    "path": "packages/usehooks-ts/src/useClickAnyWhere/useClickAnyWhere.md",
    "chars": 170,
    "preview": "This simple React hook offers you a click event listener at the page level, don't repeat yourself.\n\nIt is made on the [u"
  },
  {
    "path": "packages/usehooks-ts/src/useClickAnyWhere/useClickAnyWhere.test.ts",
    "chars": 1130,
    "preview": "import { act, fireEvent, renderHook } from '@testing-library/react'\n\nimport { useClickAnyWhere } from './useClickAnyWher"
  },
  {
    "path": "packages/usehooks-ts/src/useClickAnyWhere/useClickAnyWhere.ts",
    "chars": 673,
    "preview": "import { useEventListener } from '../useEventListener'\n\n/**\n * Custom hook that handles click events anywhere on the doc"
  },
  {
    "path": "packages/usehooks-ts/src/useCopyToClipboard/index.ts",
    "chars": 37,
    "preview": "export * from './useCopyToClipboard'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useCopyToClipboard/useCopyToClipboard.demo.tsx",
    "chars": 708,
    "preview": "import { useCopyToClipboard } from './useCopyToClipboard'\n\nexport default function Component() {\n  const [copiedText, co"
  },
  {
    "path": "packages/usehooks-ts/src/useCopyToClipboard/useCopyToClipboard.md",
    "chars": 342,
    "preview": "React Hook for easy clipboard copy functionality.\n\nThis hook provides a simple method to copy a string to the [clipboard"
  },
  {
    "path": "packages/usehooks-ts/src/useCopyToClipboard/useCopyToClipboard.test.ts",
    "chars": 1159,
    "preview": "import { act, renderHook } from '@testing-library/react'\n\nimport { useCopyToClipboard } from './useCopyToClipboard'\n\ndes"
  },
  {
    "path": "packages/usehooks-ts/src/useCopyToClipboard/useCopyToClipboard.ts",
    "chars": 1839,
    "preview": "import { useCallback, useState } from 'react'\n\n/**\n * The copied text as `string` or `null` if nothing has been copied y"
  },
  {
    "path": "packages/usehooks-ts/src/useCountdown/index.ts",
    "chars": 31,
    "preview": "export * from './useCountdown'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useCountdown/useCountdown.demo.tsx",
    "chars": 858,
    "preview": "import { useState } from 'react'\n\nimport type { ChangeEvent } from 'react'\n\nimport { useCountdown } from './useCountdown"
  },
  {
    "path": "packages/usehooks-ts/src/useCountdown/useCountdown.md",
    "chars": 598,
    "preview": "**IMPORTANT**: The new useCountdown is deprecating the old one on the next major version.\n\nA simple countdown implementa"
  },
  {
    "path": "packages/usehooks-ts/src/useCountdown/useCountdown.test.ts",
    "chars": 4960,
    "preview": "import { act, renderHook } from '@testing-library/react'\n\nimport { useCountdown } from './useCountdown'\n\nvitest.useFakeT"
  },
  {
    "path": "packages/usehooks-ts/src/useCountdown/useCountdown.ts",
    "chars": 2590,
    "preview": "import { useCallback } from 'react'\n\nimport { useBoolean } from '../useBoolean'\nimport { useCounter } from '../useCounte"
  },
  {
    "path": "packages/usehooks-ts/src/useCounter/index.ts",
    "chars": 29,
    "preview": "export * from './useCounter'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useCounter/useCounter.demo.tsx",
    "chars": 497,
    "preview": "import { useCounter } from './useCounter'\n\nexport default function Component() {\n  const { count, setCount, increment, d"
  },
  {
    "path": "packages/usehooks-ts/src/useCounter/useCounter.md",
    "chars": 68,
    "preview": "A simple abstraction to play with a counter, don't repeat yourself.\n"
  },
  {
    "path": "packages/usehooks-ts/src/useCounter/useCounter.test.ts",
    "chars": 1919,
    "preview": "import { act, renderHook } from '@testing-library/react'\n\nimport { useCounter } from './useCounter'\n\ndescribe('useCounte"
  },
  {
    "path": "packages/usehooks-ts/src/useCounter/useCounter.ts",
    "chars": 1472,
    "preview": "import { useCallback, useState } from 'react'\n\nimport type { Dispatch, SetStateAction } from 'react'\n\n/** The hook retur"
  },
  {
    "path": "packages/usehooks-ts/src/useDarkMode/index.ts",
    "chars": 30,
    "preview": "export * from './useDarkMode'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useDarkMode/useDarkMode.demo.tsx",
    "chars": 389,
    "preview": "import { useDarkMode } from './useDarkMode'\n\nexport default function Component() {\n  const { isDarkMode, toggle, enable,"
  },
  {
    "path": "packages/usehooks-ts/src/useDarkMode/useDarkMode.md",
    "chars": 431,
    "preview": "This React Hook offers you an interface to set, enable, disable, toggle and read the dark theme mode.\nThe returned value"
  },
  {
    "path": "packages/usehooks-ts/src/useDarkMode/useDarkMode.test.ts",
    "chars": 3565,
    "preview": "import { act, renderHook } from '@testing-library/react'\n\nimport { mockMatchMedia, mockStorage } from '../../tests/mocks"
  },
  {
    "path": "packages/usehooks-ts/src/useDarkMode/useDarkMode.ts",
    "chars": 2529,
    "preview": "import { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect'\nimport { useLocalStorage } from '../useLocalSto"
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceCallback/index.ts",
    "chars": 38,
    "preview": "export * from './useDebounceCallback'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceCallback/useDebounceCallback.demo.tsx",
    "chars": 437,
    "preview": "import { useState } from 'react'\n\nimport { useDebounceCallback } from './useDebounceCallback'\n\nexport default function C"
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceCallback/useDebounceCallback.md",
    "chars": 662,
    "preview": "Creates a debounced version of a callback function.\n\n### Parameters\n\n- `func`: The callback function to be debounced.\n- "
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceCallback/useDebounceCallback.test.ts",
    "chars": 2946,
    "preview": "import { act, renderHook } from '@testing-library/react'\n\nimport { useDebounceCallback } from './useDebounceCallback'\n\nd"
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceCallback/useDebounceCallback.ts",
    "chars": 3644,
    "preview": "import { useEffect, useMemo, useRef } from 'react'\n\nimport debounce from 'lodash.debounce'\n\nimport { useUnmount } from '"
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceValue/index.ts",
    "chars": 35,
    "preview": "export * from './useDebounceValue'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceValue/useDebounceValue.demo.tsx",
    "chars": 413,
    "preview": "import { useDebounceValue } from './useDebounceValue'\n\nexport default function Component({ defaultValue = 'John' }) {\n  "
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceValue/useDebounceValue.md",
    "chars": 1093,
    "preview": "Returns a debounced version of the provided value, along with a function to update it.\n\n### Parameters\n\n- `value`: The v"
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceValue/useDebounceValue.test.ts",
    "chars": 1451,
    "preview": "import { act, renderHook } from '@testing-library/react'\n\nimport { useDebounceValue } from './useDebounceValue'\n\ndescrib"
  },
  {
    "path": "packages/usehooks-ts/src/useDebounceValue/useDebounceValue.ts",
    "chars": 2519,
    "preview": "import { useRef, useState } from 'react'\n\nimport type { DebouncedState } from '../useDebounceCallback'\nimport { useDebou"
  },
  {
    "path": "packages/usehooks-ts/src/useDocumentTitle/index.ts",
    "chars": 35,
    "preview": "export * from './useDocumentTitle'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useDocumentTitle/useDocumentTitle.demo.tsx",
    "chars": 125,
    "preview": "import { useDocumentTitle } from './useDocumentTitle'\n\nexport default function Component() {\n  useDocumentTitle('foo bar"
  },
  {
    "path": "packages/usehooks-ts/src/useDocumentTitle/useDocumentTitle.md",
    "chars": 222,
    "preview": "An easy way to set the title of the current document.\n\nSetting `preserveTitleOnUnmount` to `false` allows the document t"
  },
  {
    "path": "packages/usehooks-ts/src/useDocumentTitle/useDocumentTitle.test.ts",
    "chars": 1045,
    "preview": "import { renderHook } from '@testing-library/react'\n\nimport { useDocumentTitle } from './useDocumentTitle'\n\ndescribe('us"
  },
  {
    "path": "packages/usehooks-ts/src/useDocumentTitle/useDocumentTitle.ts",
    "chars": 1174,
    "preview": "import { useRef } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect'\nimport { useUnm"
  },
  {
    "path": "packages/usehooks-ts/src/useEventCallback/index.ts",
    "chars": 35,
    "preview": "export * from './useEventCallback'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useEventCallback/useEventCallback.demo.tsx",
    "chars": 271,
    "preview": "import { useEventCallback } from './useEventCallback'\n\nexport default function Component() {\n  const handleClick = useEv"
  },
  {
    "path": "packages/usehooks-ts/src/useEventCallback/useEventCallback.md",
    "chars": 1152,
    "preview": "The `useEventCallback` hook is a utility for creating memoized event callback functions in React applications. It ensure"
  },
  {
    "path": "packages/usehooks-ts/src/useEventCallback/useEventCallback.test.tsx",
    "chars": 1774,
    "preview": "import { fireEvent, render, renderHook, screen } from '@testing-library/react'\nimport type { Mock } from 'vitest'\n\nimpor"
  },
  {
    "path": "packages/usehooks-ts/src/useEventCallback/useEventCallback.ts",
    "chars": 1336,
    "preview": "import { useCallback, useRef } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect'\n\n/"
  },
  {
    "path": "packages/usehooks-ts/src/useEventListener/index.ts",
    "chars": 35,
    "preview": "export * from './useEventListener'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useEventListener/useEventListener.demo.tsx",
    "chars": 969,
    "preview": "import { useRef } from 'react'\n\nimport { useEventListener } from './useEventListener'\n\nexport default function Component"
  },
  {
    "path": "packages/usehooks-ts/src/useEventListener/useEventListener.md",
    "chars": 680,
    "preview": "Use EventListener with simplicity by React Hook.\n\nSupports `Window`, `Element` and `Document` and custom events with alm"
  },
  {
    "path": "packages/usehooks-ts/src/useEventListener/useEventListener.test.ts",
    "chars": 4267,
    "preview": "/* eslint-disable @typescript-eslint/consistent-type-definitions */\nimport { fireEvent, renderHook } from '@testing-libr"
  },
  {
    "path": "packages/usehooks-ts/src/useEventListener/useEventListener.ts",
    "chars": 4228,
    "preview": "import { useEffect, useRef } from 'react'\n\nimport type { RefObject } from 'react'\n\nimport { useIsomorphicLayoutEffect } "
  },
  {
    "path": "packages/usehooks-ts/src/useHover/index.ts",
    "chars": 27,
    "preview": "export * from './useHover'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useHover/useHover.demo.tsx",
    "chars": 298,
    "preview": "import { useRef } from 'react'\n\nimport { useHover } from './useHover'\n\nexport default function Component() {\n  const hov"
  },
  {
    "path": "packages/usehooks-ts/src/useHover/useHover.md",
    "chars": 160,
    "preview": "React UI sensor hook that determine if the mouse element is in the hover element using Typescript instead CSS.\nThis way "
  },
  {
    "path": "packages/usehooks-ts/src/useHover/useHover.test.ts",
    "chars": 988,
    "preview": "import { act, fireEvent, renderHook } from '@testing-library/react'\n\nimport { useHover } from './useHover'\n\ndescribe('us"
  },
  {
    "path": "packages/usehooks-ts/src/useHover/useHover.ts",
    "chars": 1170,
    "preview": "import { useState } from 'react'\n\nimport type { RefObject } from 'react'\n\nimport { useEventListener } from '../useEventL"
  },
  {
    "path": "packages/usehooks-ts/src/useIntersectionObserver/index.ts",
    "chars": 42,
    "preview": "export * from './useIntersectionObserver'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useIntersectionObserver/useIntersectionObserver.demo.tsx",
    "chars": 726,
    "preview": "import { useIntersectionObserver } from './useIntersectionObserver'\n\nconst Section = (props: { title: string }) => {\n  c"
  },
  {
    "path": "packages/usehooks-ts/src/useIntersectionObserver/useIntersectionObserver.md",
    "chars": 2320,
    "preview": "This React Hook detects visibility of a component on the viewport using the [`IntersectionObserver` API](https://develop"
  },
  {
    "path": "packages/usehooks-ts/src/useIntersectionObserver/useIntersectionObserver.ts",
    "chars": 5565,
    "preview": "import { useEffect, useRef, useState } from 'react'\n\n/** The hook internal state. */\ntype State = {\n  /** A boolean indi"
  },
  {
    "path": "packages/usehooks-ts/src/useInterval/index.ts",
    "chars": 30,
    "preview": "export * from './useInterval'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useInterval/useInterval.demo.tsx",
    "chars": 1054,
    "preview": "import { useState } from 'react'\n\nimport type { ChangeEvent } from 'react'\n\nimport { useInterval } from './useInterval'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useInterval/useInterval.md",
    "chars": 622,
    "preview": "Use [`setInterval`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval) in functiona"
  },
  {
    "path": "packages/usehooks-ts/src/useInterval/useInterval.test.ts",
    "chars": 1523,
    "preview": "import { renderHook } from '@testing-library/react'\n\nimport { useInterval } from './useInterval'\n\ndescribe('useInterval("
  },
  {
    "path": "packages/usehooks-ts/src/useInterval/useInterval.ts",
    "chars": 1373,
    "preview": "import { useEffect, useRef } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect'\n\n/**"
  },
  {
    "path": "packages/usehooks-ts/src/useIsClient/index.ts",
    "chars": 30,
    "preview": "export * from './useIsClient'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useIsClient/useIsClient.demo.tsx",
    "chars": 172,
    "preview": "import { useIsClient } from './useIsClient'\n\nexport default function Component() {\n  const isClient = useIsClient()\n\n  r"
  },
  {
    "path": "packages/usehooks-ts/src/useIsClient/useIsClient.md",
    "chars": 110,
    "preview": "This React Hook can be useful in a SSR environment to wait until be in a browser to execution some functions.\n"
  },
  {
    "path": "packages/usehooks-ts/src/useIsClient/useIsClient.test.ts",
    "chars": 632,
    "preview": "import { renderHook } from '@testing-library/react'\n\nimport { useIsClient } from './useIsClient'\n\ndescribe('useIsClient("
  },
  {
    "path": "packages/usehooks-ts/src/useIsClient/useIsClient.ts",
    "chars": 629,
    "preview": "import { useEffect, useState } from 'react'\n\n/**\n * Custom hook that determines if the code is running on the client sid"
  },
  {
    "path": "packages/usehooks-ts/src/useIsMounted/index.ts",
    "chars": 31,
    "preview": "export * from './useIsMounted'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useIsMounted/useIsMounted.demo.tsx",
    "chars": 772,
    "preview": "import { useEffect, useState } from 'react'\n\nimport { useIsMounted } from './useIsMounted'\n\nconst delay = (ms: number) ="
  },
  {
    "path": "packages/usehooks-ts/src/useIsMounted/useIsMounted.md",
    "chars": 903,
    "preview": "In React, once a component is unmounted, it is deleted from memory and will never be mounted again. That's why we don't "
  },
  {
    "path": "packages/usehooks-ts/src/useIsMounted/useIsMounted.test.ts",
    "chars": 559,
    "preview": "import { renderHook } from '@testing-library/react'\n\nimport { useIsMounted } from './useIsMounted'\n\ndescribe('useIsMount"
  },
  {
    "path": "packages/usehooks-ts/src/useIsMounted/useIsMounted.ts",
    "chars": 773,
    "preview": "import { useCallback, useEffect, useRef } from 'react'\n\n/**\n * Custom hook that determines if the component is currently"
  },
  {
    "path": "packages/usehooks-ts/src/useIsomorphicLayoutEffect/index.ts",
    "chars": 44,
    "preview": "export * from './useIsomorphicLayoutEffect'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.demo.tsx",
    "chars": 294,
    "preview": "import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect'\n\nexport default function Component() {\n  useIsom"
  },
  {
    "path": "packages/usehooks-ts/src/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.md",
    "chars": 837,
    "preview": "The React documentation says about `useLayoutEffect`:\n\n> The signature is identical to useEffect, but it fires synchrono"
  },
  {
    "path": "packages/usehooks-ts/src/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.ts",
    "chars": 713,
    "preview": "import { useEffect, useLayoutEffect } from 'react'\n\n/**\n * Custom hook that uses either `useLayoutEffect` or `useEffect`"
  },
  {
    "path": "packages/usehooks-ts/src/useLocalStorage/index.ts",
    "chars": 34,
    "preview": "export * from './useLocalStorage'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useLocalStorage/useLocalStorage.demo.tsx",
    "chars": 608,
    "preview": "import { useLocalStorage } from './useLocalStorage'\n\nexport default function Component() {\n  const [value, setValue, rem"
  },
  {
    "path": "packages/usehooks-ts/src/useLocalStorage/useLocalStorage.md",
    "chars": 999,
    "preview": "Persist the state with [local storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) so that it "
  },
  {
    "path": "packages/usehooks-ts/src/useLocalStorage/useLocalStorage.test.ts",
    "chars": 7097,
    "preview": "import { act, renderHook } from '@testing-library/react'\n\nimport { mockStorage } from '../../tests/mocks'\nimport { useLo"
  },
  {
    "path": "packages/usehooks-ts/src/useLocalStorage/useLocalStorage.ts",
    "chars": 6405,
    "preview": "import { useCallback, useEffect, useState } from 'react'\n\nimport type { Dispatch, SetStateAction } from 'react'\n\nimport "
  },
  {
    "path": "packages/usehooks-ts/src/useMap/index.ts",
    "chars": 25,
    "preview": "export * from './useMap'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useMap/useMap.demo.tsx",
    "chars": 919,
    "preview": "import { Fragment } from 'react'\n\nimport { useMap } from './useMap'\n\nexport default function Component() {\n  const [map,"
  },
  {
    "path": "packages/usehooks-ts/src/useMap/useMap.md",
    "chars": 728,
    "preview": "This React hook provides an API to interact with a `Map` ([Documentation](https://developer.mozilla.org/en-US/docs/Web/J"
  },
  {
    "path": "packages/usehooks-ts/src/useMap/useMap.test.ts",
    "chars": 3375,
    "preview": "import { act, renderHook } from '@testing-library/react'\n\nimport { useMap } from './useMap'\n\ndescribe('useMap()', () => "
  },
  {
    "path": "packages/usehooks-ts/src/useMap/useMap.ts",
    "chars": 2556,
    "preview": "import { useCallback, useState } from 'react'\n\n/**\n * Represents the type for either a Map or an array of key-value pair"
  },
  {
    "path": "packages/usehooks-ts/src/useMediaQuery/index.ts",
    "chars": 32,
    "preview": "export * from './useMediaQuery'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useMediaQuery/useMediaQuery.demo.tsx",
    "chars": 261,
    "preview": "import { useMediaQuery } from './useMediaQuery'\n\nexport default function Component() {\n  const matches = useMediaQuery('"
  },
  {
    "path": "packages/usehooks-ts/src/useMediaQuery/useMediaQuery.md",
    "chars": 488,
    "preview": "Easily retrieve media dimensions with this Hook React which also works onResize.\n\n**Note:**\n\n- If you use this hook in a"
  },
  {
    "path": "packages/usehooks-ts/src/useMediaQuery/useMediaQuery.ts",
    "chars": 2500,
    "preview": "import { useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect'\n\n/** Hook opt"
  },
  {
    "path": "packages/usehooks-ts/src/useOnClickOutside/index.ts",
    "chars": 36,
    "preview": "export * from './useOnClickOutside'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useOnClickOutside/useOnClickOuside.test.ts",
    "chars": 2727,
    "preview": "import { act, fireEvent, renderHook } from '@testing-library/react'\n\nimport { useOnClickOutside } from './useOnClickOuts"
  },
  {
    "path": "packages/usehooks-ts/src/useOnClickOutside/useOnClickOutside.demo.tsx",
    "chars": 561,
    "preview": "import { useRef } from 'react'\n\nimport { useOnClickOutside } from './useOnClickOutside'\n\nexport default function Compone"
  },
  {
    "path": "packages/usehooks-ts/src/useOnClickOutside/useOnClickOutside.md",
    "chars": 145,
    "preview": "React hook for listening for clicks outside of a specified element (see `useRef`).\n\nThis can be useful for closing a mod"
  },
  {
    "path": "packages/usehooks-ts/src/useOnClickOutside/useOnClickOutside.ts",
    "chars": 2009,
    "preview": "import type { RefObject } from 'react'\n\nimport { useEventListener } from '../useEventListener'\n\n/** Supported event type"
  },
  {
    "path": "packages/usehooks-ts/src/useReadLocalStorage/index.ts",
    "chars": 38,
    "preview": "export * from './useReadLocalStorage'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useReadLocalStorage/useReadLocalStorage.demo.tsx",
    "chars": 277,
    "preview": "import { useReadLocalStorage } from './useReadLocalStorage'\n\nexport default function Component() {\n  // Assuming a value"
  },
  {
    "path": "packages/usehooks-ts/src/useReadLocalStorage/useReadLocalStorage.md",
    "chars": 477,
    "preview": "This React Hook allows you to read a value from localStorage by its key. It can be useful if you just want to read witho"
  },
  {
    "path": "packages/usehooks-ts/src/useReadLocalStorage/useReadLocalStorage.test.ts",
    "chars": 318,
    "preview": "import { renderHook } from '@testing-library/react'\n\nimport { useReadLocalStorage } from './useReadLocalStorage'\n\ndescri"
  },
  {
    "path": "packages/usehooks-ts/src/useReadLocalStorage/useReadLocalStorage.ts",
    "chars": 3830,
    "preview": "import { useCallback, useEffect, useState } from 'react'\n\nimport { useEventListener } from '../useEventListener'\n\nconst "
  },
  {
    "path": "packages/usehooks-ts/src/useResizeObserver/index.ts",
    "chars": 36,
    "preview": "export * from './useResizeObserver'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useResizeObserver/useResizeObserver.demo.tsx",
    "chars": 1071,
    "preview": "import { useRef, useState } from 'react'\n\nimport { useDebounceCallback } from '../useDebounceCallback'\nimport { useResiz"
  },
  {
    "path": "packages/usehooks-ts/src/useResizeObserver/useResizeObserver.md",
    "chars": 986,
    "preview": "A React hook for observing the size of an element using the [ResizeObserver API](https://developer.mozilla.org/en-US/doc"
  },
  {
    "path": "packages/usehooks-ts/src/useResizeObserver/useResizeObserver.test.tsx",
    "chars": 1837,
    "preview": "/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { ResizeObserver } from '@juggle/resize-observer'\ni"
  },
  {
    "path": "packages/usehooks-ts/src/useResizeObserver/useResizeObserver.ts",
    "chars": 3820,
    "preview": "import { useEffect, useRef, useState } from 'react'\n\nimport type { RefObject } from 'react'\n\nimport { useIsMounted } fro"
  },
  {
    "path": "packages/usehooks-ts/src/useScreen/index.ts",
    "chars": 28,
    "preview": "export * from './useScreen'\n"
  },
  {
    "path": "packages/usehooks-ts/src/useScreen/useScreen.demo.tsx",
    "chars": 246,
    "preview": "import { useScreen } from './useScreen'\n\nexport default function Component() {\n  const screen = useScreen()\n\n  return (\n"
  },
  {
    "path": "packages/usehooks-ts/src/useScreen/useScreen.md",
    "chars": 384,
    "preview": "Easily retrieve `window.screen` object with this Hook React which also works onResize.\n\n### Parameters\n\n- `initializeWit"
  }
]

// ... and 71 more files (download for full content)

About this extraction

This page contains the full source code of the juliencrn/usehooks-ts GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 271 files (707.0 KB), approximately 226.2k tokens, and a symbol index with 236 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!