@just-web/toolkits 1.0.0 → 2.1.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 (421) 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 +1 -1
  18. package/dist/attributes/observe-attribute.cjs.map +1 -1
  19. package/dist/attributes/observe-attribute.d.cts +2 -2
  20. package/dist/attributes/observe-attribute.d.cts.map +1 -1
  21. package/dist/attributes/observe-attribute.d.mts +2 -2
  22. package/dist/attributes/observe-attribute.d.mts.map +1 -1
  23. package/dist/attributes/observe-attribute.mjs +1 -1
  24. package/dist/attributes/observe-attribute.mjs.map +1 -1
  25. package/dist/attributes/observe-data-attribute.cjs +1 -1
  26. package/dist/attributes/observe-data-attribute.cjs.map +1 -1
  27. package/dist/attributes/observe-data-attribute.d.cts +2 -2
  28. package/dist/attributes/observe-data-attribute.d.cts.map +1 -1
  29. package/dist/attributes/observe-data-attribute.d.mts +2 -2
  30. package/dist/attributes/observe-data-attribute.d.mts.map +1 -1
  31. package/dist/attributes/observe-data-attribute.mjs +1 -1
  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 +7 -7
  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 +7 -7
  58. package/dist/react/hooks/use-attribute.mjs.map +1 -1
  59. package/dist/react/hooks/use-theme-by-class-name.cjs +2 -6
  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.cts.map +1 -1
  63. package/dist/react/hooks/use-theme-by-class-name.d.mts +2 -2
  64. package/dist/react/hooks/use-theme-by-class-name.d.mts.map +1 -1
  65. package/dist/react/hooks/use-theme-by-class-name.mjs +2 -6
  66. package/dist/react/hooks/use-theme-by-class-name.mjs.map +1 -1
  67. package/dist/react/hooks/use-theme-by-data-attribute.cjs +2 -7
  68. package/dist/react/hooks/use-theme-by-data-attribute.cjs.map +1 -1
  69. package/dist/react/hooks/use-theme-by-data-attribute.d.cts +2 -2
  70. package/dist/react/hooks/use-theme-by-data-attribute.d.cts.map +1 -1
  71. package/dist/react/hooks/use-theme-by-data-attribute.d.mts +2 -2
  72. package/dist/react/hooks/use-theme-by-data-attribute.d.mts.map +1 -1
  73. package/dist/react/hooks/use-theme-by-data-attribute.mjs +2 -7
  74. package/dist/react/hooks/use-theme-by-data-attribute.mjs.map +1 -1
  75. package/dist/react/hooks/use-theme-by-local-storage.cjs +1 -5
  76. package/dist/react/hooks/use-theme-by-local-storage.cjs.map +1 -1
  77. package/dist/react/hooks/use-theme-by-local-storage.d.cts.map +1 -1
  78. package/dist/react/hooks/use-theme-by-local-storage.d.mts.map +1 -1
  79. package/dist/react/hooks/use-theme-by-local-storage.mjs +1 -5
  80. package/dist/react/hooks/use-theme-by-local-storage.mjs.map +1 -1
  81. package/dist/react/theme/create-theme-hook.cjs.map +1 -1
  82. package/dist/react/theme/create-theme-hook.mjs.map +1 -1
  83. package/dist/theme/_utils/match-attribute-value-to-theme.cjs +29 -0
  84. package/dist/theme/_utils/match-attribute-value-to-theme.cjs.map +1 -0
  85. package/dist/theme/_utils/match-attribute-value-to-theme.mjs +28 -0
  86. package/dist/theme/_utils/match-attribute-value-to-theme.mjs.map +1 -0
  87. package/dist/theme/_utils/parse-stored-theme.cjs +61 -7
  88. package/dist/theme/_utils/parse-stored-theme.cjs.map +1 -1
  89. package/dist/theme/_utils/parse-stored-theme.mjs +61 -7
  90. package/dist/theme/_utils/parse-stored-theme.mjs.map +1 -1
  91. package/dist/theme/_utils/resolve-theme-map-value.cjs +19 -0
  92. package/dist/theme/_utils/resolve-theme-map-value.cjs.map +1 -0
  93. package/dist/theme/_utils/resolve-theme-map-value.mjs +17 -0
  94. package/dist/theme/_utils/resolve-theme-map-value.mjs.map +1 -0
  95. package/dist/theme/_utils/set-theme-to-stores.cjs +1 -1
  96. package/dist/theme/_utils/set-theme-to-stores.cjs.map +1 -1
  97. package/dist/theme/_utils/set-theme-to-stores.mjs +1 -1
  98. package/dist/theme/_utils/set-theme-to-stores.mjs.map +1 -1
  99. package/dist/theme/class-name/parse-class-name.cjs +32 -0
  100. package/dist/theme/class-name/parse-class-name.cjs.map +1 -0
  101. package/dist/theme/class-name/parse-class-name.d.cts +20 -0
  102. package/dist/theme/class-name/parse-class-name.d.cts.map +1 -0
  103. package/dist/theme/class-name/parse-class-name.d.mts +20 -0
  104. package/dist/theme/class-name/parse-class-name.d.mts.map +1 -0
  105. package/dist/theme/class-name/parse-class-name.mjs +31 -0
  106. package/dist/theme/class-name/parse-class-name.mjs.map +1 -0
  107. package/dist/theme/class-name/read-class-name.cjs +20 -0
  108. package/dist/theme/class-name/read-class-name.cjs.map +1 -0
  109. package/dist/theme/class-name/read-class-name.d.cts +20 -0
  110. package/dist/theme/class-name/read-class-name.d.cts.map +1 -0
  111. package/dist/theme/class-name/read-class-name.d.mts +20 -0
  112. package/dist/theme/class-name/read-class-name.d.mts.map +1 -0
  113. package/dist/theme/class-name/read-class-name.mjs +20 -0
  114. package/dist/theme/class-name/read-class-name.mjs.map +1 -0
  115. package/dist/theme/class-name/stringify-class-name.cjs +31 -0
  116. package/dist/theme/class-name/stringify-class-name.cjs.map +1 -0
  117. package/dist/theme/class-name/stringify-class-name.d.cts +21 -0
  118. package/dist/theme/class-name/stringify-class-name.d.cts.map +1 -0
  119. package/dist/theme/class-name/stringify-class-name.d.mts +21 -0
  120. package/dist/theme/class-name/stringify-class-name.d.mts.map +1 -0
  121. package/dist/theme/class-name/stringify-class-name.mjs +31 -0
  122. package/dist/theme/class-name/stringify-class-name.mjs.map +1 -0
  123. package/dist/theme/class-name/subscribe-class-name.cjs +31 -0
  124. package/dist/theme/class-name/subscribe-class-name.cjs.map +1 -0
  125. package/dist/theme/class-name/subscribe-class-name.d.cts +21 -0
  126. package/dist/theme/class-name/subscribe-class-name.d.cts.map +1 -0
  127. package/dist/theme/class-name/subscribe-class-name.d.mts +21 -0
  128. package/dist/theme/class-name/subscribe-class-name.d.mts.map +1 -0
  129. package/dist/theme/class-name/subscribe-class-name.mjs +31 -0
  130. package/dist/theme/class-name/subscribe-class-name.mjs.map +1 -0
  131. package/dist/theme/class-name/write-class-name.cjs +20 -0
  132. package/dist/theme/class-name/write-class-name.cjs.map +1 -0
  133. package/dist/theme/class-name/write-class-name.d.cts +20 -0
  134. package/dist/theme/class-name/write-class-name.d.cts.map +1 -0
  135. package/dist/theme/class-name/write-class-name.d.mts +20 -0
  136. package/dist/theme/class-name/write-class-name.d.mts.map +1 -0
  137. package/dist/theme/class-name/write-class-name.mjs +20 -0
  138. package/dist/theme/class-name/write-class-name.mjs.map +1 -0
  139. package/dist/theme/compose-theme-stores.cjs.map +1 -1
  140. package/dist/theme/compose-theme-stores.mjs.map +1 -1
  141. package/dist/theme/cookie/_cookie-utils.cjs +37 -0
  142. package/dist/theme/cookie/_cookie-utils.cjs.map +1 -0
  143. package/dist/theme/cookie/_cookie-utils.mjs +33 -0
  144. package/dist/theme/cookie/_cookie-utils.mjs.map +1 -0
  145. package/dist/theme/cookie/read-cookie-theme.cjs +22 -0
  146. package/dist/theme/cookie/read-cookie-theme.cjs.map +1 -0
  147. package/dist/theme/cookie/read-cookie-theme.d.cts +22 -0
  148. package/dist/theme/cookie/read-cookie-theme.d.cts.map +1 -0
  149. package/dist/theme/cookie/read-cookie-theme.d.mts +22 -0
  150. package/dist/theme/cookie/read-cookie-theme.d.mts.map +1 -0
  151. package/dist/theme/cookie/read-cookie-theme.mjs +22 -0
  152. package/dist/theme/cookie/read-cookie-theme.mjs.map +1 -0
  153. package/dist/theme/cookie/write-cookie-theme.cjs +29 -0
  154. package/dist/theme/cookie/write-cookie-theme.cjs.map +1 -0
  155. package/dist/theme/cookie/write-cookie-theme.d.cts +24 -0
  156. package/dist/theme/cookie/write-cookie-theme.d.cts.map +1 -0
  157. package/dist/theme/cookie/write-cookie-theme.d.mts +24 -0
  158. package/dist/theme/cookie/write-cookie-theme.d.mts.map +1 -0
  159. package/dist/theme/cookie/write-cookie-theme.mjs +29 -0
  160. package/dist/theme/cookie/write-cookie-theme.mjs.map +1 -0
  161. package/dist/theme/data-attribute/_constant.cjs +7 -0
  162. package/dist/theme/data-attribute/_constant.cjs.map +1 -0
  163. package/dist/theme/data-attribute/_constant.mjs +6 -0
  164. package/dist/theme/data-attribute/_constant.mjs.map +1 -0
  165. package/dist/theme/data-attribute/parse-data-attribute.cjs +24 -0
  166. package/dist/theme/data-attribute/parse-data-attribute.cjs.map +1 -0
  167. package/dist/theme/data-attribute/parse-data-attribute.d.cts +21 -0
  168. package/dist/theme/data-attribute/parse-data-attribute.d.cts.map +1 -0
  169. package/dist/theme/data-attribute/parse-data-attribute.d.mts +21 -0
  170. package/dist/theme/data-attribute/parse-data-attribute.d.mts.map +1 -0
  171. package/dist/theme/data-attribute/parse-data-attribute.mjs +24 -0
  172. package/dist/theme/data-attribute/parse-data-attribute.mjs.map +1 -0
  173. package/dist/theme/data-attribute/read-data-attribute.cjs +23 -0
  174. package/dist/theme/data-attribute/read-data-attribute.cjs.map +1 -0
  175. package/dist/theme/data-attribute/read-data-attribute.d.cts +21 -0
  176. package/dist/theme/data-attribute/read-data-attribute.d.cts.map +1 -0
  177. package/dist/theme/data-attribute/read-data-attribute.d.mts +21 -0
  178. package/dist/theme/data-attribute/read-data-attribute.d.mts.map +1 -0
  179. package/dist/theme/data-attribute/read-data-attribute.mjs +23 -0
  180. package/dist/theme/data-attribute/read-data-attribute.mjs.map +1 -0
  181. package/dist/theme/data-attribute/stringify-data-attribute.cjs +33 -0
  182. package/dist/theme/data-attribute/stringify-data-attribute.cjs.map +1 -0
  183. package/dist/theme/data-attribute/stringify-data-attribute.d.cts +23 -0
  184. package/dist/theme/data-attribute/stringify-data-attribute.d.cts.map +1 -0
  185. package/dist/theme/data-attribute/stringify-data-attribute.d.mts +23 -0
  186. package/dist/theme/data-attribute/stringify-data-attribute.d.mts.map +1 -0
  187. package/dist/theme/data-attribute/stringify-data-attribute.mjs +33 -0
  188. package/dist/theme/data-attribute/stringify-data-attribute.mjs.map +1 -0
  189. package/dist/theme/data-attribute/subscribe-data-attribute.cjs +28 -0
  190. package/dist/theme/data-attribute/subscribe-data-attribute.cjs.map +1 -0
  191. package/dist/theme/data-attribute/subscribe-data-attribute.d.cts +22 -0
  192. package/dist/theme/data-attribute/subscribe-data-attribute.d.cts.map +1 -0
  193. package/dist/theme/data-attribute/subscribe-data-attribute.d.mts +22 -0
  194. package/dist/theme/data-attribute/subscribe-data-attribute.d.mts.map +1 -0
  195. package/dist/theme/data-attribute/subscribe-data-attribute.mjs +28 -0
  196. package/dist/theme/data-attribute/subscribe-data-attribute.mjs.map +1 -0
  197. package/dist/theme/data-attribute/write-data-attribute.cjs +30 -0
  198. package/dist/theme/data-attribute/write-data-attribute.cjs.map +1 -0
  199. package/dist/theme/data-attribute/write-data-attribute.d.cts +21 -0
  200. package/dist/theme/data-attribute/write-data-attribute.d.cts.map +1 -0
  201. package/dist/theme/data-attribute/write-data-attribute.d.mts +21 -0
  202. package/dist/theme/data-attribute/write-data-attribute.d.mts.map +1 -0
  203. package/dist/theme/data-attribute/write-data-attribute.mjs +30 -0
  204. package/dist/theme/data-attribute/write-data-attribute.mjs.map +1 -0
  205. package/dist/theme/local-storage/read-local-storage.cjs +22 -0
  206. package/dist/theme/local-storage/read-local-storage.cjs.map +1 -0
  207. package/dist/theme/local-storage/read-local-storage.d.cts +19 -0
  208. package/dist/theme/local-storage/read-local-storage.d.cts.map +1 -0
  209. package/dist/theme/local-storage/read-local-storage.d.mts +19 -0
  210. package/dist/theme/local-storage/read-local-storage.d.mts.map +1 -0
  211. package/dist/theme/local-storage/read-local-storage.mjs +22 -0
  212. package/dist/theme/local-storage/read-local-storage.mjs.map +1 -0
  213. package/dist/theme/local-storage/write-local-storage.cjs +26 -0
  214. package/dist/theme/local-storage/write-local-storage.cjs.map +1 -0
  215. package/dist/theme/local-storage/write-local-storage.d.cts +23 -0
  216. package/dist/theme/local-storage/write-local-storage.d.cts.map +1 -0
  217. package/dist/theme/local-storage/write-local-storage.d.mts +23 -0
  218. package/dist/theme/local-storage/write-local-storage.d.mts.map +1 -0
  219. package/dist/theme/local-storage/write-local-storage.mjs +26 -0
  220. package/dist/theme/local-storage/write-local-storage.mjs.map +1 -0
  221. package/dist/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.cjs +20 -0
  222. package/dist/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.cjs.map +1 -0
  223. package/dist/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.d.cts +23 -0
  224. package/dist/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.d.cts.map +1 -0
  225. package/dist/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.d.mts +23 -0
  226. package/dist/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.d.mts.map +1 -0
  227. package/dist/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.mjs +20 -0
  228. package/dist/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.mjs.map +1 -0
  229. package/dist/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.cjs +20 -0
  230. package/dist/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.cjs.map +1 -0
  231. package/dist/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.d.cts +20 -0
  232. package/dist/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.d.cts.map +1 -0
  233. package/dist/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.d.mts +20 -0
  234. package/dist/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.d.mts.map +1 -0
  235. package/dist/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.mjs +20 -0
  236. package/dist/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.mjs.map +1 -0
  237. package/dist/theme/session-storage/read-session-storage.cjs +22 -0
  238. package/dist/theme/session-storage/read-session-storage.cjs.map +1 -0
  239. package/dist/theme/session-storage/read-session-storage.d.cts +19 -0
  240. package/dist/theme/session-storage/read-session-storage.d.cts.map +1 -0
  241. package/dist/theme/session-storage/read-session-storage.d.mts +19 -0
  242. package/dist/theme/session-storage/read-session-storage.d.mts.map +1 -0
  243. package/dist/theme/session-storage/read-session-storage.mjs +22 -0
  244. package/dist/theme/session-storage/read-session-storage.mjs.map +1 -0
  245. package/dist/theme/session-storage/write-session-storage.cjs +26 -0
  246. package/dist/theme/session-storage/write-session-storage.cjs.map +1 -0
  247. package/dist/theme/session-storage/write-session-storage.d.cts +23 -0
  248. package/dist/theme/session-storage/write-session-storage.d.cts.map +1 -0
  249. package/dist/theme/session-storage/write-session-storage.d.mts +23 -0
  250. package/dist/theme/session-storage/write-session-storage.d.mts.map +1 -0
  251. package/dist/theme/session-storage/write-session-storage.mjs +26 -0
  252. package/dist/theme/session-storage/write-session-storage.mjs.map +1 -0
  253. package/dist/theme/theme-entry.types.d.cts +13 -1
  254. package/dist/theme/theme-entry.types.d.cts.map +1 -1
  255. package/dist/theme/theme-entry.types.d.mts +13 -1
  256. package/dist/theme/theme-entry.types.d.mts.map +1 -1
  257. package/dist/theme/theme-map.types.d.cts +11 -3
  258. package/dist/theme/theme-map.types.d.cts.map +1 -1
  259. package/dist/theme/theme-map.types.d.mts +11 -3
  260. package/dist/theme/theme-map.types.d.mts.map +1 -1
  261. package/dist/theme/theme-store/async-theme-store.types.d.cts +1 -1
  262. package/dist/theme/theme-store/async-theme-store.types.d.cts.map +1 -1
  263. package/dist/theme/theme-store/async-theme-store.types.d.mts +1 -1
  264. package/dist/theme/theme-store/async-theme-store.types.d.mts.map +1 -1
  265. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.cjs +22 -19
  266. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.cjs.map +1 -1
  267. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.d.cts +7 -2
  268. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.d.cts.map +1 -1
  269. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.d.mts +7 -2
  270. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.d.mts.map +1 -1
  271. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.mjs +22 -19
  272. package/dist/theme/theme-store/class-name-theme-store/class-name-theme-store.mjs.map +1 -1
  273. package/dist/theme/theme-store/cookie-theme-store/cookie-theme-store.cjs +18 -36
  274. package/dist/theme/theme-store/cookie-theme-store/cookie-theme-store.cjs.map +1 -1
  275. package/dist/theme/theme-store/cookie-theme-store/cookie-theme-store.d.cts +5 -3
  276. package/dist/theme/theme-store/cookie-theme-store/cookie-theme-store.d.cts.map +1 -1
  277. package/dist/theme/theme-store/cookie-theme-store/cookie-theme-store.d.mts +5 -3
  278. package/dist/theme/theme-store/cookie-theme-store/cookie-theme-store.d.mts.map +1 -1
  279. package/dist/theme/theme-store/cookie-theme-store/cookie-theme-store.mjs +18 -36
  280. package/dist/theme/theme-store/cookie-theme-store/cookie-theme-store.mjs.map +1 -1
  281. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.cjs +40 -20
  282. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.cjs.map +1 -1
  283. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.d.cts +30 -7
  284. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.d.cts.map +1 -1
  285. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.d.mts +30 -7
  286. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.d.mts.map +1 -1
  287. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.mjs +40 -20
  288. package/dist/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.mjs.map +1 -1
  289. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.cjs +1 -1
  290. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.cjs.map +1 -1
  291. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.d.cts +1 -1
  292. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.d.mts +1 -1
  293. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.mjs +1 -1
  294. package/dist/theme/theme-store/in-memory-theme-store/in-memory-theme-store.mjs.map +1 -1
  295. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.cjs +13 -12
  296. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.cjs.map +1 -1
  297. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.d.cts +8 -2
  298. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.d.cts.map +1 -1
  299. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.d.mts +8 -2
  300. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.d.mts.map +1 -1
  301. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.mjs +13 -12
  302. package/dist/theme/theme-store/local-storage-theme-store/local-storage-theme-store.mjs.map +1 -1
  303. package/dist/theme/theme-store/prefers-color-scheme-theme-store/prefers-color-scheme-theme-store.cjs +4 -5
  304. package/dist/theme/theme-store/prefers-color-scheme-theme-store/prefers-color-scheme-theme-store.cjs.map +1 -1
  305. package/dist/theme/theme-store/prefers-color-scheme-theme-store/prefers-color-scheme-theme-store.d.cts.map +1 -1
  306. package/dist/theme/theme-store/prefers-color-scheme-theme-store/prefers-color-scheme-theme-store.d.mts.map +1 -1
  307. package/dist/theme/theme-store/prefers-color-scheme-theme-store/prefers-color-scheme-theme-store.mjs +4 -5
  308. package/dist/theme/theme-store/prefers-color-scheme-theme-store/prefers-color-scheme-theme-store.mjs.map +1 -1
  309. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.cjs +13 -12
  310. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.cjs.map +1 -1
  311. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.d.cts +8 -2
  312. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.d.cts.map +1 -1
  313. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.d.mts +8 -2
  314. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.d.mts.map +1 -1
  315. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.mjs +13 -12
  316. package/dist/theme/theme-store/session-storage-theme-store/session-storage-theme-store.mjs.map +1 -1
  317. package/dist/theme/theme-store/theme-store.types.d.cts +1 -1
  318. package/dist/theme/theme-store/theme-store.types.d.cts.map +1 -1
  319. package/dist/theme/theme-store/theme-store.types.d.mts +1 -1
  320. package/dist/theme/theme-store/theme-store.types.d.mts.map +1 -1
  321. package/dist/theme/web-storage/read-web-storage.cjs +20 -0
  322. package/dist/theme/web-storage/read-web-storage.cjs.map +1 -0
  323. package/dist/theme/web-storage/read-web-storage.d.cts +21 -0
  324. package/dist/theme/web-storage/read-web-storage.d.cts.map +1 -0
  325. package/dist/theme/web-storage/read-web-storage.d.mts +21 -0
  326. package/dist/theme/web-storage/read-web-storage.d.mts.map +1 -0
  327. package/dist/theme/web-storage/read-web-storage.mjs +20 -0
  328. package/dist/theme/web-storage/read-web-storage.mjs.map +1 -0
  329. package/dist/theme/web-storage/write-web-storage.cjs +33 -0
  330. package/dist/theme/web-storage/write-web-storage.cjs.map +1 -0
  331. package/dist/theme/web-storage/write-web-storage.d.cts +25 -0
  332. package/dist/theme/web-storage/write-web-storage.d.cts.map +1 -0
  333. package/dist/theme/web-storage/write-web-storage.d.mts +25 -0
  334. package/dist/theme/web-storage/write-web-storage.d.mts.map +1 -0
  335. package/dist/theme/web-storage/write-web-storage.mjs +32 -0
  336. package/dist/theme/web-storage/write-web-storage.mjs.map +1 -0
  337. package/dist/theme.cjs +41 -1
  338. package/dist/theme.d.cts +23 -3
  339. package/dist/theme.d.mts +23 -3
  340. package/dist/theme.mjs +21 -1
  341. package/dist/utils/append-id.cjs +2 -2
  342. package/dist/utils/append-id.cjs.map +1 -1
  343. package/dist/utils/append-id.d.cts +3 -3
  344. package/dist/utils/append-id.d.mts +3 -3
  345. package/dist/utils/append-id.mjs +2 -2
  346. package/dist/utils/append-id.mjs.map +1 -1
  347. package/package.json +1 -1
  348. package/src/attributes/get-attribute.ts +5 -2
  349. package/src/attributes/get-data-attribute.ts +5 -2
  350. package/src/attributes/observe-attribute.ts +2 -2
  351. package/src/attributes/observe-data-attribute.ts +2 -2
  352. package/src/color-scheme/color-scheme.types.ts +7 -0
  353. package/src/color-scheme/get-prefers-color-scheme.ts +6 -4
  354. package/src/color-scheme/observe-prefers-color-scheme.ts +3 -1
  355. package/src/index.ts +1 -0
  356. package/src/react/hooks/use-attribute.ts +11 -11
  357. package/src/react/hooks/use-theme-by-class-name.ts +5 -10
  358. package/src/react/hooks/use-theme-by-data-attribute.ts +5 -12
  359. package/src/react/hooks/use-theme-by-local-storage.ts +3 -9
  360. package/src/react/theme/create-theme-hook.ts +4 -6
  361. package/src/testing/theme/theme-result-card.tsx +1 -0
  362. package/src/theme/_utils/match-attribute-value-to-theme.ts +36 -0
  363. package/src/theme/_utils/parse-stored-theme.ts +51 -11
  364. package/src/theme/_utils/resolve-theme-map-value.ts +15 -0
  365. package/src/theme/_utils/set-theme-to-stores.ts +3 -3
  366. package/src/theme/class-name/parse-class-name.ts +31 -0
  367. package/src/theme/class-name/read-class-name.ts +24 -0
  368. package/src/theme/class-name/stringify-class-name.ts +36 -0
  369. package/src/theme/class-name/subscribe-class-name.ts +39 -0
  370. package/src/theme/class-name/write-class-name.ts +24 -0
  371. package/src/theme/compose-theme-stores.ts +1 -1
  372. package/src/theme/cookie/_cookie-utils.ts +45 -0
  373. package/src/theme/cookie/read-cookie-theme.ts +33 -0
  374. package/src/theme/cookie/write-cookie-theme.ts +48 -0
  375. package/src/theme/data-attribute/_constant.ts +1 -0
  376. package/src/theme/data-attribute/parse-data-attribute.ts +25 -0
  377. package/src/theme/data-attribute/read-data-attribute.ts +29 -0
  378. package/src/theme/data-attribute/stringify-data-attribute.ts +39 -0
  379. package/src/theme/data-attribute/subscribe-data-attribute.ts +39 -0
  380. package/src/theme/data-attribute/write-data-attribute.ts +40 -0
  381. package/src/theme/local-storage/read-local-storage.ts +23 -0
  382. package/src/theme/local-storage/write-local-storage.ts +31 -0
  383. package/src/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.ts +30 -0
  384. package/src/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.ts +24 -0
  385. package/src/theme/session-storage/read-session-storage.ts +23 -0
  386. package/src/theme/session-storage/write-session-storage.ts +31 -0
  387. package/src/theme/theme-entry.types.ts +21 -0
  388. package/src/theme/theme-map.types.ts +9 -2
  389. package/src/theme/theme-store/async-theme-store.types.ts +1 -3
  390. package/src/theme/theme-store/class-name-theme-store/class-name-theme-store.ts +20 -26
  391. package/src/theme/theme-store/cookie-theme-store/cookie-theme-store.ts +18 -63
  392. package/src/theme/theme-store/data-attribute-theme-store/data-attribute-theme-store.ts +42 -29
  393. package/src/theme/theme-store/in-memory-theme-store/in-memory-theme-store.ts +1 -1
  394. package/src/theme/theme-store/local-storage-theme-store/local-storage-theme-store.ts +17 -20
  395. package/src/theme/theme-store/prefers-color-scheme-theme-store/prefers-color-scheme-theme-store.ts +4 -5
  396. package/src/theme/theme-store/session-storage-theme-store/session-storage-theme-store.ts +17 -20
  397. package/src/theme/theme-store/theme-store.types.ts +1 -3
  398. package/src/theme/web-storage/read-web-storage.ts +22 -0
  399. package/src/theme/web-storage/write-web-storage.ts +46 -0
  400. package/src/theme.ts +20 -0
  401. package/src/utils/append-id.ts +3 -3
  402. package/dist/theme/class-name/apply-theme-to-class-name.cjs +0 -23
  403. package/dist/theme/class-name/apply-theme-to-class-name.cjs.map +0 -1
  404. package/dist/theme/class-name/apply-theme-to-class-name.mjs +0 -22
  405. package/dist/theme/class-name/apply-theme-to-class-name.mjs.map +0 -1
  406. package/dist/theme/class-name/resolve-theme-from-class-name.cjs +0 -23
  407. package/dist/theme/class-name/resolve-theme-from-class-name.cjs.map +0 -1
  408. package/dist/theme/class-name/resolve-theme-from-class-name.mjs +0 -22
  409. package/dist/theme/class-name/resolve-theme-from-class-name.mjs.map +0 -1
  410. package/dist/theme/data-attribute/apply-theme-to-data-attribute.cjs +0 -23
  411. package/dist/theme/data-attribute/apply-theme-to-data-attribute.cjs.map +0 -1
  412. package/dist/theme/data-attribute/apply-theme-to-data-attribute.mjs +0 -22
  413. package/dist/theme/data-attribute/apply-theme-to-data-attribute.mjs.map +0 -1
  414. package/dist/theme/data-attribute/resolve-theme-from-data-attribute.cjs +0 -23
  415. package/dist/theme/data-attribute/resolve-theme-from-data-attribute.cjs.map +0 -1
  416. package/dist/theme/data-attribute/resolve-theme-from-data-attribute.mjs +0 -22
  417. package/dist/theme/data-attribute/resolve-theme-from-data-attribute.mjs.map +0 -1
  418. package/src/theme/class-name/apply-theme-to-class-name.ts +0 -26
  419. package/src/theme/class-name/resolve-theme-from-class-name.ts +0 -22
  420. package/src/theme/data-attribute/apply-theme-to-data-attribute.ts +0 -27
  421. package/src/theme/data-attribute/resolve-theme-from-data-attribute.ts +0 -23
