@just-web/toolkits 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/dist/attributes/get-attribute.cjs +1 -1
  2. package/dist/attributes/get-attribute.cjs.map +1 -1
  3. package/dist/attributes/get-attribute.d.cts +2 -2
  4. package/dist/attributes/get-attribute.d.cts.map +1 -1
  5. package/dist/attributes/get-attribute.d.mts +2 -2
  6. package/dist/attributes/get-attribute.d.mts.map +1 -1
  7. package/dist/attributes/get-attribute.mjs +1 -1
  8. package/dist/attributes/get-attribute.mjs.map +1 -1
  9. package/dist/attributes/get-data-attribute.cjs +1 -1
  10. package/dist/attributes/get-data-attribute.cjs.map +1 -1
  11. package/dist/attributes/get-data-attribute.d.cts +2 -2
  12. package/dist/attributes/get-data-attribute.d.cts.map +1 -1
  13. package/dist/attributes/get-data-attribute.d.mts +2 -2
  14. package/dist/attributes/get-data-attribute.d.mts.map +1 -1
  15. package/dist/attributes/get-data-attribute.mjs +1 -1
  16. package/dist/attributes/get-data-attribute.mjs.map +1 -1
  17. package/dist/attributes/observe-attribute.cjs +11 -8
  18. package/dist/attributes/observe-attribute.cjs.map +1 -1
  19. package/dist/attributes/observe-attribute.d.cts +7 -7
  20. package/dist/attributes/observe-attribute.d.cts.map +1 -1
  21. package/dist/attributes/observe-attribute.d.mts +7 -7
  22. package/dist/attributes/observe-attribute.d.mts.map +1 -1
  23. package/dist/attributes/observe-attribute.mjs +11 -8
  24. package/dist/attributes/observe-attribute.mjs.map +1 -1
  25. package/dist/attributes/observe-data-attribute.cjs +7 -10
  26. package/dist/attributes/observe-data-attribute.cjs.map +1 -1
  27. package/dist/attributes/observe-data-attribute.d.cts +8 -11
  28. package/dist/attributes/observe-data-attribute.d.cts.map +1 -1
  29. package/dist/attributes/observe-data-attribute.d.mts +8 -11
  30. package/dist/attributes/observe-data-attribute.d.mts.map +1 -1
  31. package/dist/attributes/observe-data-attribute.mjs +7 -10
  32. package/dist/attributes/observe-data-attribute.mjs.map +1 -1
  33. package/dist/color-scheme/color-scheme.types.d.cts +11 -0
  34. package/dist/color-scheme/color-scheme.types.d.cts.map +1 -0
  35. package/dist/color-scheme/color-scheme.types.d.mts +11 -0
  36. package/dist/color-scheme/color-scheme.types.d.mts.map +1 -0
  37. package/dist/color-scheme/get-prefers-color-scheme.cjs +3 -1
  38. package/dist/color-scheme/get-prefers-color-scheme.cjs.map +1 -1
  39. package/dist/color-scheme/get-prefers-color-scheme.d.cts +7 -2
  40. package/dist/color-scheme/get-prefers-color-scheme.d.cts.map +1 -1
  41. package/dist/color-scheme/get-prefers-color-scheme.d.mts +7 -2
  42. package/dist/color-scheme/get-prefers-color-scheme.d.mts.map +1 -1
  43. package/dist/color-scheme/get-prefers-color-scheme.mjs +3 -1
  44. package/dist/color-scheme/get-prefers-color-scheme.mjs.map +1 -1
  45. package/dist/color-scheme/observe-prefers-color-scheme.cjs.map +1 -1
  46. package/dist/color-scheme/observe-prefers-color-scheme.d.cts +4 -1
  47. package/dist/color-scheme/observe-prefers-color-scheme.d.cts.map +1 -1
  48. package/dist/color-scheme/observe-prefers-color-scheme.d.mts +4 -1
  49. package/dist/color-scheme/observe-prefers-color-scheme.d.mts.map +1 -1
  50. package/dist/color-scheme/observe-prefers-color-scheme.mjs.map +1 -1
  51. package/dist/index.d.cts +2 -1
  52. package/dist/index.d.mts +2 -1
  53. package/dist/react/hooks/use-attribute.cjs +8 -9
  54. package/dist/react/hooks/use-attribute.cjs.map +1 -1
  55. package/dist/react/hooks/use-attribute.d.cts +4 -4
  56. package/dist/react/hooks/use-attribute.d.mts +4 -4
  57. package/dist/react/hooks/use-attribute.mjs +8 -9
  58. package/dist/react/hooks/use-attribute.mjs.map +1 -1
  59. package/dist/react/hooks/use-theme-by-class-name.cjs +1 -1
  60. package/dist/react/hooks/use-theme-by-class-name.cjs.map +1 -1
  61. package/dist/react/hooks/use-theme-by-class-name.d.cts +2 -2
  62. package/dist/react/hooks/use-theme-by-class-name.d.mts +2 -2
  63. package/dist/react/hooks/use-theme-by-class-name.mjs +1 -1
  64. package/dist/react/hooks/use-theme-by-class-name.mjs.map +1 -1
  65. package/dist/react/hooks/use-theme-by-data-attribute.cjs +1 -1
  66. package/dist/react/hooks/use-theme-by-data-attribute.cjs.map +1 -1
  67. package/dist/react/hooks/use-theme-by-data-attribute.d.cts +2 -2
  68. package/dist/react/hooks/use-theme-by-data-attribute.d.mts +2 -2
  69. package/dist/react/hooks/use-theme-by-data-attribute.mjs +1 -1
  70. package/dist/react/hooks/use-theme-by-data-attribute.mjs.map +1 -1
  71. package/dist/react/theme/create-theme-hook.cjs.map +1 -1
  72. package/dist/react/theme/create-theme-hook.mjs.map +1 -1
  73. package/dist/theme/_utils/parse-stored-theme.cjs +1 -1
  74. package/dist/theme/_utils/parse-stored-theme.cjs.map +1 -1
  75. package/dist/theme/_utils/parse-stored-theme.mjs +1 -1
  76. package/dist/theme/_utils/parse-stored-theme.mjs.map +1 -1
  77. package/dist/theme/_utils/set-theme-to-stores.cjs +1 -1
  78. package/dist/theme/_utils/set-theme-to-stores.cjs.map +1 -1
  79. package/dist/theme/_utils/set-theme-to-stores.mjs +1 -1
  80. package/dist/theme/_utils/set-theme-to-stores.mjs.map +1 -1
  81. package/dist/theme/class-name/parse-class-name.cjs +1 -1
  82. package/dist/theme/class-name/parse-class-name.cjs.map +1 -1
  83. package/dist/theme/class-name/parse-class-name.d.cts +2 -2
  84. package/dist/theme/class-name/parse-class-name.d.cts.map +1 -1
  85. package/dist/theme/class-name/parse-class-name.d.mts +2 -2
  86. package/dist/theme/class-name/parse-class-name.d.mts.map +1 -1
  87. package/dist/theme/class-name/parse-class-name.mjs +1 -1
  88. package/dist/theme/class-name/parse-class-name.mjs.map +1 -1
  89. package/dist/theme/class-name/read-class-name.cjs +1 -1
  90. package/dist/theme/class-name/read-class-name.cjs.map +1 -1
  91. package/dist/theme/class-name/read-class-name.d.cts +2 -2
  92. package/dist/theme/class-name/read-class-name.d.cts.map +1 -1
  93. package/dist/theme/class-name/read-class-name.d.mts +2 -2
  94. package/dist/theme/class-name/read-class-name.d.mts.map +1 -1
  95. package/dist/theme/class-name/read-class-name.mjs +1 -1
  96. package/dist/theme/class-name/read-class-name.mjs.map +1 -1
  97. package/dist/theme/class-name/stringify-class-name.cjs +4 -4
  98. package/dist/theme/class-name/stringify-class-name.cjs.map +1 -1
  99. package/dist/theme/class-name/stringify-class-name.d.cts +3 -3
  100. package/dist/theme/class-name/stringify-class-name.d.cts.map +1 -1
  101. package/dist/theme/class-name/stringify-class-name.d.mts +3 -3
  102. package/dist/theme/class-name/stringify-class-name.d.mts.map +1 -1
  103. package/dist/theme/class-name/stringify-class-name.mjs +4 -4
  104. package/dist/theme/class-name/stringify-class-name.mjs.map +1 -1
  105. package/dist/theme/class-name/subscribe-class-name.cjs +2 -3
  106. package/dist/theme/class-name/subscribe-class-name.cjs.map +1 -1
  107. package/dist/theme/class-name/subscribe-class-name.d.cts +2 -2
  108. package/dist/theme/class-name/subscribe-class-name.d.cts.map +1 -1
  109. package/dist/theme/class-name/subscribe-class-name.d.mts +2 -2
  110. package/dist/theme/class-name/subscribe-class-name.d.mts.map +1 -1
  111. package/dist/theme/class-name/subscribe-class-name.mjs +2 -3
  112. package/dist/theme/class-name/subscribe-class-name.mjs.map +1 -1
  113. package/dist/theme/class-name/write-class-name.cjs +2 -2
  114. package/dist/theme/class-name/write-class-name.cjs.map +1 -1
  115. package/dist/theme/class-name/write-class-name.d.cts +4 -4
  116. package/dist/theme/class-name/write-class-name.d.cts.map +1 -1
  117. package/dist/theme/class-name/write-class-name.d.mts +4 -4
  118. package/dist/theme/class-name/write-class-name.d.mts.map +1 -1
  119. package/dist/theme/class-name/write-class-name.mjs +2 -2
  120. package/dist/theme/class-name/write-class-name.mjs.map +1 -1
  121. package/dist/theme/compose-theme-stores.cjs.map +1 -1
  122. package/dist/theme/compose-theme-stores.mjs.map +1 -1
  123. package/dist/theme/cookie/write-cookie-theme.cjs +2 -2
  124. package/dist/theme/cookie/write-cookie-theme.cjs.map +1 -1
  125. package/dist/theme/cookie/write-cookie-theme.d.cts +2 -2
  126. package/dist/theme/cookie/write-cookie-theme.d.cts.map +1 -1
  127. package/dist/theme/cookie/write-cookie-theme.d.mts +2 -2
  128. package/dist/theme/cookie/write-cookie-theme.d.mts.map +1 -1
  129. package/dist/theme/cookie/write-cookie-theme.mjs +2 -2
  130. package/dist/theme/cookie/write-cookie-theme.mjs.map +1 -1
  131. package/dist/theme/data-attribute/parse-data-attribute.cjs +1 -1
  132. package/dist/theme/data-attribute/parse-data-attribute.cjs.map +1 -1
  133. package/dist/theme/data-attribute/parse-data-attribute.d.cts +2 -2
  134. package/dist/theme/data-attribute/parse-data-attribute.d.mts +2 -2
  135. package/dist/theme/data-attribute/parse-data-attribute.mjs +1 -1
  136. package/dist/theme/data-attribute/parse-data-attribute.mjs.map +1 -1
  137. package/dist/theme/data-attribute/read-data-attribute.cjs +1 -1
  138. package/dist/theme/data-attribute/read-data-attribute.cjs.map +1 -1
  139. package/dist/theme/data-attribute/read-data-attribute.d.cts +2 -2
  140. package/dist/theme/data-attribute/read-data-attribute.d.cts.map +1 -1
  141. package/dist/theme/data-attribute/read-data-attribute.d.mts +2 -2
  142. package/dist/theme/data-attribute/read-data-attribute.d.mts.map +1 -1
  143. package/dist/theme/data-attribute/read-data-attribute.mjs +1 -1
  144. package/dist/theme/data-attribute/read-data-attribute.mjs.map +1 -1
  145. package/dist/theme/data-attribute/stringify-data-attribute.cjs +4 -4
  146. package/dist/theme/data-attribute/stringify-data-attribute.cjs.map +1 -1
  147. package/dist/theme/data-attribute/stringify-data-attribute.d.cts +3 -3
  148. package/dist/theme/data-attribute/stringify-data-attribute.d.cts.map +1 -1
  149. package/dist/theme/data-attribute/stringify-data-attribute.d.mts +3 -3
  150. package/dist/theme/data-attribute/stringify-data-attribute.d.mts.map +1 -1
  151. package/dist/theme/data-attribute/stringify-data-attribute.mjs +4 -4
  152. package/dist/theme/data-attribute/stringify-data-attribute.mjs.map +1 -1
  153. package/dist/theme/data-attribute/subscribe-data-attribute.cjs +2 -3
  154. package/dist/theme/data-attribute/subscribe-data-attribute.cjs.map +1 -1
  155. package/dist/theme/data-attribute/subscribe-data-attribute.d.cts +2 -2
  156. package/dist/theme/data-attribute/subscribe-data-attribute.d.cts.map +1 -1
  157. package/dist/theme/data-attribute/subscribe-data-attribute.d.mts +2 -2
  158. package/dist/theme/data-attribute/subscribe-data-attribute.d.mts.map +1 -1
  159. package/dist/theme/data-attribute/subscribe-data-attribute.mjs +2 -3
  160. package/dist/theme/data-attribute/subscribe-data-attribute.mjs.map +1 -1
  161. package/dist/theme/data-attribute/write-data-attribute.cjs +3 -3
  162. package/dist/theme/data-attribute/write-data-attribute.cjs.map +1 -1
  163. package/dist/theme/data-attribute/write-data-attribute.d.cts +4 -4
  164. package/dist/theme/data-attribute/write-data-attribute.d.cts.map +1 -1
  165. package/dist/theme/data-attribute/write-data-attribute.d.mts +4 -4
  166. package/dist/theme/data-attribute/write-data-attribute.d.mts.map +1 -1
  167. package/dist/theme/data-attribute/write-data-attribute.mjs +3 -3
  168. package/dist/theme/data-attribute/write-data-attribute.mjs.map +1 -1
  169. package/dist/theme/local-storage/write-local-storage.cjs +1 -1
  170. package/dist/theme/local-storage/write-local-storage.cjs.map +1 -1
  171. package/dist/theme/local-storage/write-local-storage.d.cts +2 -2
  172. package/dist/theme/local-storage/write-local-storage.d.mts +2 -2
  173. package/dist/theme/local-storage/write-local-storage.mjs +1 -1
  174. package/dist/theme/local-storage/write-local-storage.mjs.map +1 -1
  175. package/dist/theme/session-storage/write-session-storage.cjs +1 -1
  176. package/dist/theme/session-storage/write-session-storage.cjs.map +1 -1
  177. package/dist/theme/session-storage/write-session-storage.d.cts +2 -2
  178. package/dist/theme/session-storage/write-session-storage.d.mts +2 -2
  179. package/dist/theme/session-storage/write-session-storage.mjs +1 -1
  180. package/dist/theme/session-storage/write-session-storage.mjs.map +1 -1
  181. package/dist/theme/theme-entry.types.d.cts +4 -2
  182. package/dist/theme/theme-entry.types.d.cts.map +1 -1
  183. package/dist/theme/theme-entry.types.d.mts +4 -2
  184. package/dist/theme/theme-entry.types.d.mts.map +1 -1
  185. package/dist/theme/theme-store/async-theme-store.types.d.cts +1 -1
  186. package/dist/theme/theme-store/async-theme-store.types.d.cts.map +1 -1
  187. package/dist/theme/theme-store/async-theme-store.types.d.mts +1 -1
  188. package/dist/theme/theme-store/async-theme-store.types.d.mts.map +1 -1
  189. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.cjs +1 -1
  190. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.cjs.map +1 -1
  191. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.d.cts +2 -2
  192. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.d.mts +2 -2
  193. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.mjs +1 -1
  194. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.mjs.map +1 -1
  195. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.cjs +1 -1
  196. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.cjs.map +1 -1
  197. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.d.cts +3 -3
  198. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.d.mts +3 -3
  199. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.mjs +1 -1
  200. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.mjs.map +1 -1
  201. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.cjs +1 -1
  202. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.cjs.map +1 -1
  203. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.d.cts +1 -1
  204. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.d.mts +1 -1
  205. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.mjs +1 -1
  206. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.mjs.map +1 -1
  207. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.d.cts +1 -1
  208. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.d.mts +1 -1
  209. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.d.cts +1 -1
  210. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.d.mts +1 -1
  211. package/dist/theme/theme-store/theme-store.types.d.cts +1 -1
  212. package/dist/theme/theme-store/theme-store.types.d.cts.map +1 -1
  213. package/dist/theme/theme-store/theme-store.types.d.mts +1 -1
  214. package/dist/theme/theme-store/theme-store.types.d.mts.map +1 -1
  215. package/dist/theme/web-storage/write-web-storage.cjs +3 -3
  216. package/dist/theme/web-storage/write-web-storage.cjs.map +1 -1
  217. package/dist/theme/web-storage/write-web-storage.d.cts +2 -2
  218. package/dist/theme/web-storage/write-web-storage.d.mts +2 -2
  219. package/dist/theme/web-storage/write-web-storage.mjs +3 -3
  220. package/dist/theme/web-storage/write-web-storage.mjs.map +1 -1
  221. package/dist/utils/append-id.cjs +2 -2
  222. package/dist/utils/append-id.cjs.map +1 -1
  223. package/dist/utils/append-id.d.cts +3 -3
  224. package/dist/utils/append-id.d.mts +3 -3
  225. package/dist/utils/append-id.mjs +2 -2
  226. package/dist/utils/append-id.mjs.map +1 -1
  227. package/package.json +1 -1
  228. package/src/attributes/get-attribute.ts +5 -2
  229. package/src/attributes/get-data-attribute.ts +5 -2
  230. package/src/attributes/observe-attribute.ts +15 -10
  231. package/src/attributes/observe-data-attribute.ts +8 -11
  232. package/src/color-scheme/color-scheme.types.ts +7 -0
  233. package/src/color-scheme/get-prefers-color-scheme.ts +6 -4
  234. package/src/color-scheme/observe-prefers-color-scheme.ts +3 -1
  235. package/src/index.ts +1 -0
  236. package/src/react/hooks/use-attribute.ts +12 -13
  237. package/src/react/hooks/use-theme-by-class-name.ts +2 -2
  238. package/src/react/hooks/use-theme-by-data-attribute.ts +2 -2
  239. package/src/react/theme/create-theme-hook.ts +4 -6
  240. package/src/theme/_utils/parse-stored-theme.ts +2 -2
  241. package/src/theme/_utils/set-theme-to-stores.ts +3 -3
  242. package/src/theme/class-name/parse-class-name.ts +2 -2
  243. package/src/theme/class-name/read-class-name.ts +2 -2
  244. package/src/theme/class-name/stringify-class-name.ts +6 -6
  245. package/src/theme/class-name/subscribe-class-name.ts +3 -4
  246. package/src/theme/class-name/write-class-name.ts +4 -4
  247. package/src/theme/compose-theme-stores.ts +1 -1
  248. package/src/theme/cookie/write-cookie-theme.ts +3 -3
  249. package/src/theme/data-attribute/parse-data-attribute.ts +2 -2
  250. package/src/theme/data-attribute/read-data-attribute.ts +2 -2
  251. package/src/theme/data-attribute/stringify-data-attribute.ts +6 -6
  252. package/src/theme/data-attribute/subscribe-data-attribute.ts +3 -4
  253. package/src/theme/data-attribute/write-data-attribute.ts +5 -5
  254. package/src/theme/local-storage/write-local-storage.ts +2 -2
  255. package/src/theme/session-storage/write-session-storage.ts +2 -2
  256. package/src/theme/theme-entry.types.ts +5 -3
  257. package/src/theme/theme-store/async-theme-store.types.ts +1 -3
  258. package/src/theme/theme-store/class-name-theme-store/class-name-theme-store.ts +2 -2
  259. package/src/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.ts +2 -2
  260. package/src/theme/theme-store/in-memory-theme-store/in-memory-theme-store.ts +1 -1
  261. package/src/theme/theme-store/theme-store.types.ts +1 -3
  262. package/src/theme/web-storage/write-web-storage.ts +5 -5
  263. package/src/utils/append-id.ts +3 -3
