diff --git a/README.md b/README.md
index 909d3cd..4b4f461 100644
--- a/README.md
+++ b/README.md
@@ -14,12 +14,15 @@
-Anzol provides very useful React hooks for very common tasks such as data fetching
-or deferring the updating of values with a custom timeout. You can find working examples in the
-[documentation](https://konstantin-lukas.github.io/anzol/) or if you just want the code in the examples/components
+Anzol provides very useful client-side React hooks for very common tasks such as data fetching
+or deferring the updating of values with a custom timeout. It supports both SSG and SSR. You can find working examples
+in the [documentation](https://konstantin-lukas.github.io/anzol/) or, if you just want the code, in the examples/components
directory.
-Anzol is built alongside automated tests to ensure quality.
+Features:
+- ✅ Fully Tested
+- ✅ SSR and SSG compatible
+- ✅ Detailed documentation
## Installation
Anzol is available on the NPM registry. To install it, just run:
@@ -28,23 +31,21 @@ npm install anzol
```
## Currently Available Hooks
-- useFetch: Fetches the provided URL and optionally parses the response. Aborts requests when a new request is
+- ✅ useFetch: Fetches the provided URL and optionally parses the response. Aborts requests when a new request is
started before the previous has finished to prevent flickering of stale responses by default.
-- useDefer: Delays the update of a value until the input has stopped changing for a certain time. This is different
+- ✅ useDefer: Delays the update of a value until the input has stopped changing for a certain time. This is different
from React's built-in useDeferredValue because you can set the delay yourself.
-- useFirstRender: Returns true on first render; false otherwise.
-- useToggle: Provides a boolean toggle that does not persist between page reloads.
-- useIntersectionObserver: Provides a hook API that wraps the IntersectionObserver API. This hook is for use with a single element only. For
+- ✅ useFirstRender: Returns true on first render; false otherwise.
+- ✅ useToggle: Provides a boolean toggle that does not persist between page reloads.
+- ✅ useIntersectionObserver: Provides a hook API that wraps the IntersectionObserver API. This hook is for use with a single element only. For
simplicity this is the recommended approach. If you have an extremely large number of objects to observe and want
to avoid creating an IntersectionObserver for each, refer to useIntersectionObserverArray to use a single observer
for multiple elements with a common root.
-- useIntersectionObserverArray: Like useIntersectionObserver but for multiple elements.
-- useEvent: Provides a wrapper around the EventListener API. Use the return value to define the event target.
-- useLazyLoad: Provides a simple API for fetching data from a resource in batches.
-- useLocalStorage: Provides access to local storage, with the additional option to update all usages of this hook
+- ✅ useIntersectionObserverArray: Like useIntersectionObserver but for multiple elements.
+- ✅ useEvent: Provides a wrapper around the EventListener API. Use the return value to define the event target.
+- ✅ useLazyLoad: Provides a simple API for fetching data from a resource in batches.
+- ✅ useLocalStorage: Provides access to local storage, with the additional option to update all usages of this hook
when local storage changes.
-- useClickOutside: Provides a ref to attach to an HTML element and takes a callback function, and calls that
+- ✅ useClickOutside: Provides a ref to attach to an HTML element and takes a callback function, and calls that
function when the user clicks anywhere outside the given element.
-- usePreferredScheme: Listens for changes in the user's preferred scheme and returns it.
-- useDarkMode: Similar to usePreferredScheme but allows setting the user scheme manually and automatically
- updates it when the preferred scheme changes. Uses local storage to save the chosen scheme across reloads.
\ No newline at end of file
+- ✅ usePreferredScheme: Listens for changes in the user's preferred scheme and returns it.
\ No newline at end of file
diff --git a/examples/.eslintrc.json b/examples/.eslintrc.json
new file mode 100644
index 0000000..3722418
--- /dev/null
+++ b/examples/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": ["next/core-web-vitals", "next/typescript"]
+}
diff --git a/examples/.gitignore b/examples/.gitignore
new file mode 100644
index 0000000..fd3dbb5
--- /dev/null
+++ b/examples/.gitignore
@@ -0,0 +1,36 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+.yarn/install-state.gz
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env*.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/examples/App.tsx b/examples/App.tsx
deleted file mode 100644
index 61b9029..0000000
--- a/examples/App.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react';
-import DemoUseDarkMode from "./components/demoUseDarkMode";
-
-const App: React.FC = () => {
- return (
-