@@ -0,0 +1,20 @@
1
+ import { getPrefersColorScheme } from "../../color-scheme/get-prefers-color-scheme.mjs";
2
+ import { themeEntry } from "../theme-entry.mjs";
3
+
4
+ //#region src/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.ts
5
+ /**
6
+ * Reads a theme entry from the system `prefers-color-scheme` media query.
7
+ *
8
+ * Themes must only include `light` and `dark` keys—this mirrors the system preference.
9
+ *
10
+ * @param themes - Record with `light` and `dark` keys mapping to theme values
11
+ * @param options.defaultColorScheme - Fallback when matchMedia is unavailable (e.g. SSR, default: 'light')
12
+ * @returns ThemeEntry for current system preference
13
+ */
14
+ function readPrefersColorSchemeTheme(themes, options) {
15
+ return themeEntry(themes, getPrefersColorScheme(options?.defaultColorScheme ?? "light"));
16
+ }
17
+
18
+ //#endregion
19
+ export { readPrefersColorSchemeTheme };
20
+ //# sourceMappingURL=read-prefers-color-scheme-theme.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-prefers-color-scheme-theme.mjs","names":[],"sources":["../../../src/theme/prefers-color-scheme-theme/read-prefers-color-scheme-theme.ts"],"sourcesContent":["import { getPrefersColorScheme } from '../../color-scheme/get-prefers-color-scheme.ts'\nimport { themeEntry } from '../theme-entry.ts'\nimport type { ThemeEntry } from '../theme-entry.types.ts'\n\ntype PrefersColorSchemeThemes = {\n\tlight: string | readonly string[]\n\tdark: string | readonly string[]\n}\n\nexport interface ReadPrefersColorSchemeThemeOptions {\n\tdefaultColorScheme?: 'light' | 'dark' | undefined\n}\n\n/**\n * Reads a theme entry from the system `prefers-color-scheme` media query.\n *\n * Themes must only include `light` and `dark` keys—this mirrors the system preference.\n *\n * @param themes - Record with `light` and `dark` keys mapping to theme values\n * @param options.defaultColorScheme - Fallback when matchMedia is unavailable (e.g. SSR, default: 'light')\n * @returns ThemeEntry for current system preference\n */\nexport function readPrefersColorSchemeTheme<Themes extends PrefersColorSchemeThemes>(\n\tthemes: Themes,\n\toptions?: ReadPrefersColorSchemeThemeOptions | undefined\n): ThemeEntry<Themes> {\n\tconst defaultColorScheme = options?.defaultColorScheme ?? 'light'\n\tconst scheme = getPrefersColorScheme(defaultColorScheme)\n\treturn themeEntry(themes, scheme)\n}\n"],"mappings":";;;;;;;;;;;;;AAsBA,SAAgB,4BACf,QACA,SACqB;AAGrB,QAAO,WAAW,QADH,sBADY,SAAS,sBAAsB,QACF,CACvB"}
@@ -0,0 +1,20 @@
1
+ const require_observe_prefers_color_scheme = require('../../color-scheme/observe-prefers-color-scheme.cjs');
2
+ const require_theme_entry = require('../theme-entry.cjs');
3
+
4
+ //#region src/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.ts
5
+ /**
6
+ * Subscribes to system `prefers-color-scheme` changes and invokes the handler with theme entries.
7
+ *
8
+ * Themes must only include `light` and `dark` keys—this mirrors the system preference.
9
+ *
10
+ * @param themes - Record with `light` and `dark` keys mapping to theme values
11
+ * @param handler - Callback invoked when the color scheme preference changes
12
+ * @returns Unsubscribe function
13
+ */
14
+ function subscribePrefersColorSchemeTheme(themes, handler) {
15
+ return require_observe_prefers_color_scheme.observePrefersColorScheme((scheme) => handler(require_theme_entry.themeEntry(themes, scheme)));
16
+ }
17
+
18
+ //#endregion
19
+ exports.subscribePrefersColorSchemeTheme = subscribePrefersColorSchemeTheme;
20
+ //# sourceMappingURL=subscribe-prefers-color-scheme-theme.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe-prefers-color-scheme-theme.cjs","names":["observePrefersColorScheme","themeEntry"],"sources":["../../../src/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.ts"],"sourcesContent":["import { observePrefersColorScheme } from '../../color-scheme/observe-prefers-color-scheme.ts'\nimport { themeEntry } from '../theme-entry.ts'\nimport type { ThemeEntry } from '../theme-entry.types.ts'\n\ntype PrefersColorSchemeThemes = {\n\tlight: string | readonly string[]\n\tdark: string | readonly string[]\n}\n\n/**\n * Subscribes to system `prefers-color-scheme` changes and invokes the handler with theme entries.\n *\n * Themes must only include `light` and `dark` keys—this mirrors the system preference.\n *\n * @param themes - Record with `light` and `dark` keys mapping to theme values\n * @param handler - Callback invoked when the color scheme preference changes\n * @returns Unsubscribe function\n */\nexport function subscribePrefersColorSchemeTheme<Themes extends PrefersColorSchemeThemes>(\n\tthemes: Themes,\n\thandler: (entry: ThemeEntry<Themes>) => void\n): () => void {\n\treturn observePrefersColorScheme((scheme) => handler(themeEntry(themes, scheme)))\n}\n"],"mappings":";;;;;;;;;;;;;AAkBA,SAAgB,iCACf,QACA,SACa;AACb,QAAOA,gEAA2B,WAAW,QAAQC,+BAAW,QAAQ,OAAO,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { ThemeEntry } from "../theme-entry.types.cjs";
2
+
3
+ //#region src/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.d.ts
4
+ type PrefersColorSchemeThemes = {
5
+ light: string | readonly string[];
6
+ dark: string | readonly string[];
7
+ };
8
+ /**
9
+ * Subscribes to system `prefers-color-scheme` changes and invokes the handler with theme entries.
10
+ *
11
+ * Themes must only include `light` and `dark` keys—this mirrors the system preference.
12
+ *
13
+ * @param themes - Record with `light` and `dark` keys mapping to theme values
14
+ * @param handler - Callback invoked when the color scheme preference changes
15
+ * @returns Unsubscribe function
16
+ */
17
+ declare function subscribePrefersColorSchemeTheme<Themes extends PrefersColorSchemeThemes>(themes: Themes, handler: (entry: ThemeEntry<Themes>) => void): () => void;
18
+ //#endregion
19
+ export { subscribePrefersColorSchemeTheme };
20
+ //# sourceMappingURL=subscribe-prefers-color-scheme-theme.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe-prefers-color-scheme-theme.d.cts","names":[],"sources":["../../../src/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.ts"],"sourcesContent":[],"mappings":";;;KAIK,wBAAA;;EAAA,IAAA,EAAA,MAAA,GAAA,SAAA,MAAwB,EAAA;AAc7B,CAAA;;;;;;;;;;iBAAgB,gDAAgD,kCACvD,yBACS,WAAW"}
@@ -0,0 +1,20 @@
1
+ import { ThemeEntry } from "../theme-entry.types.mjs";
2
+
3
+ //#region src/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.d.ts
4
+ type PrefersColorSchemeThemes = {
5
+ light: string | readonly string[];
6
+ dark: string | readonly string[];
7
+ };
8
+ /**
9
+ * Subscribes to system `prefers-color-scheme` changes and invokes the handler with theme entries.
10
+ *
11
+ * Themes must only include `light` and `dark` keys—this mirrors the system preference.
12
+ *
13
+ * @param themes - Record with `light` and `dark` keys mapping to theme values
14
+ * @param handler - Callback invoked when the color scheme preference changes
15
+ * @returns Unsubscribe function
16
+ */
17
+ declare function subscribePrefersColorSchemeTheme<Themes extends PrefersColorSchemeThemes>(themes: Themes, handler: (entry: ThemeEntry<Themes>) => void): () => void;
18
+ //#endregion
19
+ export { subscribePrefersColorSchemeTheme };
20
+ //# sourceMappingURL=subscribe-prefers-color-scheme-theme.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe-prefers-color-scheme-theme.d.mts","names":[],"sources":["../../../src/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.ts"],"sourcesContent":[],"mappings":";;;KAIK,wBAAA;;EAAA,IAAA,EAAA,MAAA,GAAA,SAAA,MAAwB,EAAA;AAc7B,CAAA;;;;;;;;;;iBAAgB,gDAAgD,kCACvD,yBACS,WAAW"}
@@ -0,0 +1,20 @@
1
+ import { observePrefersColorScheme } from "../../color-scheme/observe-prefers-color-scheme.mjs";
2
+ import { themeEntry } from "../theme-entry.mjs";
3
+
4
+ //#region src/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.ts
5
+ /**
6
+ * Subscribes to system `prefers-color-scheme` changes and invokes the handler with theme entries.
7
+ *
8
+ * Themes must only include `light` and `dark` keys—this mirrors the system preference.
9
+ *
10
+ * @param themes - Record with `light` and `dark` keys mapping to theme values
11
+ * @param handler - Callback invoked when the color scheme preference changes
12
+ * @returns Unsubscribe function
13
+ */
14
+ function subscribePrefersColorSchemeTheme(themes, handler) {
15
+ return observePrefersColorScheme((scheme) => handler(themeEntry(themes, scheme)));
16
+ }
17
+
18
+ //#endregion
19
+ export { subscribePrefersColorSchemeTheme };
20
+ //# sourceMappingURL=subscribe-prefers-color-scheme-theme.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe-prefers-color-scheme-theme.mjs","names":[],"sources":["../../../src/theme/prefers-color-scheme-theme/subscribe-prefers-color-scheme-theme.ts"],"sourcesContent":["import { observePrefersColorScheme } from '../../color-scheme/observe-prefers-color-scheme.ts'\nimport { themeEntry } from '../theme-entry.ts'\nimport type { ThemeEntry } from '../theme-entry.types.ts'\n\ntype PrefersColorSchemeThemes = {\n\tlight: string | readonly string[]\n\tdark: string | readonly string[]\n}\n\n/**\n * Subscribes to system `prefers-color-scheme` changes and invokes the handler with theme entries.\n *\n * Themes must only include `light` and `dark` keys—this mirrors the system preference.\n *\n * @param themes - Record with `light` and `dark` keys mapping to theme values\n * @param handler - Callback invoked when the color scheme preference changes\n * @returns Unsubscribe function\n */\nexport function subscribePrefersColorSchemeTheme<Themes extends PrefersColorSchemeThemes>(\n\tthemes: Themes,\n\thandler: (entry: ThemeEntry<Themes>) => void\n): () => void {\n\treturn observePrefersColorScheme((scheme) => handler(themeEntry(themes, scheme)))\n}\n"],"mappings":";;;;;;;;;;;;;AAkBA,SAAgB,iCACf,QACA,SACa;AACb,QAAO,2BAA2B,WAAW,QAAQ,WAAW,QAAQ,OAAO,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ const require_read_web_storage = require('../web-storage/read-web-storage.cjs');
2
+
3
+ //#region src/theme/session-storage/read-session-storage.ts
4
+ /**
5
+ * Reads a theme entry from sessionStorage.
6
+ *
7
+ * @param themes - Record mapping theme keys to values (for validation)
8
+ * @param storageKey - sessionStorage key to read from
9
+ * @param options.parse - Custom parser (default: parseStoredTheme)
10
+ * @returns ThemeEntry if found, undefined otherwise. Returns undefined when sessionStorage is unavailable (e.g. SSR).
11
+ */
12
+ function readSessionStorage(themes, storageKey, options) {
13
+ if (!window?.sessionStorage) return void 0;
14
+ return require_read_web_storage.readWebStorage(themes, storageKey, {
15
+ storage: window.sessionStorage,
16
+ parse: options?.parse
17
+ });
18
+ }
19
+
20
+ //#endregion
21
+ exports.readSessionStorage = readSessionStorage;
22
+ //# sourceMappingURL=read-session-storage.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-session-storage.cjs","names":["readWebStorage"],"sources":["../../../src/theme/session-storage/read-session-storage.ts"],"sourcesContent":["import type { ParseStoredTheme, ThemeEntry } from '../theme-entry.types.ts'\nimport type { ThemeMap } from '../theme-map.types.ts'\nimport { readWebStorage } from '../web-storage/read-web-storage.ts'\n\n/**\n * Reads a theme entry from sessionStorage.\n *\n * @param themes - Record mapping theme keys to values (for validation)\n * @param storageKey - sessionStorage key to read from\n * @param options.parse - Custom parser (default: parseStoredTheme)\n * @returns ThemeEntry if found, undefined otherwise. Returns undefined when sessionStorage is unavailable (e.g. SSR).\n */\nexport function readSessionStorage<Themes extends ThemeMap>(\n\tthemes: Themes,\n\tstorageKey: string,\n\toptions?: { parse?: ParseStoredTheme<Themes> | undefined }\n): ThemeEntry<Themes> | undefined {\n\tif (!window?.sessionStorage) return undefined\n\treturn readWebStorage(themes, storageKey, {\n\t\tstorage: window.sessionStorage,\n\t\tparse: options?.parse\n\t})\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,mBACf,QACA,YACA,SACiC;AACjC,KAAI,CAAC,QAAQ,eAAgB,QAAO;AACpC,QAAOA,wCAAe,QAAQ,YAAY;EACzC,SAAS,OAAO;EAChB,OAAO,SAAS;EAChB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { ThemeMap } from "../theme-map.types.cjs";
2
+ import { ParseStoredTheme, ThemeEntry } from "../theme-entry.types.cjs";
3
+
4
+ //#region src/theme/session-storage/read-session-storage.d.ts
5
+
6
+ /**
7
+ * Reads a theme entry from sessionStorage.
8
+ *
9
+ * @param themes - Record mapping theme keys to values (for validation)
10
+ * @param storageKey - sessionStorage key to read from
11
+ * @param options.parse - Custom parser (default: parseStoredTheme)
12
+ * @returns ThemeEntry if found, undefined otherwise. Returns undefined when sessionStorage is unavailable (e.g. SSR).
13
+ */
14
+ declare function readSessionStorage<Themes extends ThemeMap>(themes: Themes, storageKey: string, options?: {
15
+ parse?: ParseStoredTheme<Themes> | undefined;
16
+ }): ThemeEntry<Themes> | undefined;
17
+ //#endregion
18
+ export { readSessionStorage };
19
+ //# sourceMappingURL=read-session-storage.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-session-storage.d.cts","names":[],"sources":["../../../src/theme/session-storage/read-session-storage.ts"],"sourcesContent":[],"mappings":";;;;;;;AAYA;;;;;;AAIG,iBAJa,kBAIb,CAAA,eAJ+C,QAI/C,CAAA,CAAA,MAAA,EAHM,MAGN,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA;EAAU,KAAA,CAAA,EADQ,gBACR,CADyB,MACzB,CAAA,GAAA,SAAA;IAAV,WAAW"}
@@ -0,0 +1,19 @@
1
+ import { ThemeMap } from "../theme-map.types.mjs";
2
+ import { ParseStoredTheme, ThemeEntry } from "../theme-entry.types.mjs";
3
+
4
+ //#region src/theme/session-storage/read-session-storage.d.ts
5
+
6
+ /**
7
+ * Reads a theme entry from sessionStorage.
8
+ *
9
+ * @param themes - Record mapping theme keys to values (for validation)
10
+ * @param storageKey - sessionStorage key to read from
11
+ * @param options.parse - Custom parser (default: parseStoredTheme)
12
+ * @returns ThemeEntry if found, undefined otherwise. Returns undefined when sessionStorage is unavailable (e.g. SSR).
13
+ */
14
+ declare function readSessionStorage<Themes extends ThemeMap>(themes: Themes, storageKey: string, options?: {
15
+ parse?: ParseStoredTheme<Themes> | undefined;
16
+ }): ThemeEntry<Themes> | undefined;
17
+ //#endregion
18
+ export { readSessionStorage };
19
+ //# sourceMappingURL=read-session-storage.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-session-storage.d.mts","names":[],"sources":["../../../src/theme/session-storage/read-session-storage.ts"],"sourcesContent":[],"mappings":";;;;;;;AAYA;;;;;;AAIG,iBAJa,kBAIb,CAAA,eAJ+C,QAI/C,CAAA,CAAA,MAAA,EAHM,MAGN,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA;EAAU,KAAA,CAAA,EADQ,gBACR,CADyB,MACzB,CAAA,GAAA,SAAA;IAAV,WAAW"}
@@ -0,0 +1,22 @@
1
+ import { readWebStorage } from "../web-storage/read-web-storage.mjs";
2
+
3
+ //#region src/theme/session-storage/read-session-storage.ts
4
+ /**
5
+ * Reads a theme entry from sessionStorage.
6
+ *
7
+ * @param themes - Record mapping theme keys to values (for validation)
8
+ * @param storageKey - sessionStorage key to read from
9
+ * @param options.parse - Custom parser (default: parseStoredTheme)
10
+ * @returns ThemeEntry if found, undefined otherwise. Returns undefined when sessionStorage is unavailable (e.g. SSR).
11
+ */
12
+ function readSessionStorage(themes, storageKey, options) {
13
+ if (!window?.sessionStorage) return void 0;
14
+ return readWebStorage(themes, storageKey, {
15
+ storage: window.sessionStorage,
16
+ parse: options?.parse
17
+ });
18
+ }
19
+
20
+ //#endregion
21
+ export { readSessionStorage };
22
+ //# sourceMappingURL=read-session-storage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-session-storage.mjs","names":[],"sources":["../../../src/theme/session-storage/read-session-storage.ts"],"sourcesContent":["import type { ParseStoredTheme, ThemeEntry } from '../theme-entry.types.ts'\nimport type { ThemeMap } from '../theme-map.types.ts'\nimport { readWebStorage } from '../web-storage/read-web-storage.ts'\n\n/**\n * Reads a theme entry from sessionStorage.\n *\n * @param themes - Record mapping theme keys to values (for validation)\n * @param storageKey - sessionStorage key to read from\n * @param options.parse - Custom parser (default: parseStoredTheme)\n * @returns ThemeEntry if found, undefined otherwise. Returns undefined when sessionStorage is unavailable (e.g. SSR).\n */\nexport function readSessionStorage<Themes extends ThemeMap>(\n\tthemes: Themes,\n\tstorageKey: string,\n\toptions?: { parse?: ParseStoredTheme<Themes> | undefined }\n): ThemeEntry<Themes> | undefined {\n\tif (!window?.sessionStorage) return undefined\n\treturn readWebStorage(themes, storageKey, {\n\t\tstorage: window.sessionStorage,\n\t\tparse: options?.parse\n\t})\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,mBACf,QACA,YACA,SACiC;AACjC,KAAI,CAAC,QAAQ,eAAgB,QAAO;AACpC,QAAO,eAAe,QAAQ,YAAY;EACzC,SAAS,OAAO;EAChB,OAAO,SAAS;EAChB,CAAC"}
@@ -0,0 +1,26 @@
1
+ const require_write_web_storage = require('../web-storage/write-web-storage.cjs');
2
+
3
+ //#region src/theme/session-storage/write-session-storage.ts
4
+ /**
5
+ * Writes a theme entry to sessionStorage.
6
+ *
7
+ * Performs setItem/removeItem only. Does not notify subscribers; the store must call notify() after this.
8
+ *
9
+ * @param themes - Record mapping theme keys to values (used by stringify)
10
+ * @param storageKey - sessionStorage key to write to
11
+ * @param entry - Theme entry to write, or null/undefined to remove
12
+ * @param options.stringify - Custom serializer (default: JSON.stringify)
13
+ * @param options.onError - Optional callback invoked when storage write throws
14
+ */
15
+ function writeSessionStorage(themes, storageKey, entry, options) {
16
+ if (!window?.sessionStorage) return;
17
+ require_write_web_storage.writeWebStorage(themes, storageKey, entry, {
18
+ storage: window.sessionStorage,
19
+ stringify: options?.stringify,
20
+ onError: options?.onError
21
+ });
22
+ }
23
+
24
+ //#endregion
25
+ exports.writeSessionStorage = writeSessionStorage;
26
+ //# sourceMappingURL=write-session-storage.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-session-storage.cjs","names":[],"sources":["../../../src/theme/session-storage/write-session-storage.ts"],"sourcesContent":["import type { StringifyStoredTheme, ThemeEntry } from '../theme-entry.types.ts'\nimport type { ThemeMap } from '../theme-map.types.ts'\nimport { writeWebStorage } from '../web-storage/write-web-storage.ts'\n\n/**\n * Writes a theme entry to sessionStorage.\n *\n * Performs setItem/removeItem only. Does not notify subscribers; the store must call notify() after this.\n *\n * @param themes - Record mapping theme keys to values (used by stringify)\n * @param storageKey - sessionStorage key to write to\n * @param entry - Theme entry to write, or null/undefined to remove\n * @param options.stringify - Custom serializer (default: JSON.stringify)\n * @param options.onError - Optional callback invoked when storage write throws\n */\nexport function writeSessionStorage<Themes extends ThemeMap>(\n\tthemes: Themes,\n\tstorageKey: string,\n\tentry: ThemeEntry<Themes> | null | undefined,\n\toptions?: {\n\t\tstringify?: StringifyStoredTheme<Themes> | undefined\n\t\tonError?: ((error: unknown) => void) | undefined\n\t}\n): void {\n\tif (!window?.sessionStorage) return\n\twriteWebStorage(themes, storageKey, entry, {\n\t\tstorage: window.sessionStorage,\n\t\tstringify: options?.stringify,\n\t\tonError: options?.onError\n\t})\n}\n"],"mappings":";;;;;;;;;;;;;;AAeA,SAAgB,oBACf,QACA,YACA,OACA,SAIO;AACP,KAAI,CAAC,QAAQ,eAAgB;AAC7B,2CAAgB,QAAQ,YAAY,OAAO;EAC1C,SAAS,OAAO;EAChB,WAAW,SAAS;EACpB,SAAS,SAAS;EAClB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { ThemeMap } from "../theme-map.types.cjs";
2
+ import { StringifyStoredTheme, ThemeEntry } from "../theme-entry.types.cjs";
3
+
4
+ //#region src/theme/session-storage/write-session-storage.d.ts
5
+
6
+ /**
7
+ * Writes a theme entry to sessionStorage.
8
+ *
9
+ * Performs setItem/removeItem only. Does not notify subscribers; the store must call notify() after this.
10
+ *
11
+ * @param themes - Record mapping theme keys to values (used by stringify)
12
+ * @param storageKey - sessionStorage key to write to
13
+ * @param entry - Theme entry to write, or null/undefined to remove
14
+ * @param options.stringify - Custom serializer (default: JSON.stringify)
15
+ * @param options.onError - Optional callback invoked when storage write throws
16
+ */
17
+ declare function writeSessionStorage<Themes extends ThemeMap>(themes: Themes, storageKey: string, entry: ThemeEntry<Themes> | null | undefined, options?: {
18
+ stringify?: StringifyStoredTheme<Themes> | undefined;
19
+ onError?: ((error: unknown) => void) | undefined;
20
+ }): void;
21
+ //#endregion
22
+ export { writeSessionStorage };
23
+ //# sourceMappingURL=write-session-storage.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-session-storage.d.cts","names":[],"sources":["../../../src/theme/session-storage/write-session-storage.ts"],"sourcesContent":[],"mappings":";;;;;;;AAeA;;;;;;;;;iBAAgB,mCAAmC,kBAC1C,mCAED,WAAW;cAEL,qBAAqB"}
@@ -0,0 +1,23 @@
1
+ import { ThemeMap } from "../theme-map.types.mjs";
2
+ import { StringifyStoredTheme, ThemeEntry } from "../theme-entry.types.mjs";
3
+
4
+ //#region src/theme/session-storage/write-session-storage.d.ts
5
+
6
+ /**
7
+ * Writes a theme entry to sessionStorage.
8
+ *
9
+ * Performs setItem/removeItem only. Does not notify subscribers; the store must call notify() after this.
10
+ *
11
+ * @param themes - Record mapping theme keys to values (used by stringify)
12
+ * @param storageKey - sessionStorage key to write to
13
+ * @param entry - Theme entry to write, or null/undefined to remove
14
+ * @param options.stringify - Custom serializer (default: JSON.stringify)
15
+ * @param options.onError - Optional callback invoked when storage write throws
16
+ */
17
+ declare function writeSessionStorage<Themes extends ThemeMap>(themes: Themes, storageKey: string, entry: ThemeEntry<Themes> | null | undefined, options?: {
18
+ stringify?: StringifyStoredTheme<Themes> | undefined;
19
+ onError?: ((error: unknown) => void) | undefined;
20
+ }): void;
21
+ //#endregion
22
+ export { writeSessionStorage };
23
+ //# sourceMappingURL=write-session-storage.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-session-storage.d.mts","names":[],"sources":["../../../src/theme/session-storage/write-session-storage.ts"],"sourcesContent":[],"mappings":";;;;;;;AAeA;;;;;;;;;iBAAgB,mCAAmC,kBAC1C,mCAED,WAAW;cAEL,qBAAqB"}
@@ -0,0 +1,26 @@
1
+ import { writeWebStorage } from "../web-storage/write-web-storage.mjs";
2
+
3
+ //#region src/theme/session-storage/write-session-storage.ts
4
+ /**
5
+ * Writes a theme entry to sessionStorage.
6
+ *
7
+ * Performs setItem/removeItem only. Does not notify subscribers; the store must call notify() after this.
8
+ *
9
+ * @param themes - Record mapping theme keys to values (used by stringify)
10
+ * @param storageKey - sessionStorage key to write to
11
+ * @param entry - Theme entry to write, or null/undefined to remove
12
+ * @param options.stringify - Custom serializer (default: JSON.stringify)
13
+ * @param options.onError - Optional callback invoked when storage write throws
14
+ */
15
+ function writeSessionStorage(themes, storageKey, entry, options) {
16
+ if (!window?.sessionStorage) return;
17
+ writeWebStorage(themes, storageKey, entry, {
18
+ storage: window.sessionStorage,
19
+ stringify: options?.stringify,
20
+ onError: options?.onError
21
+ });
22
+ }
23
+
24
+ //#endregion
25
+ export { writeSessionStorage };
26
+ //# sourceMappingURL=write-session-storage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-session-storage.mjs","names":[],"sources":["../../../src/theme/session-storage/write-session-storage.ts"],"sourcesContent":["import type { StringifyStoredTheme, ThemeEntry } from '../theme-entry.types.ts'\nimport type { ThemeMap } from '../theme-map.types.ts'\nimport { writeWebStorage } from '../web-storage/write-web-storage.ts'\n\n/**\n * Writes a theme entry to sessionStorage.\n *\n * Performs setItem/removeItem only. Does not notify subscribers; the store must call notify() after this.\n *\n * @param themes - Record mapping theme keys to values (used by stringify)\n * @param storageKey - sessionStorage key to write to\n * @param entry - Theme entry to write, or null/undefined to remove\n * @param options.stringify - Custom serializer (default: JSON.stringify)\n * @param options.onError - Optional callback invoked when storage write throws\n */\nexport function writeSessionStorage<Themes extends ThemeMap>(\n\tthemes: Themes,\n\tstorageKey: string,\n\tentry: ThemeEntry<Themes> | null | undefined,\n\toptions?: {\n\t\tstringify?: StringifyStoredTheme<Themes> | undefined\n\t\tonError?: ((error: unknown) => void) | undefined\n\t}\n): void {\n\tif (!window?.sessionStorage) return\n\twriteWebStorage(themes, storageKey, entry, {\n\t\tstorage: window.sessionStorage,\n\t\tstringify: options?.stringify,\n\t\tonError: options?.onError\n\t})\n}\n"],"mappings":";;;;;;;;;;;;;;AAeA,SAAgB,oBACf,QACA,YACA,OACA,SAIO;AACP,KAAI,CAAC,QAAQ,eAAgB;AAC7B,iBAAgB,QAAQ,YAAY,OAAO;EAC1C,SAAS,OAAO;EAChB,WAAW,SAAS;EACpB,SAAS,SAAS;EAClB,CAAC"}
@@ -11,6 +11,18 @@ interface ThemeEntry<Themes extends ThemeMap = ThemeMap> {
11
11
  theme: keyof Themes;
12
12
  value: Themes[keyof Themes];
13
13
  }
