|
1 | 1 |
|
2 |
| -# 🌙 Dark Mode API – webdev-power-kit |
3 |
| - |
4 |
| -This module detects whether the user prefers dark or light mode, and lets you listen to theme changes in real-time using the system’s color scheme preference. |
5 |
| - |
6 |
| ---- |
7 |
| - |
8 |
| -## ✨ Features |
9 |
| - |
10 |
| -* Detect if dark mode is enabled by system/browser |
11 |
| -* Listen for real-time theme changes |
12 |
| -* Useful for automatic theming or toggles |
13 |
| -* Uses native `window.matchMedia` |
14 |
| - |
15 |
| ---- |
16 |
| - |
17 |
| -## ✅ Functions |
18 |
| - |
19 |
| -### 1. `isDarkMode()` |
20 |
| - |
21 |
| -📌 Returns whether the user’s system prefers dark mode. |
22 |
| - |
23 |
| -```js |
24 |
| -import { isDarkMode } from "webdev-power-kit"; |
25 |
| - |
26 |
| -if (isDarkMode()) { |
27 |
| - console.log("🌙 Dark mode is enabled"); |
28 |
| -} else { |
29 |
| - console.log("☀️ Light mode is enabled"); |
30 |
| -} |
| 2 | +## 🌐 CDN Usage (Vanilla HTML + JS) |
| 3 | + |
| 4 | +You can use it directly in your browser using **Skypack CDN** or **jsDelivr**. |
| 5 | + |
| 6 | +> ✅ Works in `type="module"` script |
| 7 | +> ⚠️ Works only on `https` or `localhost` due to browser API restrictions. |
| 8 | +
|
| 9 | +### ✅ Example using **[jsDelivr](https://cdn.jsdelivr.net/npm/webdev-power-kit/+esm)** |
| 10 | + |
| 11 | +```html |
| 12 | +<!DOCTYPE html> |
| 13 | +<html lang="en"> |
| 14 | +<head> |
| 15 | + <title>WebDev Power Kit - CDN Example</title> |
| 16 | +</head> |
| 17 | +<body> |
| 18 | + <button id="copyBtn">Copy to Clipboard</button> |
| 19 | + |
| 20 | + <script type="module"> |
| 21 | + import { copyToClipboard } from 'https://cdn.jsdelivr.net/npm/webdev-power-kit/+esm'; |
| 22 | +
|
| 23 | + document.getElementById("copyBtn").addEventListener("click", () => { |
| 24 | + copyToClipboard("Text from WebDev Power Kit!"); |
| 25 | + alert("Text copied ✅"); |
| 26 | + }); |
| 27 | + </script> |
| 28 | +</body> |
| 29 | +</html> |
31 | 30 | ```
|
32 | 31 |
|
33 |
| -#### 🔁 Returns: |
34 |
| - |
35 |
| -* `true` → if user prefers dark mode |
36 |
| -* `false` → if light mode is preferred |
37 |
| - |
38 | 32 | ---
|
39 | 33 |
|
40 |
| -### 2. `listenDarkMode(callback)` |
| 34 | +### 🔁 CDN Mirror Options |
41 | 35 |
|
42 |
| -📌 Listen to changes in the system theme (dark ↔️ light) in real-time. |
43 |
| - |
44 |
| -```js |
45 |
| -import { listenDarkMode } from "webdev-power-kit"; |
46 |
| - |
47 |
| -listenDarkMode((isDark) => { |
48 |
| - console.log("Theme changed:", isDark ? "Dark" : "Light"); |
49 |
| -}); |
| 36 | +- **[jsDelivr](https://cdn.jsdelivr.net/npm/webdev-power-kit/+esm)** |
| 37 | +```url |
| 38 | +https://cdn.jsdelivr.net/npm/webdev-power-kit/+esm |
50 | 39 | ```
|
51 | 40 |
|
52 |
| -#### 📥 Parameters: |
53 |
| - |
54 |
| -| Param | Type | Description | |
55 |
| -| ---------- | --------------------------- | -------------------------------------------------------- | |
56 |
| -| `callback` | `(isDark: boolean) => void` | Called with `true` for dark mode, `false` for light mode | |
57 |
| - |
58 |
| -#### 🔁 Returns: |
59 |
| - |
60 |
| -* A function to unsubscribe and stop listening |
61 |
| - |
62 |
| ---- |
63 |
| - |
64 |
| -## 🔐 Browser Support |
| 41 | +- **[UNPKG](https://unpkg.com/webdev-power-kit/+esm)** |
| 42 | +```url |
| 43 | +https://unpkg.com/webdev-power-kit/+esm |
| 44 | +``` |
65 | 45 |
|
66 |
| -| Browser | Supported? | Notes | |
67 |
| -| ------- | ---------- | -------------------------------- | |
68 |
| -| Chrome | ✅ | Fully supported | |
69 |
| -| Firefox | ✅ | Fully supported | |
70 |
| -| Edge | ✅ | Fully supported | |
71 |
| -| Safari | ✅ | Fully supported (macOS/iOS only) | |
72 |
| -| Mobile | ✅ | Most modern devices supported | |
| 46 | +- **[Skypack](https://cdn.skypack.dev/webdev-power-kit)** |
| 47 | +```url |
| 48 | +https://cdn.skypack.dev/webdev-power-kit |
| 49 | +``` |
73 | 50 |
|
74 | 51 | ---
|
75 |
| - |
76 |
| -## 💡 Use Cases |
77 |
| - |
78 |
| -* Auto-switch theme on page load |
79 |
| -* Show theme toggle suggestion |
80 |
| -* Sync app theme with OS settings |
81 |
| -* Apply different CSS styles dynamically |
82 |
| - |
0 commit comments