@@ -4,7 +4,7 @@
4
4
  * Gets the value of an attribute from an element.
5
5
  *
6
6
  * @param qualifiedName - The name of the attribute to get
7
- * @param element - The element to get the attribute from. Defaults to `document.documentElement`
7
+ * @param element - The element to get the attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`
8
8
  * @returns The attribute value cast to type T, or null if the attribute doesn't exist
9
9
  *
10
10
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"get-attribute.cjs","names":[],"sources":["../../src/attributes/get-attribute.ts"],"sourcesContent":["/**\n * Gets the value of an attribute from an element.\n *\n * @param qualifiedName - The name of the attribute to get\n * @param element - The element to get the attribute from. Defaults to `document.documentElement`\n * @returns The attribute value cast to type T, or null if the attribute doesn't exist\n *\n * @example\n * ```ts\n * // Get theme from document root\n * const theme = getAttribute('data-theme')\n *\n * // Get data-testid from a specific element\n * const testId = getAttribute('data-testid', element)\n * ```\n */\nexport function getAttribute<T extends string>(qualifiedName: T, element?: Element | undefined) {\n\telement = element ?? globalThis.document.documentElement\n\treturn element.getAttribute(qualifiedName)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,SAAgB,aAA+B,eAAkB,SAA+B;AAC/F,WAAU,WAAW,WAAW,SAAS;AACzC,QAAO,QAAQ,aAAa,cAAc"}
1
+ {"version":3,"file":"get-attribute.cjs","names":[],"sources":["../../src/attributes/get-attribute.ts"],"sourcesContent":["/**\n * Gets the value of an attribute from an element.\n *\n * @param qualifiedName - The name of the attribute to get\n * @param element - The element to get the attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`\n * @returns The attribute value cast to type T, or null if the attribute doesn't exist\n *\n * @example\n * ```ts\n * // Get theme from document root\n * const theme = getAttribute('data-theme')\n *\n * // Get data-testid from a specific element\n * const testId = getAttribute('data-testid', element)\n * ```\n */\nexport function getAttribute<T extends string>(\n\tqualifiedName: T,\n\telement?: Element | null | undefined\n) {\n\telement = element ?? globalThis.document.documentElement\n\treturn element.getAttribute(qualifiedName)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,SAAgB,aACf,eACA,SACC;AACD,WAAU,WAAW,WAAW,SAAS;AACzC,QAAO,QAAQ,aAAa,cAAc"}
@@ -3,7 +3,7 @@
3
3
  * Gets the value of an attribute from an element.
4
4
  *
5
5
  * @param qualifiedName - The name of the attribute to get
6
- * @param element - The element to get the attribute from. Defaults to `document.documentElement`
6
+ * @param element - The element to get the attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`
7
7
  * @returns The attribute value cast to type T, or null if the attribute doesn't exist
8
8
  *
9
9
  * @example
@@ -15,7 +15,7 @@
15
15
  * const testId = getAttribute('data-testid', element)
16
16
  * ```
17
17
  */
18
- declare function getAttribute<T extends string>(qualifiedName: T, element?: Element | undefined): string | null;
18
+ declare function getAttribute<T extends string>(qualifiedName: T, element?: Element | null | undefined): string | null;
19
19
  //#endregion
20
20
  export { getAttribute };
21
21
  //# sourceMappingURL=get-attribute.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-attribute.d.cts","names":[],"sources":["../../src/attributes/get-attribute.ts"],"sourcesContent":[],"mappings":";;AAgBA;;;;;;;;;;;;;;;iBAAgB,8CAA8C,aAAa"}
1
+ {"version":3,"file":"get-attribute.d.cts","names":[],"sources":["../../src/attributes/get-attribute.ts"],"sourcesContent":[],"mappings":";;AAgBA;;;;;;;;;;;;;;;iBAAgB,8CACA,aACL"}
@@ -3,7 +3,7 @@
3
3
  * Gets the value of an attribute from an element.
4
4
  *
5
5
  * @param qualifiedName - The name of the attribute to get
6
- * @param element - The element to get the attribute from. Defaults to `document.documentElement`
6
+ * @param element - The element to get the attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`
7
7
  * @returns The attribute value cast to type T, or null if the attribute doesn't exist
8
8
  *
9
9
  * @example
@@ -15,7 +15,7 @@
15
15
  * const testId = getAttribute('data-testid', element)
16
16
  * ```
17
17
  */
18
- declare function getAttribute<T extends string>(qualifiedName: T, element?: Element | undefined): string | null;
18
+ declare function getAttribute<T extends string>(qualifiedName: T, element?: Element | null | undefined): string | null;
19
19
  //#endregion
20
20
  export { getAttribute };
21
21
  //# sourceMappingURL=get-attribute.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-attribute.d.mts","names":[],"sources":["../../src/attributes/get-attribute.ts"],"sourcesContent":[],"mappings":";;AAgBA;;;;;;;;;;;;;;;iBAAgB,8CAA8C,aAAa"}
1
+ {"version":3,"file":"get-attribute.d.mts","names":[],"sources":["../../src/attributes/get-attribute.ts"],"sourcesContent":[],"mappings":";;AAgBA;;;;;;;;;;;;;;;iBAAgB,8CACA,aACL"}
@@ -3,7 +3,7 @@
3
3
  * Gets the value of an attribute from an element.
4
4
  *
5
5
  * @param qualifiedName - The name of the attribute to get
6
- * @param element - The element to get the attribute from. Defaults to `document.documentElement`
6
+ * @param element - The element to get the attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`
7
7
  * @returns The attribute value cast to type T, or null if the attribute doesn't exist
8
8
  *
9
9
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"get-attribute.mjs","names":[],"sources":["../../src/attributes/get-attribute.ts"],"sourcesContent":["/**\n * Gets the value of an attribute from an element.\n *\n * @param qualifiedName - The name of the attribute to get\n * @param element - The element to get the attribute from. Defaults to `document.documentElement`\n * @returns The attribute value cast to type T, or null if the attribute doesn't exist\n *\n * @example\n * ```ts\n * // Get theme from document root\n * const theme = getAttribute('data-theme')\n *\n * // Get data-testid from a specific element\n * const testId = getAttribute('data-testid', element)\n * ```\n */\nexport function getAttribute<T extends string>(qualifiedName: T, element?: Element | undefined) {\n\telement = element ?? globalThis.document.documentElement\n\treturn element.getAttribute(qualifiedName)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,SAAgB,aAA+B,eAAkB,SAA+B;AAC/F,WAAU,WAAW,WAAW,SAAS;AACzC,QAAO,QAAQ,aAAa,cAAc"}
1
+ {"version":3,"file":"get-attribute.mjs","names":[],"sources":["../../src/attributes/get-attribute.ts"],"sourcesContent":["/**\n * Gets the value of an attribute from an element.\n *\n * @param qualifiedName - The name of the attribute to get\n * @param element - The element to get the attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`\n * @returns The attribute value cast to type T, or null if the attribute doesn't exist\n *\n * @example\n * ```ts\n * // Get theme from document root\n * const theme = getAttribute('data-theme')\n *\n * // Get data-testid from a specific element\n * const testId = getAttribute('data-testid', element)\n * ```\n */\nexport function getAttribute<T extends string>(\n\tqualifiedName: T,\n\telement?: Element | null | undefined\n) {\n\telement = element ?? globalThis.document.documentElement\n\treturn element.getAttribute(qualifiedName)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,SAAgB,aACf,eACA,SACC;AACD,WAAU,WAAW,WAAW,SAAS;AACzC,QAAO,QAAQ,aAAa,cAAc"}
@@ -5,7 +5,7 @@ const require_get_attribute = require('./get-attribute.cjs');
5
5
  * Gets the value of a data attribute from an element.
6
6
  *
7
7
  * @param qualifiedName - The name of the data attribute to get
8
- * @param element - The element to get the data attribute from. Defaults to `document.documentElement`
8
+ * @param element - The element to get the data attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`
9
9
  * @returns The data attribute value, or null if the attribute doesn't exist
10
10
  *
11
11
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"get-data-attribute.cjs","names":["getAttribute"],"sources":["../../src/attributes/get-data-attribute.ts"],"sourcesContent":["import type { DataAttribute } from './data-attribute.ts'\nimport { getAttribute } from './get-attribute.ts'\n\n/**\n * Gets the value of a data attribute from an element.\n *\n * @param qualifiedName - The name of the data attribute to get\n * @param element - The element to get the data attribute from. Defaults to `document.documentElement`\n * @returns The data attribute value, or null if the attribute doesn't exist\n *\n * @example\n */\nexport function getDataAttribute(qualifiedName: DataAttribute, element?: Element | undefined) {\n\treturn getAttribute(qualifiedName, element)\n}\n"],"mappings":";;;;;;;;;;;;AAYA,SAAgB,iBAAiB,eAA8B,SAA+B;AAC7F,QAAOA,mCAAa,eAAe,QAAQ"}
1
+ {"version":3,"file":"get-data-attribute.cjs","names":["getAttribute"],"sources":["../../src/attributes/get-data-attribute.ts"],"sourcesContent":["import type { DataAttribute } from './data-attribute.ts'\nimport { getAttribute } from './get-attribute.ts'\n\n/**\n * Gets the value of a data attribute from an element.\n *\n * @param qualifiedName - The name of the data attribute to get\n * @param element - The element to get the data attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`\n * @returns The data attribute value, or null if the attribute doesn't exist\n *\n * @example\n */\nexport function getDataAttribute(\n\tqualifiedName: DataAttribute,\n\telement?: Element | null | undefined\n) {\n\treturn getAttribute(qualifiedName, element)\n}\n"],"mappings":";;;;;;;;;;;;AAYA,SAAgB,iBACf,eACA,SACC;AACD,QAAOA,mCAAa,eAAe,QAAQ"}
@@ -6,12 +6,12 @@ import { DataAttribute } from "./data-attribute.cjs";
6
6
  * Gets the value of a data attribute from an element.
7
7
  *
8
8
  * @param qualifiedName - The name of the data attribute to get
9
- * @param element - The element to get the data attribute from. Defaults to `document.documentElement`
9
+ * @param element - The element to get the data attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`
10
10
  * @returns The data attribute value, or null if the attribute doesn't exist
11
11
  *
12
12
  * @example
13
13
  */
14
- declare function getDataAttribute(qualifiedName: DataAttribute, element?: Element | undefined): string | null;
14
+ declare function getDataAttribute(qualifiedName: DataAttribute, element?: Element | null | undefined): string | null;
15
15
  //#endregion
16
16
  export { getDataAttribute };
17
17
  //# sourceMappingURL=get-data-attribute.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-data-attribute.d.cts","names":[],"sources":["../../src/attributes/get-data-attribute.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;iBAAgB,gBAAA,gBAAgC,yBAAyB"}
1
+ {"version":3,"file":"get-data-attribute.d.cts","names":[],"sources":["../../src/attributes/get-data-attribute.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;iBAAgB,gBAAA,gBACA,yBACL"}
@@ -6,12 +6,12 @@ import { DataAttribute } from "./data-attribute.mjs";
6
6
  * Gets the value of a data attribute from an element.
7
7
  *
8
8
  * @param qualifiedName - The name of the data attribute to get
9
- * @param element - The element to get the data attribute from. Defaults to `document.documentElement`
9
+ * @param element - The element to get the data attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`
10
10
  * @returns The data attribute value, or null if the attribute doesn't exist
11
11
  *
12
12
  * @example
13
13
  */
14
- declare function getDataAttribute(qualifiedName: DataAttribute, element?: Element | undefined): string | null;
14
+ declare function getDataAttribute(qualifiedName: DataAttribute, element?: Element | null | undefined): string | null;
15
15
  //#endregion
16
16
  export { getDataAttribute };
17
17
  //# sourceMappingURL=get-data-attribute.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-data-attribute.d.mts","names":[],"sources":["../../src/attributes/get-data-attribute.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;iBAAgB,gBAAA,gBAAgC,yBAAyB"}
1
+ {"version":3,"file":"get-data-attribute.d.mts","names":[],"sources":["../../src/attributes/get-data-attribute.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;iBAAgB,gBAAA,gBACA,yBACL"}
@@ -5,7 +5,7 @@ import { getAttribute } from "./get-attribute.mjs";
5
5
  * Gets the value of a data attribute from an element.
6
6
  *
7
7
  * @param qualifiedName - The name of the data attribute to get
8
- * @param element - The element to get the data attribute from. Defaults to `document.documentElement`
8
+ * @param element - The element to get the data attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`
9
9
  * @returns The data attribute value, or null if the attribute doesn't exist
10
10
  *
11
11
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"get-data-attribute.mjs","names":[],"sources":["../../src/attributes/get-data-attribute.ts"],"sourcesContent":["import type { DataAttribute } from './data-attribute.ts'\nimport { getAttribute } from './get-attribute.ts'\n\n/**\n * Gets the value of a data attribute from an element.\n *\n * @param qualifiedName - The name of the data attribute to get\n * @param element - The element to get the data attribute from. Defaults to `document.documentElement`\n * @returns The data attribute value, or null if the attribute doesn't exist\n *\n * @example\n */\nexport function getDataAttribute(qualifiedName: DataAttribute, element?: Element | undefined) {\n\treturn getAttribute(qualifiedName, element)\n}\n"],"mappings":";;;;;;;;;;;;AAYA,SAAgB,iBAAiB,eAA8B,SAA+B;AAC7F,QAAO,aAAa,eAAe,QAAQ"}
1
+ {"version":3,"file":"get-data-attribute.mjs","names":[],"sources":["../../src/attributes/get-data-attribute.ts"],"sourcesContent":["import type { DataAttribute } from './data-attribute.ts'\nimport { getAttribute } from './get-attribute.ts'\n\n/**\n * Gets the value of a data attribute from an element.\n *\n * @param qualifiedName - The name of the data attribute to get\n * @param element - The element to get the data attribute from (accepts null e.g. from refs). Defaults to `document.documentElement`\n * @returns The data attribute value, or null if the attribute doesn't exist\n *\n * @example\n */\nexport function getDataAttribute(\n\tqualifiedName: DataAttribute,\n\telement?: Element | null | undefined\n) {\n\treturn getAttribute(qualifiedName, element)\n}\n"],"mappings":";;;;;;;;;;;;AAYA,SAAgB,iBACf,eACA,SACC;AACD,QAAO,aAAa,eAAe,QAAQ"}
@@ -4,22 +4,25 @@
4
4
  * Observes attributes changes on an element and calls corresponding handlers.
5
5
  *
6
6
  * @param handlers - An object mapping attribute names to handler functions.
7
- * @param element - The element to observe. Defaults to `document.documentElement`.
8
- * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer.
7
+ * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`.
8
+ * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.
9
9
  *
10
10
  * @example
11
11
  * ```ts
12
- * const observer = observeAttributes({
13
- * 'data-theme': (attr, value) => console.log(`Theme changed to: ${value}`),
14
- * 'class': (attr, value) => console.log(`class changed to: ${value}`)
12
+ * const unsubscribe = observeAttributes({
13
+ * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
14
+ * 'class': (value) => console.log(`class changed to: ${value}`)
15
15
  * });
16
16
  *
17
17
  * // Later, to stop observing:
18
- * observer.disconnect();
18
+ * unsubscribe();
19
19
  * ```
20
20
  */
21
21
  function observeAttributes(handlers, element) {
22
- element = element ?? globalThis.document.documentElement;
22
+ /* c8 ignore start */
23
+ if (typeof document === "undefined") return () => {};
24
+ /* c8 ignore end */
25
+ element = element ?? document.documentElement;
23
26
  const observer = new MutationObserver((mutations) => {
24
27
  for (const mutation of mutations) {
25
28
  const attribute = mutation.attributeName;
@@ -32,7 +35,7 @@ function observeAttributes(handlers, element) {
32
35
  attributes: true,
33
36
  attributeFilter: Object.keys(handlers)
34
37
  });
35
- return observer;
38
+ return () => observer.disconnect();
36
39
  }
37
40
 
38
41
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"observe-attribute.cjs","names":[],"sources":["../../src/attributes/observe-attribute.ts"],"sourcesContent":["/**\n * Observes attributes changes on an element and calls corresponding handlers.\n *\n * @param handlers - An object mapping attribute names to handler functions.\n * @param element - The element to observe. Defaults to `document.documentElement`.\n * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer.\n *\n * @example\n * ```ts\n * const observer = observeAttributes({\n * 'data-theme': (attr, value) => console.log(`Theme changed to: ${value}`),\n * 'class': (attr, value) => console.log(`class changed to: ${value}`)\n * });\n *\n * // Later, to stop observing:\n * observer.disconnect();\n * ```\n */\nexport function observeAttributes<T extends string>(\n\thandlers: Record<string, (value: T | null) => void>,\n\telement?: Element | undefined\n) {\n\telement = element ?? globalThis.document.documentElement\n\tconst observer = new MutationObserver((mutations) => {\n\t\tfor (const mutation of mutations) {\n\t\t\tconst attribute = mutation.attributeName\n\t\t\tif (!attribute) continue\n\t\t\tconst value = element.getAttribute(attribute) as T | null\n\t\t\thandlers[attribute]?.(value)\n\t\t}\n\t})\n\tobserver.observe(element, {\n\t\tattributes: true,\n\t\tattributeFilter: Object.keys(handlers)\n\t})\n\treturn observer\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkBA,SAAgB,kBACf,UACA,SACC;AACD,WAAU,WAAW,WAAW,SAAS;CACzC,MAAM,WAAW,IAAI,kBAAkB,cAAc;AACpD,OAAK,MAAM,YAAY,WAAW;GACjC,MAAM,YAAY,SAAS;AAC3B,OAAI,CAAC,UAAW;GAChB,MAAM,QAAQ,QAAQ,aAAa,UAAU;AAC7C,YAAS,aAAa,MAAM;;GAE5B;AACF,UAAS,QAAQ,SAAS;EACzB,YAAY;EACZ,iBAAiB,OAAO,KAAK,SAAS;EACtC,CAAC;AACF,QAAO"}
1
+ {"version":3,"file":"observe-attribute.cjs","names":[],"sources":["../../src/attributes/observe-attribute.ts"],"sourcesContent":["/**\n * Observes attributes changes on an element and calls corresponding handlers.\n *\n * @param handlers - An object mapping attribute names to handler functions.\n * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`.\n * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.\n *\n * @example\n * ```ts\n * const unsubscribe = observeAttributes({\n * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),\n * 'class': (value) => console.log(`class changed to: ${value}`)\n * });\n *\n * // Later, to stop observing:\n * unsubscribe();\n * ```\n */\nexport function observeAttributes<T extends string>(\n\thandlers: Record<string, (value: T | null) => void>,\n\telement?: Element | null | undefined\n): () => void {\n\t/* c8 ignore start */\n\tif (typeof document === 'undefined') {\n\t\treturn () => {}\n\t}\n\t/* c8 ignore end */\n\telement = element ?? document.documentElement\n\tconst observer = new MutationObserver((mutations) => {\n\t\tfor (const mutation of mutations) {\n\t\t\tconst attribute = mutation.attributeName\n\t\t\tif (!attribute) continue\n\t\t\tconst value = element.getAttribute(attribute) as T | null\n\t\t\thandlers[attribute]?.(value)\n\t\t}\n\t})\n\tobserver.observe(element, {\n\t\tattributes: true,\n\t\tattributeFilter: Object.keys(handlers)\n\t})\n\treturn () => observer.disconnect()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkBA,SAAgB,kBACf,UACA,SACa;;AAEb,KAAI,OAAO,aAAa,YACvB,cAAa;;AAGd,WAAU,WAAW,SAAS;CAC9B,MAAM,WAAW,IAAI,kBAAkB,cAAc;AACpD,OAAK,MAAM,YAAY,WAAW;GACjC,MAAM,YAAY,SAAS;AAC3B,OAAI,CAAC,UAAW;GAChB,MAAM,QAAQ,QAAQ,aAAa,UAAU;AAC7C,YAAS,aAAa,MAAM;;GAE5B;AACF,UAAS,QAAQ,SAAS;EACzB,YAAY;EACZ,iBAAiB,OAAO,KAAK,SAAS;EACtC,CAAC;AACF,cAAa,SAAS,YAAY"}
@@ -3,21 +3,21 @@
3
3
  * Observes attributes changes on an element and calls corresponding handlers.
4
4
  *
5
5
  * @param handlers - An object mapping attribute names to handler functions.
6
- * @param element - The element to observe. Defaults to `document.documentElement`.
7
- * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer.
6
+ * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`.
7
+ * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.
8
8
  *
9
9
  * @example
10
10
  * ```ts
11
- * const observer = observeAttributes({
12
- * 'data-theme': (attr, value) => console.log(`Theme changed to: ${value}`),
13
- * 'class': (attr, value) => console.log(`class changed to: ${value}`)
11
+ * const unsubscribe = observeAttributes({
12
+ * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
13
+ * 'class': (value) => console.log(`class changed to: ${value}`)
14
14
  * });
15
15
  *
16
16
  * // Later, to stop observing:
17
- * observer.disconnect();
17
+ * unsubscribe();
18
18
  * ```
19
19
  */
20
- declare function observeAttributes<T extends string>(handlers: Record<string, (value: T | null) => void>, element?: Element | undefined): MutationObserver;
20
+ declare function observeAttributes<T extends string>(handlers: Record<string, (value: T | null) => void>, element?: Element | null | undefined): () => void;
21
21
  //#endregion
22
22
  export { observeAttributes };
23
23
  //# sourceMappingURL=observe-attribute.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observe-attribute.d.cts","names":[],"sources":["../../src/attributes/observe-attribute.ts"],"sourcesContent":[],"mappings":";;AAkBA;;;;;;;;;;;;;;;;;iBAAgB,8CACL,uBAAuB,8BACvB,sBAAmB"}
1
+ {"version":3,"file":"observe-attribute.d.cts","names":[],"sources":["../../src/attributes/observe-attribute.ts"],"sourcesContent":[],"mappings":";;AAkBA;;;;;;;;;;;;;;;;;iBAAgB,8CACL,uBAAuB,8BACvB"}
@@ -3,21 +3,21 @@
3
3
  * Observes attributes changes on an element and calls corresponding handlers.
4
4
  *
5
5
  * @param handlers - An object mapping attribute names to handler functions.
6
- * @param element - The element to observe. Defaults to `document.documentElement`.
7
- * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer.
6
+ * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`.
7
+ * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.
8
8
  *
9
9
  * @example
10
10
  * ```ts
11
- * const observer = observeAttributes({
12
- * 'data-theme': (attr, value) => console.log(`Theme changed to: ${value}`),
13
- * 'class': (attr, value) => console.log(`class changed to: ${value}`)
11
+ * const unsubscribe = observeAttributes({
12
+ * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
13
+ * 'class': (value) => console.log(`class changed to: ${value}`)
14
14
  * });
15
15
  *
16
16
  * // Later, to stop observing:
17
- * observer.disconnect();
17
+ * unsubscribe();
18
18
  * ```
19
19
  */
20
- declare function observeAttributes<T extends string>(handlers: Record<string, (value: T | null) => void>, element?: Element | undefined): MutationObserver;
20
+ declare function observeAttributes<T extends string>(handlers: Record<string, (value: T | null) => void>, element?: Element | null | undefined): () => void;
21
21
  //#endregion
22
22
  export { observeAttributes };
23
23
  //# sourceMappingURL=observe-attribute.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observe-attribute.d.mts","names":[],"sources":["../../src/attributes/observe-attribute.ts"],"sourcesContent":[],"mappings":";;AAkBA;;;;;;;;;;;;;;;;;iBAAgB,8CACL,uBAAuB,8BACvB,sBAAmB"}
1
+ {"version":3,"file":"observe-attribute.d.mts","names":[],"sources":["../../src/attributes/observe-attribute.ts"],"sourcesContent":[],"mappings":";;AAkBA;;;;;;;;;;;;;;;;;iBAAgB,8CACL,uBAAuB,8BACvB"}
@@ -3,22 +3,25 @@
3
3
  * Observes attributes changes on an element and calls corresponding handlers.
4
4
  *
5
5
  * @param handlers - An object mapping attribute names to handler functions.
6
- * @param element - The element to observe. Defaults to `document.documentElement`.
7
- * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer.
6
+ * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`.
7
+ * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.
8
8
  *
9
9
  * @example
10
10
  * ```ts
11
- * const observer = observeAttributes({
12
- * 'data-theme': (attr, value) => console.log(`Theme changed to: ${value}`),
13
- * 'class': (attr, value) => console.log(`class changed to: ${value}`)
11
+ * const unsubscribe = observeAttributes({
12
+ * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
13
+ * 'class': (value) => console.log(`class changed to: ${value}`)
14
14
  * });
15
15
  *
16
16
  * // Later, to stop observing:
17
- * observer.disconnect();
17
+ * unsubscribe();
18
18
  * ```
19
19
  */
20
20
  function observeAttributes(handlers, element) {
21
- element = element ?? globalThis.document.documentElement;
21
+ /* c8 ignore start */
22
+ if (typeof document === "undefined") return () => {};
23
+ /* c8 ignore end */
24
+ element = element ?? document.documentElement;
22
25
  const observer = new MutationObserver((mutations) => {
23
26
  for (const mutation of mutations) {
24
27
  const attribute = mutation.attributeName;
@@ -31,7 +34,7 @@ function observeAttributes(handlers, element) {
31
34
  attributes: true,
32
35
  attributeFilter: Object.keys(handlers)
33
36
  });
34
- return observer;
37
+ return () => observer.disconnect();
35
38
  }
36
39
 
37
40
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"observe-attribute.mjs","names":[],"sources":["../../src/attributes/observe-attribute.ts"],"sourcesContent":["/**\n * Observes attributes changes on an element and calls corresponding handlers.\n *\n * @param handlers - An object mapping attribute names to handler functions.\n * @param element - The element to observe. Defaults to `document.documentElement`.\n * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer.\n *\n * @example\n * ```ts\n * const observer = observeAttributes({\n * 'data-theme': (attr, value) => console.log(`Theme changed to: ${value}`),\n * 'class': (attr, value) => console.log(`class changed to: ${value}`)\n * });\n *\n * // Later, to stop observing:\n * observer.disconnect();\n * ```\n */\nexport function observeAttributes<T extends string>(\n\thandlers: Record<string, (value: T | null) => void>,\n\telement?: Element | undefined\n) {\n\telement = element ?? globalThis.document.documentElement\n\tconst observer = new MutationObserver((mutations) => {\n\t\tfor (const mutation of mutations) {\n\t\t\tconst attribute = mutation.attributeName\n\t\t\tif (!attribute) continue\n\t\t\tconst value = element.getAttribute(attribute) as T | null\n\t\t\thandlers[attribute]?.(value)\n\t\t}\n\t})\n\tobserver.observe(element, {\n\t\tattributes: true,\n\t\tattributeFilter: Object.keys(handlers)\n\t})\n\treturn observer\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,SAAgB,kBACf,UACA,SACC;AACD,WAAU,WAAW,WAAW,SAAS;CACzC,MAAM,WAAW,IAAI,kBAAkB,cAAc;AACpD,OAAK,MAAM,YAAY,WAAW;GACjC,MAAM,YAAY,SAAS;AAC3B,OAAI,CAAC,UAAW;GAChB,MAAM,QAAQ,QAAQ,aAAa,UAAU;AAC7C,YAAS,aAAa,MAAM;;GAE5B;AACF,UAAS,QAAQ,SAAS;EACzB,YAAY;EACZ,iBAAiB,OAAO,KAAK,SAAS;EACtC,CAAC;AACF,QAAO"}
1
+ {"version":3,"file":"observe-attribute.mjs","names":[],"sources":["../../src/attributes/observe-attribute.ts"],"sourcesContent":["/**\n * Observes attributes changes on an element and calls corresponding handlers.\n *\n * @param handlers - An object mapping attribute names to handler functions.\n * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`.\n * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.\n *\n * @example\n * ```ts\n * const unsubscribe = observeAttributes({\n * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),\n * 'class': (value) => console.log(`class changed to: ${value}`)\n * });\n *\n * // Later, to stop observing:\n * unsubscribe();\n * ```\n */\nexport function observeAttributes<T extends string>(\n\thandlers: Record<string, (value: T | null) => void>,\n\telement?: Element | null | undefined\n): () => void {\n\t/* c8 ignore start */\n\tif (typeof document === 'undefined') {\n\t\treturn () => {}\n\t}\n\t/* c8 ignore end */\n\telement = element ?? document.documentElement\n\tconst observer = new MutationObserver((mutations) => {\n\t\tfor (const mutation of mutations) {\n\t\t\tconst attribute = mutation.attributeName\n\t\t\tif (!attribute) continue\n\t\t\tconst value = element.getAttribute(attribute) as T | null\n\t\t\thandlers[attribute]?.(value)\n\t\t}\n\t})\n\tobserver.observe(element, {\n\t\tattributes: true,\n\t\tattributeFilter: Object.keys(handlers)\n\t})\n\treturn () => observer.disconnect()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,SAAgB,kBACf,UACA,SACa;;AAEb,KAAI,OAAO,aAAa,YACvB,cAAa;;AAGd,WAAU,WAAW,SAAS;CAC9B,MAAM,WAAW,IAAI,kBAAkB,cAAc;AACpD,OAAK,MAAM,YAAY,WAAW;GACjC,MAAM,YAAY,SAAS;AAC3B,OAAI,CAAC,UAAW;GAChB,MAAM,QAAQ,QAAQ,aAAa,UAAU;AAC7C,YAAS,aAAa,MAAM;;GAE5B;AACF,UAAS,QAAQ,SAAS;EACzB,YAAY;EACZ,iBAAiB,OAAO,KAAK,SAAS;EACtC,CAAC;AACF,cAAa,SAAS,YAAY"}
@@ -4,22 +4,19 @@ const require_observe_attribute = require('./observe-attribute.cjs');
4
4
  /**
5
5
  * Observes changes to `data-*` attributes on an element and calls corresponding handlers.
6
6
  *
7
- * @param options - Configuration options
8
- * @param options.handlers - An object mapping `data-*` attribute names to handler functions.
9
- * @param options.element - The element to observe. Defaults to `document.documentElement`
10
- * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer
7
+ * @param handlers - An object mapping `data-*` attribute names to handler functions.
8
+ * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`
9
+ * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.
11
10
  *
12
11
  * @example
13
12
  * ```ts
14
- * const observer = observeDataAttributes({
15
- * handlers: {
16
- * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
17
- * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)
18
- * }
13
+ * const unsubscribe = observeDataAttributes({
14
+ * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
15
+ * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)
19
16
  * });
20
17
  *
21
18
  * // Later, to stop observing:
22
- * observer.disconnect();
19
+ * unsubscribe();
23
20
  * ```
24
21
  */
25
22
  function observeDataAttributes(handlers, element) {
@@ -1 +1 @@
1
- {"version":3,"file":"observe-data-attribute.cjs","names":["observeAttributes"],"sources":["../../src/attributes/observe-data-attribute.ts"],"sourcesContent":["import { observeAttributes } from './observe-attribute.ts'\n\n/**\n * Observes changes to `data-*` attributes on an element and calls corresponding handlers.\n *\n * @param options - Configuration options\n * @param options.handlers - An object mapping `data-*` attribute names to handler functions.\n * @param options.element - The element to observe. Defaults to `document.documentElement`\n * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer\n *\n * @example\n * ```ts\n * const observer = observeDataAttributes({\n * handlers: {\n * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),\n * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)\n * }\n * });\n *\n * // Later, to stop observing:\n * observer.disconnect();\n * ```\n */\nexport function observeDataAttributes<T extends string, K extends `data-${string}`>(\n\thandlers: Record<K, (value: T | null) => void>,\n\telement?: Element | undefined\n) {\n\treturn observeAttributes(handlers, element)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAuBA,SAAgB,sBACf,UACA,SACC;AACD,QAAOA,4CAAkB,UAAU,QAAQ"}
1
+ {"version":3,"file":"observe-data-attribute.cjs","names":["observeAttributes"],"sources":["../../src/attributes/observe-data-attribute.ts"],"sourcesContent":["import { observeAttributes } from './observe-attribute.ts'\n\n/**\n * Observes changes to `data-*` attributes on an element and calls corresponding handlers.\n *\n * @param handlers - An object mapping `data-*` attribute names to handler functions.\n * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`\n * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.\n *\n * @example\n * ```ts\n * const unsubscribe = observeDataAttributes({\n * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),\n * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)\n * });\n *\n * // Later, to stop observing:\n * unsubscribe();\n * ```\n */\nexport function observeDataAttributes<T extends string, K extends `data-${string}`>(\n\thandlers: Record<K, (value: T | null) => void>,\n\telement?: Element | null | undefined\n) {\n\treturn observeAttributes(handlers, element)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,sBACf,UACA,SACC;AACD,QAAOA,4CAAkB,UAAU,QAAQ"}
@@ -2,25 +2,22 @@
2
2
  /**
3
3
  * Observes changes to `data-*` attributes on an element and calls corresponding handlers.
4
4
  *
5
- * @param options - Configuration options
6
- * @param options.handlers - An object mapping `data-*` attribute names to handler functions.
7
- * @param options.element - The element to observe. Defaults to `document.documentElement`
8
- * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer
5
+ * @param handlers - An object mapping `data-*` attribute names to handler functions.
6
+ * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`
7
+ * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.
9
8
  *
10
9
  * @example
11
10
  * ```ts
12
- * const observer = observeDataAttributes({
13
- * handlers: {
14
- * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
15
- * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)
16
- * }
11
+ * const unsubscribe = observeDataAttributes({
12
+ * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
13
+ * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)
17
14
  * });
18
15
  *
19
16
  * // Later, to stop observing:
20
- * observer.disconnect();
17
+ * unsubscribe();
21
18
  * ```
22
19
  */
23
- declare function observeDataAttributes<T extends string, K extends `data-${string}`>(handlers: Record<K, (value: T | null) => void>, element?: Element | undefined): MutationObserver;
20
+ declare function observeDataAttributes<T extends string, K extends `data-${string}`>(handlers: Record<K, (value: T | null) => void>, element?: Element | null | undefined): () => void;
24
21
  //#endregion
25
22
  export { observeDataAttributes };
26
23
  //# sourceMappingURL=observe-data-attribute.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observe-data-attribute.d.cts","names":[],"sources":["../../src/attributes/observe-data-attribute.ts"],"sourcesContent":[],"mappings":";;AAuBA;;;;;;;;;;;;;;;;;;;;iBAAgB,8EACL,OAAO,WAAW,8BAClB,sBAAmB"}
1
+ {"version":3,"file":"observe-data-attribute.d.cts","names":[],"sources":["../../src/attributes/observe-data-attribute.ts"],"sourcesContent":[],"mappings":";;AAoBA;;;;;;;;;;;;;;;;;iBAAgB,8EACL,OAAO,WAAW,8BAClB"}
@@ -2,25 +2,22 @@
2
2
  /**
3
3
  * Observes changes to `data-*` attributes on an element and calls corresponding handlers.
4
4
  *
5
- * @param options - Configuration options
6
- * @param options.handlers - An object mapping `data-*` attribute names to handler functions.
7
- * @param options.element - The element to observe. Defaults to `document.documentElement`
8
- * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer
5
+ * @param handlers - An object mapping `data-*` attribute names to handler functions.
6
+ * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`
7
+ * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.
9
8
  *
10
9
  * @example
11
10
  * ```ts
12
- * const observer = observeDataAttributes({
13
- * handlers: {
14
- * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
15
- * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)
16
- * }
11
+ * const unsubscribe = observeDataAttributes({
12
+ * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
13
+ * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)
17
14
  * });
18
15
  *
19
16
  * // Later, to stop observing:
20
- * observer.disconnect();
17
+ * unsubscribe();
21
18
  * ```
22
19
  */
23
- declare function observeDataAttributes<T extends string, K extends `data-${string}`>(handlers: Record<K, (value: T | null) => void>, element?: Element | undefined): MutationObserver;
20
+ declare function observeDataAttributes<T extends string, K extends `data-${string}`>(handlers: Record<K, (value: T | null) => void>, element?: Element | null | undefined): () => void;
24
21
  //#endregion
25
22
  export { observeDataAttributes };
26
23
  //# sourceMappingURL=observe-data-attribute.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observe-data-attribute.d.mts","names":[],"sources":["../../src/attributes/observe-data-attribute.ts"],"sourcesContent":[],"mappings":";;AAuBA;;;;;;;;;;;;;;;;;;;;iBAAgB,8EACL,OAAO,WAAW,8BAClB,sBAAmB"}
1
+ {"version":3,"file":"observe-data-attribute.d.mts","names":[],"sources":["../../src/attributes/observe-data-attribute.ts"],"sourcesContent":[],"mappings":";;AAoBA;;;;;;;;;;;;;;;;;iBAAgB,8EACL,OAAO,WAAW,8BAClB"}
@@ -4,22 +4,19 @@ import { observeAttributes } from "./observe-attribute.mjs";
4
4
  /**
5
5
  * Observes changes to `data-*` attributes on an element and calls corresponding handlers.
6
6
  *
7
- * @param options - Configuration options
8
- * @param options.handlers - An object mapping `data-*` attribute names to handler functions.
9
- * @param options.element - The element to observe. Defaults to `document.documentElement`
10
- * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer
7
+ * @param handlers - An object mapping `data-*` attribute names to handler functions.
8
+ * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`
9
+ * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.
11
10
  *
12
11
  * @example
13
12
  * ```ts
14
- * const observer = observeDataAttributes({
15
- * handlers: {
16
- * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
17
- * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)
18
- * }
13
+ * const unsubscribe = observeDataAttributes({
14
+ * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),
15
+ * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)
19
16
  * });
20
17
  *
21
18
  * // Later, to stop observing:
22
- * observer.disconnect();
19
+ * unsubscribe();
23
20
  * ```
24
21
  */
25
22
  function observeDataAttributes(handlers, element) {
@@ -1 +1 @@
1
- {"version":3,"file":"observe-data-attribute.mjs","names":[],"sources":["../../src/attributes/observe-data-attribute.ts"],"sourcesContent":["import { observeAttributes } from './observe-attribute.ts'\n\n/**\n * Observes changes to `data-*` attributes on an element and calls corresponding handlers.\n *\n * @param options - Configuration options\n * @param options.handlers - An object mapping `data-*` attribute names to handler functions.\n * @param options.element - The element to observe. Defaults to `document.documentElement`\n * @returns {MutationObserver} The observer instance, which can be used to disconnect the observer\n *\n * @example\n * ```ts\n * const observer = observeDataAttributes({\n * handlers: {\n * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),\n * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)\n * }\n * });\n *\n * // Later, to stop observing:\n * observer.disconnect();\n * ```\n */\nexport function observeDataAttributes<T extends string, K extends `data-${string}`>(\n\thandlers: Record<K, (value: T | null) => void>,\n\telement?: Element | undefined\n) {\n\treturn observeAttributes(handlers, element)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAuBA,SAAgB,sBACf,UACA,SACC;AACD,QAAO,kBAAkB,UAAU,QAAQ"}
1
+ {"version":3,"file":"observe-data-attribute.mjs","names":[],"sources":["../../src/attributes/observe-data-attribute.ts"],"sourcesContent":["import { observeAttributes } from './observe-attribute.ts'\n\n/**\n * Observes changes to `data-*` attributes on an element and calls corresponding handlers.\n *\n * @param handlers - An object mapping `data-*` attribute names to handler functions.\n * @param element - The element to observe (accepts null e.g. from refs). Defaults to `document.documentElement`\n * @returns An unsubscribe function to stop observing. Returns a no-op function in SSR environments.\n *\n * @example\n * ```ts\n * const unsubscribe = observeDataAttributes({\n * 'data-theme': (value) => console.log(`Theme changed to: ${value}`),\n * 'data-mode': (value) => console.log(`Mode changed to: ${value}`)\n * });\n *\n * // Later, to stop observing:\n * unsubscribe();\n * ```\n */\nexport function observeDataAttributes<T extends string, K extends `data-${string}`>(\n\thandlers: Record<K, (value: T | null) => void>,\n\telement?: Element | null | undefined\n) {\n\treturn observeAttributes(handlers, element)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,sBACf,UACA,SACC;AACD,QAAO,kBAAkB,UAAU,QAAQ"}
@@ -0,0 +1,11 @@
1
+ //#region src/color-scheme/color-scheme.types.d.ts
2
+ /**
3
+ * The color scheme of the system.
4
+ *
5
+ * Per {@link https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme Media Queries Level 5 § prefers-color-scheme},
6
+ * these are the only valid values exposed by the `prefers-color-scheme` media feature.
7
+ */
8
+ type ColorScheme = 'light' | 'dark';
9
+ //#endregion
10
+ export { ColorScheme };
11
+ //# sourceMappingURL=color-scheme.types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-scheme.types.d.cts","names":[],"sources":["../../src/color-scheme/color-scheme.types.ts"],"sourcesContent":[],"mappings":";;AAMA;;;;;KAAY,WAAA"}
@@ -0,0 +1,11 @@
1
+ //#region src/color-scheme/color-scheme.types.d.ts
2
+ /**
3
+ * The color scheme of the system.
4
+ *
5
+ * Per {@link https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme Media Queries Level 5 § prefers-color-scheme},
6
+ * these are the only valid values exposed by the `prefers-color-scheme` media feature.
7
+ */
8
+ type ColorScheme = 'light' | 'dark';
9
+ //#endregion
10
+ export { ColorScheme };
11
+ //# sourceMappingURL=color-scheme.types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-scheme.types.d.mts","names":[],"sources":["../../src/color-scheme/color-scheme.types.ts"],"sourcesContent":[],"mappings":";;AAMA;;;;;KAAY,WAAA"}
@@ -4,7 +4,9 @@
4
4
  * Gets the current preferred color scheme.
5
5
  * It can only be 'light' or 'dark'.
6
6
  *
7
- * Even if the browser preference is 'auto'/'device', it will return 'light' or 'dark'.
7
+ * Per {@link https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme Media Queries Level 5},
8
+ * the `prefers-color-scheme` media feature has only two valid values. Even if the browser
9
+ * preference is 'auto'/'device', it will return 'light' or 'dark'.
8
10
  *
9
11
  * When `matchMedia` is unavailable (e.g. SSR), returns `defaultColorScheme`.
10
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"get-prefers-color-scheme.cjs","names":[],"sources":["../../src/color-scheme/get-prefers-color-scheme.ts"],"sourcesContent":["/**\n * Gets the current preferred color scheme.\n * It can only be 'light' or 'dark'.\n *\n * Even if the browser preference is 'auto'/'device', it will return 'light' or 'dark'.\n *\n * When `matchMedia` is unavailable (e.g. SSR), returns `defaultColorScheme`.\n *\n * @param defaultColorScheme - Fallback when `matchMedia` is unavailable (default: `'light'`)\n * @returns 'light' or 'dark'\n */\nexport function getPrefersColorScheme(\n\tdefaultColorScheme: 'light' | 'dark' = 'light'\n): 'light' | 'dark' {\n\tif (typeof matchMedia === 'undefined') return defaultColorScheme\n\treturn matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'\n}\n"],"mappings":";;;;;;;;;;;;;AAWA,SAAgB,sBACf,qBAAuC,SACpB;AACnB,KAAI,OAAO,eAAe,YAAa,QAAO;AAC9C,QAAO,WAAW,gCAAgC,CAAC,UAAU,UAAU"}
1
+ {"version":3,"file":"get-prefers-color-scheme.cjs","names":[],"sources":["../../src/color-scheme/get-prefers-color-scheme.ts"],"sourcesContent":["import type { ColorScheme } from './color-scheme.types.ts'\n\n/**\n * Gets the current preferred color scheme.\n * It can only be 'light' or 'dark'.\n *\n * Per {@link https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme Media Queries Level 5},\n * the `prefers-color-scheme` media feature has only two valid values. Even if the browser\n * preference is 'auto'/'device', it will return 'light' or 'dark'.\n *\n * When `matchMedia` is unavailable (e.g. SSR), returns `defaultColorScheme`.\n *\n * @param defaultColorScheme - Fallback when `matchMedia` is unavailable (default: `'light'`)\n * @returns 'light' or 'dark'\n */\nexport function getPrefersColorScheme(defaultColorScheme: ColorScheme = 'light'): ColorScheme {\n\tif (typeof matchMedia === 'undefined') return defaultColorScheme\n\treturn matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,SAAgB,sBAAsB,qBAAkC,SAAsB;AAC7F,KAAI,OAAO,eAAe,YAAa,QAAO;AAC9C,QAAO,WAAW,gCAAgC,CAAC,UAAU,UAAU"}
@@ -1,16 +1,21 @@
1
+ import { ColorScheme } from "./color-scheme.types.cjs";
2
+
1
3
  //#region src/color-scheme/get-prefers-color-scheme.d.ts
4
+
2
5
  /**
3
6
  * Gets the current preferred color scheme.
4
7
  * It can only be 'light' or 'dark'.
5
8
  *
6
- * Even if the browser preference is 'auto'/'device', it will return 'light' or 'dark'.
9
+ * Per {@link https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme Media Queries Level 5},
10
+ * the `prefers-color-scheme` media feature has only two valid values. Even if the browser
11
+ * preference is 'auto'/'device', it will return 'light' or 'dark'.
7
12
  *
8
13
  * When `matchMedia` is unavailable (e.g. SSR), returns `defaultColorScheme`.
9
14
  *
10
15
  * @param defaultColorScheme - Fallback when `matchMedia` is unavailable (default: `'light'`)
11
16
  * @returns 'light' or 'dark'
12
17
  */
13
- declare function getPrefersColorScheme(defaultColorScheme?: 'light' | 'dark'): 'light' | 'dark';
18
+ declare function getPrefersColorScheme(defaultColorScheme?: ColorScheme): ColorScheme;
14
19
  //#endregion
15
20
  export { getPrefersColorScheme };
16
21
  //# sourceMappingURL=get-prefers-color-scheme.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-prefers-color-scheme.d.cts","names":[],"sources":["../../src/color-scheme/get-prefers-color-scheme.ts"],"sourcesContent":[],"mappings":";;AAWA;;;;;;;;;;iBAAgB,qBAAA"}
1
+ {"version":3,"file":"get-prefers-color-scheme.d.cts","names":[],"sources":["../../src/color-scheme/get-prefers-color-scheme.ts"],"sourcesContent":[],"mappings":";;;;;;AAeA;;;;;;;;;;;iBAAgB,qBAAA,sBAA0C,cAAwB"}