14
+ /**
15
+ * Function type for parsing stored string into ThemeEntry.
16
+ * Used as options.parse in persisting theme stores.
17
+ * Value accepts null (e.g. from getItem, getAttribute, cookie parsing).
18
+ */
19
+ type ParseStoredTheme<Themes extends ThemeMap> = (themes: Themes, value: string | null | undefined) => ThemeEntry<Themes> | undefined;
20
+ /**
21
+ * Function type for stringify ThemeEntry to a stored string.
22
+ * Used as options.stringify in persisting theme stores.
23
+ * Existing accepts null (e.g. from getAttribute, getItem); entry accepts null for remove/clear.
24
+ */
25
+ type StringifyStoredTheme<Themes extends ThemeMap> = (themes: Themes, existing: string | null | undefined, entry: ThemeEntry<Themes> | null | undefined) => string;
14
26
  //#endregion
15
- export { ThemeEntry };
27
+ export { ParseStoredTheme, StringifyStoredTheme, ThemeEntry };
16
28
  //# sourceMappingURL=theme-entry.types.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-entry.types.d.cts","names":[],"sources":["../../src/theme/theme-entry.types.ts"],"sourcesContent":[],"mappings":";;;;;;AAOA;;;AACc,UADG,UACH,CAAA,eAD6B,QAC7B,GADwC,QACxC,CAAA,CAAA;EACN,KAAA,EAAA,MADM,MACN;EAAa,KAAA,EAAb,MAAa,CAAA,MAAA,MAAA,CAAA"}
1
+ {"version":3,"file":"theme-entry.types.d.cts","names":[],"sources":["../../src/theme/theme-entry.types.ts"],"sourcesContent":[],"mappings":";;;;;;AAOA;;;AACc,UADG,UACH,CAAA,eAD6B,QAC7B,GADwC,QACxC,CAAA,CAAA;EACN,KAAA,EAAA,MADM,MACN;EAAa,KAAA,EAAb,MAAa,CAAA,MAAA,MAAA,CAAA;;AAQrB;;;;;AAGe,KAHH,gBAGG,CAAA,eAH6B,QAG7B,CAAA,GAAA,CAAA,MAAA,EAFN,MAEM,EAAA,KAAA,EAAA,MAAA,GAAA,IAAA,GAAA,SAAA,EAAA,GAAV,UAAU,CAAC,MAAD,CAAA,GAAA,SAAA;AAOf;;;;;AAGkB,KAHN,oBAGM,CAAA,eAH8B,QAG9B,CAAA,GAAA,CAAA,MAAA,EAFT,MAES,EAAA,QAAA,EAAA,MAAA,GAAA,IAAA,GAAA,SAAA,EAAA,KAAA,EAAV,UAAU,CAAC,MAAD,CAAA,GAAA,IAAA,GAAA,SAAA,EAAA,GAAA,MAAA"}
@@ -11,6 +11,18 @@ interface ThemeEntry<Themes extends ThemeMap = ThemeMap> {
11
11
  theme: keyof Themes;
12
12
  value: Themes[keyof Themes];
13
13
  }
14
+ /**
15
+ * Function type for parsing stored string into ThemeEntry.
16
+ * Used as options.parse in persisting theme stores.
17
+ * Value accepts null (e.g. from getItem, getAttribute, cookie parsing).
18
+ */
19
+ type ParseStoredTheme<Themes extends ThemeMap> = (themes: Themes, value: string | null | undefined) => ThemeEntry<Themes> | undefined;
20
+ /**
21
+ * Function type for stringify ThemeEntry to a stored string.
22
+ * Used as options.stringify in persisting theme stores.
23
+ * Existing accepts null (e.g. from getAttribute, getItem); entry accepts null for remove/clear.
24
+ */
25
+ type StringifyStoredTheme<Themes extends ThemeMap> = (themes: Themes, existing: string | null | undefined, entry: ThemeEntry<Themes> | null | undefined) => string;
14
26
  //#endregion
15
- export { ThemeEntry };
27
+ export { ParseStoredTheme, StringifyStoredTheme, ThemeEntry };
16
28
  //# sourceMappingURL=theme-entry.types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-entry.types.d.mts","names":[],"sources":["../../src/theme/theme-entry.types.ts"],"sourcesContent":[],"mappings":";;;;;;AAOA;;;AACc,UADG,UACH,CAAA,eAD6B,QAC7B,GADwC,QACxC,CAAA,CAAA;EACN,KAAA,EAAA,MADM,MACN;EAAa,KAAA,EAAb,MAAa,CAAA,MAAA,MAAA,CAAA"}
1
+ {"version":3,"file":"theme-entry.types.d.mts","names":[],"sources":["../../src/theme/theme-entry.types.ts"],"sourcesContent":[],"mappings":";;;;;;AAOA;;;AACc,UADG,UACH,CAAA,eAD6B,QAC7B,GADwC,QACxC,CAAA,CAAA;EACN,KAAA,EAAA,MADM,MACN;EAAa,KAAA,EAAb,MAAa,CAAA,MAAA,MAAA,CAAA;;AAQrB;;;;;AAGe,KAHH,gBAGG,CAAA,eAH6B,QAG7B,CAAA,GAAA,CAAA,MAAA,EAFN,MAEM,EAAA,KAAA,EAAA,MAAA,GAAA,IAAA,GAAA,SAAA,EAAA,GAAV,UAAU,CAAC,MAAD,CAAA,GAAA,SAAA;AAOf;;;;;AAGkB,KAHN,oBAGM,CAAA,eAH8B,QAG9B,CAAA,GAAA,CAAA,MAAA,EAFT,MAES,EAAA,QAAA,EAAA,MAAA,GAAA,IAAA,GAAA,SAAA,EAAA,KAAA,EAAV,UAAU,CAAC,MAAD,CAAA,GAAA,IAAA,GAAA,SAAA,EAAA,GAAA,MAAA"}
@@ -1,10 +1,18 @@
1
1
  //#region src/theme/theme-map.types.d.ts
2
+ /**
3
+ * Polymorphic theme value: string, array, or object with themeValue.
4
+ * The object form allows storing extra user metadata in persistent stores (localStorage, etc.).
5
+ */
6
+ type ThemeMapValue = string | readonly string[] | {
7
+ themeValue: string | readonly string[];
8
+ };
2
9
  /**
3
10
  * Record mapping theme keys to their values.
4
- * Each value can be a single string or readonly string[] (e.g. multiple CSS classes).
11
+ * Each value can be a single string, readonly string[] (e.g. multiple CSS classes),
12
+ * or { themeValue: string | string[] } for polymorphic values with extra metadata.
5
13
  * Used by all ThemeStore factories via the themes option.
6
14
  */
7
- type ThemeMap<Theme extends string = string> = Record<Theme, string | readonly string[]>;
15
+ type ThemeMap<Theme extends string = string> = Record<Theme, ThemeMapValue>;
8
16
  //#endregion
9
- export { ThemeMap };
17
+ export { ThemeMap, ThemeMapValue };
10
18
  //# sourceMappingURL=theme-map.types.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-map.types.d.cts","names":[],"sources":["../../src/theme/theme-map.types.ts"],"sourcesContent":[],"mappings":";;AAKA;;;;KAAY,0CAA0C,OAAO"}
1
+ {"version":3,"file":"theme-map.types.d.cts","names":[],"sources":["../../src/theme/theme-map.types.ts"],"sourcesContent":[],"mappings":";;AAIA;AAQA;;AAAoE,KARxD,aAAA,GAQwD,MAAA,GAAA,SAAA,MAAA,EAAA,GAAA;EAAd,UAAA,EAAA,MAAA,GAAA,SAAA,MAAA,EAAA;CAAM;;;;;;;KAAhD,0CAA0C,OAAO,OAAO"}
@@ -1,10 +1,18 @@
1
1
  //#region src/theme/theme-map.types.d.ts
2
+ /**
3
+ * Polymorphic theme value: string, array, or object with themeValue.
4
+ * The object form allows storing extra user metadata in persistent stores (localStorage, etc.).
5
+ */
6
+ type ThemeMapValue = string | readonly string[] | {
7
+ themeValue: string | readonly string[];
8
+ };
2
9
  /**
3
10
  * Record mapping theme keys to their values.
4
- * Each value can be a single string or readonly string[] (e.g. multiple CSS classes).
11
+ * Each value can be a single string, readonly string[] (e.g. multiple CSS classes),
12
+ * or { themeValue: string | string[] } for polymorphic values with extra metadata.
5
13
  * Used by all ThemeStore factories via the themes option.
6
14
  */
7
- type ThemeMap<Theme extends string = string> = Record<Theme, string | readonly string[]>;
15
+ type ThemeMap<Theme extends string = string> = Record<Theme, ThemeMapValue>;
8
16
  //#endregion
9
- export { ThemeMap };
17
+ export { ThemeMap, ThemeMapValue };
10
18
  //# sourceMappingURL=theme-map.types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-map.types.d.mts","names":[],"sources":["../../src/theme/theme-map.types.ts"],"sourcesContent":[],"mappings":";;AAKA;;;;KAAY,0CAA0C,OAAO"}
1
+ {"version":3,"file":"theme-map.types.d.mts","names":[],"sources":["../../src/theme/theme-map.types.ts"],"sourcesContent":[],"mappings":";;AAIA;AAQA;;AAAoE,KARxD,aAAA,GAQwD,MAAA,GAAA,SAAA,MAAA,EAAA,GAAA;EAAd,UAAA,EAAA,MAAA,GAAA,SAAA,MAAA,EAAA;CAAM;;;;;;;KAAhD,0CAA0C,OAAO,OAAO"}
@@ -18,7 +18,7 @@ import { ThemeEntry } from "../theme-entry.types.cjs";
18
18
  interface AsyncThemeStore<Themes extends ThemeMap = ThemeMap> {
19
19
  read?: (() => ThemeEntry<Themes> | undefined | Promise<ThemeEntry<Themes> | undefined>) | undefined;
20
20
  write?: ((entry: ThemeEntry<Themes> | undefined) => void | Promise<void>) | undefined;
21
- subscribe?: ((handler: (entry: ThemeEntry<Themes> | undefined | null) => void) => () => void) | undefined;
21
+ subscribe?: ((handler: (entry: ThemeEntry<Themes> | undefined) => void) => () => void) | undefined;
22
22
  }
23
23
  //#endregion
24
24
  export { AsyncThemeStore };
@@ -1 +1 @@
1
- {"version":3,"file":"async-theme-store.types.d.cts","names":[],"sources":["../../../src/theme/theme-store/async-theme-store.types.ts"],"sourcesContent":[],"mappings":";;;;;;;AAeA;;;;;;;;;;AAI4D,UAJ3C,eAI2C,CAAA,eAJZ,QAIY,GAJD,QAIC,CAAA,CAAA;EAE1B,IAAA,CAAA,EAAA,CAAA,GAAA,GAJvB,UAIuB,CAJZ,MAIY,CAAA,GAAA,SAAA,GAJU,OAIV,CAJkB,UAIlB,CAJ6B,MAI7B,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,SAAA;EAAX,KAAA,CAAA,EAAA,CAAA,CAAA,KAAA,EAFL,UAEK,CAFM,MAEN,CAAA,GAAA,SAAA,EAAA,GAAA,IAAA,GAFqC,OAErC,CAAA,IAAA,CAAA,CAAA,GAAA,SAAA;EAAU,SAAA,CAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,KAAA,EAAV,UAAU,CAAC,MAAD,CAAA,GAAA,SAAA,GAAA,IAAA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA,CAAA,GAAA,SAAA"}
1
+ {"version":3,"file":"async-theme-store.types.d.cts","names":[],"sources":["../../../src/theme/theme-store/async-theme-store.types.ts"],"sourcesContent":[],"mappings":";;;;;;;AAeA;;;;;;;;;;AAI4D,UAJ3C,eAI2C,CAAA,eAJZ,QAIY,GAJD,QAIC,CAAA,CAAA;EACjB,IAAA,CAAA,EAAA,CAAA,GAAA,GAHhC,UAGgC,CAHrB,MAGqB,CAAA,GAAA,SAAA,GAHC,OAGD,CAHS,UAGT,CAHoB,MAGpB,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,SAAA;EAAX,KAAA,CAAA,EAAA,CAAA,CAAA,KAAA,EADd,UACc,CADH,MACG,CAAA,GAAA,SAAA,EAAA,GAAA,IAAA,GAD4B,OAC5B,CAAA,IAAA,CAAA,CAAA,GAAA,SAAA;EAAU,SAAA,CAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,KAAA,EAAV,UAAU,CAAC,MAAD,CAAA,GAAA,SAAA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA,CAAA,GAAA,SAAA"}
@@ -18,7 +18,7 @@ import { ThemeEntry } from "../theme-entry.types.mjs";
18
18
  interface AsyncThemeStore<Themes extends ThemeMap = ThemeMap> {
19
19
  read?: (() => ThemeEntry<Themes> | undefined | Promise<ThemeEntry<Themes> | undefined>) | undefined;
20
20
  write?: ((entry: ThemeEntry<Themes> | undefined) => void | Promise<void>) | undefined;
21
- subscribe?: ((handler: (entry: ThemeEntry<Themes> | undefined | null) => void) => () => void) | undefined;
21
+ subscribe?: ((handler: (entry: ThemeEntry<Themes> | undefined) => void) => () => void) | undefined;
22
22
  }
23
23
  //#endregion
24
24
  export { AsyncThemeStore };
@@ -1 +1 @@
1
- {"version":3,"file":"async-theme-store.types.d.mts","names":[],"sources":["../../../src/theme/theme-store/async-theme-store.types.ts"],"sourcesContent":[],"mappings":";;;;;;;AAeA;;;;;;;;;;AAI4D,UAJ3C,eAI2C,CAAA,eAJZ,QAIY,GAJD,QAIC,CAAA,CAAA;EAE1B,IAAA,CAAA,EAAA,CAAA,GAAA,GAJvB,UAIuB,CAJZ,MAIY,CAAA,GAAA,SAAA,GAJU,OAIV,CAJkB,UAIlB,CAJ6B,MAI7B,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,SAAA;EAAX,KAAA,CAAA,EAAA,CAAA,CAAA,KAAA,EAFL,UAEK,CAFM,MAEN,CAAA,GAAA,SAAA,EAAA,GAAA,IAAA,GAFqC,OAErC,CAAA,IAAA,CAAA,CAAA,GAAA,SAAA;EAAU,SAAA,CAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,KAAA,EAAV,UAAU,CAAC,MAAD,CAAA,GAAA,SAAA,GAAA,IAAA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA,CAAA,GAAA,SAAA"}
1
+ {"version":3,"file":"async-theme-store.types.d.mts","names":[],"sources":["../../../src/theme/theme-store/async-theme-store.types.ts"],"sourcesContent":[],"mappings":";;;;;;;AAeA;;;;;;;;;;AAI4D,UAJ3C,eAI2C,CAAA,eAJZ,QAIY,GAJD,QAIC,CAAA,CAAA;EACjB,IAAA,CAAA,EAAA,CAAA,GAAA,GAHhC,UAGgC,CAHrB,MAGqB,CAAA,GAAA,SAAA,GAHC,OAGD,CAHS,UAGT,CAHoB,MAGpB,CAAA,GAAA,SAAA,CAAA,CAAA,GAAA,SAAA;EAAX,KAAA,CAAA,EAAA,CAAA,CAAA,KAAA,EADd,UACc,CADH,MACG,CAAA,GAAA,SAAA,EAAA,GAAA,IAAA,GAD4B,OAC5B,CAAA,IAAA,CAAA,CAAA,GAAA,SAAA;EAAU,SAAA,CAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,KAAA,EAAV,UAAU,CAAC,MAAD,CAAA,GAAA,SAAA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA,CAAA,GAAA,SAAA"}
@@ -1,15 +1,18 @@
1
- const require_observe_attribute = require('../../../attributes/observe-attribute.cjs');
2
- const require_resolve_theme_from_class_name = require('../../class-name/resolve-theme-from-class-name.cjs');
3
- const require_theme_entry = require('../../theme-entry.cjs');
4
1
  const require_dummy_theme_store = require('../../../testing/theme/dummy-theme-store.cjs');
5
- const require_apply_theme_to_class_name = require('../../class-name/apply-theme-to-class-name.cjs');
2
+ const require_parse_class_name = require('../../class-name/parse-class-name.cjs');
3
+ const require_read_class_name = require('../../class-name/read-class-name.cjs');
4
+ const require_stringify_class_name = require('../../class-name/stringify-class-name.cjs');
5
+ const require_subscribe_class_name = require('../../class-name/subscribe-class-name.cjs');
6
+ const require_write_class_name = require('../../class-name/write-class-name.cjs');
6
7
 
7
8
  //#region src/theme/theme-store/class-name-theme-store/class-name-theme-store.ts
8
9
  /**
9
10
  * Creates a theme store that reads and writes via element class names.
10
11
  *
11
12
  * @param themes - Record mapping theme keys to class name(s)
12
- * @param options.element - Element to operate on (defaults to document.documentElement)
13
+ * @param options.element - Element to operate on (accepts null e.g. from refs). Defaults to document.documentElement.
14
+ * @param options.parse - Custom parser (default: parseClassName)
15
+ * @param options.stringify - Custom serializer (default: stringifyClassName)
13
16
  * @returns ThemeStore
14
17
  *
15
18
  * @example
@@ -24,26 +27,26 @@ const require_apply_theme_to_class_name = require('../../class-name/apply-theme-
24
27
  function classNameThemeStore(themes, options) {
25
28
  const element = options?.element ?? document?.documentElement;
26
29
  if (!element) return require_dummy_theme_store.dummyThemeStore;
30
+ const parse = options?.parse ?? require_parse_class_name.parseClassName;
31
+ const stringify = options?.stringify ?? require_stringify_class_name.stringifyClassName;
27
32
  return {
28
33
  read() {
29
- const theme = require_resolve_theme_from_class_name.resolveThemeFromClassName(themes, element.className);
30
- if (theme === void 0) return void 0;
31
- return require_theme_entry.themeEntry(themes, theme);
34
+ return require_read_class_name.readClassName(themes, {
35
+ element,
36
+ parse
37
+ });
32
38
  },
33
39
  write(entry) {
34
- require_apply_theme_to_class_name.applyThemeToClassName(themes, element, entry);
40
+ require_write_class_name.writeClassName(themes, entry, {
41
+ element,
42
+ stringify
43
+ });
35
44
  },
36
45
  subscribe(handler) {
37
- let lastEmitted = null;
38
- const observer = require_observe_attribute.observeAttributes({ class: (value) => {
39
- const theme = value ? require_resolve_theme_from_class_name.resolveThemeFromClassName(themes, value) : void 0;
40
- const entry = theme ? require_theme_entry.themeEntry(themes, theme) : void 0;
41
- const key = theme ?? void 0;
42
- if (lastEmitted === key) return;
43
- lastEmitted = key;
44
- handler(entry);
45
- } }, element);
46
- return () => observer.disconnect();
46
+ return require_subscribe_class_name.subscribeClassName(themes, handler, {
47
+ element,
48
+ parse
49
+ });
47
50
  }
48
51
  };
49
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"class-name-theme-store.cjs","names":["dummyThemeStore","resolveThemeFromClassName","themeEntry","lastEmitted: keyof Themes | undefined | null","observeAttributes"],"sources":["../../../../src/theme/theme-store/class-name-theme-store/class-name-theme-store.ts"],"sourcesContent":["import type { Required } from 'type-plus'\nimport { observeAttributes } from '../../../attributes/observe-attribute.ts'\nimport { dummyThemeStore } from '../../../testing/theme/dummy-theme-store.ts'\nimport { applyThemeToClassName } from '../../class-name/apply-theme-to-class-name.ts'\nimport { resolveThemeFromClassName } from '../../class-name/resolve-theme-from-class-name.ts'\nimport { themeEntry } from '../../theme-entry.ts'\nimport type { ThemeMap } from '../../theme-map.types.ts'\nimport type { ThemeStore } from '../theme-store.types.ts'\n\n/**\n * Creates a theme store that reads and writes via element class names.\n *\n * @param themes - Record mapping theme keys to class name(s)\n * @param options.element - Element to operate on (defaults to document.documentElement)\n * @returns ThemeStore\n *\n * @example\n * ```ts\n * const themes = { current: 'theme-current', grayscale: 'theme-grayscale' }\n * const store = classNameThemeStore(themes)\n * store.read() // returns themeResult from element.className\n * store.write(themeEntry(themes, 'grayscale'))\n * store.subscribe((themeResult) => {})\n * ```\n */\nexport function classNameThemeStore<Themes extends ThemeMap>(\n\tthemes: Themes,\n\toptions?: { element?: Element | undefined }\n): Required<ThemeStore<Themes>> {\n\tconst element = options?.element ?? document?.documentElement\n\n\tif (!element) return dummyThemeStore\n\n\treturn {\n\t\tread() {\n\t\t\tconst theme = resolveThemeFromClassName(themes, element.className)\n\t\t\tif (theme === undefined) return undefined\n\t\t\treturn themeEntry(themes, theme)\n\t\t},\n\t\twrite(entry) {\n\t\t\tapplyThemeToClassName(themes, element, entry)\n\t\t},\n\t\tsubscribe(handler) {\n\t\t\tlet lastEmitted: keyof Themes | undefined | null = null\n\t\t\tconst observer = observeAttributes(\n\t\t\t\t{\n\t\t\t\t\tclass: (value) => {\n\t\t\t\t\t\tconst theme = value ? resolveThemeFromClassName(themes, value) : undefined\n\t\t\t\t\t\tconst entry = theme ? themeEntry(themes, theme) : undefined\n\t\t\t\t\t\tconst key = theme ?? undefined\n\n\t\t\t\t\t\tif (lastEmitted === key) return\n\t\t\t\t\t\tlastEmitted = key\n\t\t\t\t\t\thandler(entry)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\telement\n\t\t\t)\n\t\t\treturn () => observer.disconnect()\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,oBACf,QACA,SAC+B;CAC/B,MAAM,UAAU,SAAS,WAAW,UAAU;AAE9C,KAAI,CAAC,QAAS,QAAOA;AAErB,QAAO;EACN,OAAO;GACN,MAAM,QAAQC,gEAA0B,QAAQ,QAAQ,UAAU;AAClE,OAAI,UAAU,OAAW,QAAO;AAChC,UAAOC,+BAAW,QAAQ,MAAM;;EAEjC,MAAM,OAAO;AACZ,2DAAsB,QAAQ,SAAS,MAAM;;EAE9C,UAAU,SAAS;GAClB,IAAIC,cAA+C;GACnD,MAAM,WAAWC,4CAChB,EACC,QAAQ,UAAU;IACjB,MAAM,QAAQ,QAAQH,gEAA0B,QAAQ,MAAM,GAAG;IACjE,MAAM,QAAQ,QAAQC,+BAAW,QAAQ,MAAM,GAAG;IAClD,MAAM,MAAM,SAAS;AAErB,QAAI,gBAAgB,IAAK;AACzB,kBAAc;AACd,YAAQ,MAAM;MAEf,EACD,QACA;AACD,gBAAa,SAAS,YAAY;;EAEnC"}
1
+ {"version":3,"file":"class-name-theme-store.cjs","names":["dummyThemeStore","parseClassName","stringifyClassName","readClassName","subscribeClassName"],"sources":["../../../../src/theme/theme-store/class-name-theme-store/class-name-theme-store.ts"],"sourcesContent":["import type { Required } from 'type-plus'\nimport { dummyThemeStore } from '../../../testing/theme/dummy-theme-store.ts'\nimport { parseClassName } from '../../class-name/parse-class-name.ts'\nimport { readClassName } from '../../class-name/read-class-name.ts'\nimport { stringifyClassName } from '../../class-name/stringify-class-name.ts'\nimport { subscribeClassName } from '../../class-name/subscribe-class-name.ts'\nimport { writeClassName } from '../../class-name/write-class-name.ts'\nimport type { ParseStoredTheme, StringifyStoredTheme } from '../../theme-entry.types.ts'\nimport type { ThemeMap } from '../../theme-map.types.ts'\nimport type { ThemeStore } from '../theme-store.types.ts'\n\n/**\n * Creates a theme store that reads and writes via element class names.\n *\n * @param themes - Record mapping theme keys to class name(s)\n * @param options.element - Element to operate on (accepts null e.g. from refs). Defaults to document.documentElement.\n * @param options.parse - Custom parser (default: parseClassName)\n * @param options.stringify - Custom serializer (default: stringifyClassName)\n * @returns ThemeStore\n *\n * @example\n * ```ts\n * const themes = { current: 'theme-current', grayscale: 'theme-grayscale' }\n * const store = classNameThemeStore(themes)\n * store.read() // returns themeResult from element.className\n * store.write(themeEntry(themes, 'grayscale'))\n * store.subscribe((themeResult) => {})\n * ```\n */\nexport function classNameThemeStore<Themes extends ThemeMap>(\n\tthemes: Themes,\n\toptions?: {\n\t\telement?: Element | null | undefined\n\t\tparse?: ParseStoredTheme<Themes> | undefined\n\t\tstringify?: StringifyStoredTheme<Themes> | undefined\n\t}\n): Required<ThemeStore<Themes>> {\n\tconst element = options?.element ?? document?.documentElement\n\n\tif (!element) return dummyThemeStore\n\n\tconst parse = options?.parse ?? parseClassName\n\tconst stringify = options?.stringify ?? stringifyClassName\n\n\treturn {\n\t\tread() {\n\t\t\treturn readClassName(themes, { element, parse })\n\t\t},\n\t\twrite(entry) {\n\t\t\twriteClassName(themes, entry, { element, stringify })\n\t\t},\n\t\tsubscribe(handler) {\n\t\t\treturn subscribeClassName(themes, handler, { element, parse })\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAgB,oBACf,QACA,SAK+B;CAC/B,MAAM,UAAU,SAAS,WAAW,UAAU;AAE9C,KAAI,CAAC,QAAS,QAAOA;CAErB,MAAM,QAAQ,SAAS,SAASC;CAChC,MAAM,YAAY,SAAS,aAAaC;AAExC,QAAO;EACN,OAAO;AACN,UAAOC,sCAAc,QAAQ;IAAE;IAAS;IAAO,CAAC;;EAEjD,MAAM,OAAO;AACZ,2CAAe,QAAQ,OAAO;IAAE;IAAS;IAAW,CAAC;;EAEtD,UAAU,SAAS;AAClB,UAAOC,gDAAmB,QAAQ,SAAS;IAAE;IAAS;IAAO,CAAC;;EAE/D"}