@blimu/react 1.1.0 → 1.1.1

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 (451) hide show
  1. package/dist/_virtual/index.cjs +5 -1
  2. package/dist/_virtual/index.cjs.map +1 -1
  3. package/dist/_virtual/index.js +3 -3
  4. package/dist/_virtual/index2.cjs +4 -1
  5. package/dist/_virtual/index2.cjs.map +1 -1
  6. package/dist/_virtual/index2.js +2 -2
  7. package/dist/_virtual/use-sync-external-store-shim.development.cjs +4 -1
  8. package/dist/_virtual/use-sync-external-store-shim.development.cjs.map +1 -1
  9. package/dist/_virtual/use-sync-external-store-shim.development.js +2 -2
  10. package/dist/_virtual/use-sync-external-store-shim.production.cjs +4 -1
  11. package/dist/_virtual/use-sync-external-store-shim.production.cjs.map +1 -1
  12. package/dist/_virtual/use-sync-external-store-shim.production.js +2 -2
  13. package/dist/client/auth.service.cjs +249 -1
  14. package/dist/client/auth.service.cjs.map +1 -1
  15. package/dist/client/auth.service.js +194 -96
  16. package/dist/client/auth.service.js.map +1 -1
  17. package/dist/client/external-store.cjs +26 -1
  18. package/dist/client/external-store.cjs.map +1 -1
  19. package/dist/client/external-store.js +22 -8
  20. package/dist/client/external-store.js.map +1 -1
  21. package/dist/client/runtime-client.cjs +136 -1
  22. package/dist/client/runtime-client.cjs.map +1 -1
  23. package/dist/client/runtime-client.js +85 -51
  24. package/dist/client/runtime-client.js.map +1 -1
  25. package/dist/components/index.cjs +13 -0
  26. package/dist/components/index.cjs.map +1 -0
  27. package/dist/components/index.js +13 -0
  28. package/dist/components/index.js.map +1 -0
  29. package/dist/components/members-list.cjs +132 -1
  30. package/dist/components/members-list.cjs.map +1 -1
  31. package/dist/components/members-list.js +69 -64
  32. package/dist/components/members-list.js.map +1 -1
  33. package/dist/components/redirect-to-sign-in.cjs +34 -1
  34. package/dist/components/redirect-to-sign-in.cjs.map +1 -1
  35. package/dist/components/redirect-to-sign-in.js +28 -20
  36. package/dist/components/redirect-to-sign-in.js.map +1 -1
  37. package/dist/components/sign-in-button.cjs +36 -1
  38. package/dist/components/sign-in-button.cjs.map +1 -1
  39. package/dist/components/sign-in-button.js +25 -21
  40. package/dist/components/sign-in-button.js.map +1 -1
  41. package/dist/components/ui/avatar.cjs +42 -1
  42. package/dist/components/ui/avatar.cjs.map +1 -1
  43. package/dist/components/ui/avatar.js +23 -23
  44. package/dist/components/ui/avatar.js.map +1 -1
  45. package/dist/components/ui/dropdown-menu.cjs +148 -1
  46. package/dist/components/ui/dropdown-menu.cjs.map +1 -1
  47. package/dist/components/ui/dropdown-menu.js +83 -81
  48. package/dist/components/ui/dropdown-menu.js.map +1 -1
  49. package/dist/components/user-avatar.cjs +22 -1
  50. package/dist/components/user-avatar.cjs.map +1 -1
  51. package/dist/components/user-avatar.js +16 -16
  52. package/dist/components/user-avatar.js.map +1 -1
  53. package/dist/components/user-button/styles.cjs +39 -1
  54. package/dist/components/user-button/styles.cjs.map +1 -1
  55. package/dist/components/user-button/styles.js +6 -5
  56. package/dist/components/user-button/styles.js.map +1 -1
  57. package/dist/components/user-button/user-button.cjs +98 -1
  58. package/dist/components/user-button/user-button.cjs.map +1 -1
  59. package/dist/components/user-button/user-button.js +64 -58
  60. package/dist/components/user-button/user-button.js.map +1 -1
  61. package/dist/hooks/index.cjs +14 -0
  62. package/dist/hooks/index.cjs.map +1 -0
  63. package/dist/hooks/index.d.ts +1 -0
  64. package/dist/hooks/index.d.ts.map +1 -1
  65. package/dist/hooks/index.js +14 -0
  66. package/dist/hooks/index.js.map +1 -0
  67. package/dist/hooks/use-auth.cjs +44 -1
  68. package/dist/hooks/use-auth.cjs.map +1 -1
  69. package/dist/hooks/use-auth.d.ts +13 -15
  70. package/dist/hooks/use-auth.d.ts.map +1 -1
  71. package/dist/hooks/use-auth.js +30 -26
  72. package/dist/hooks/use-auth.js.map +1 -1
  73. package/dist/hooks/use-client.cjs +9 -1
  74. package/dist/hooks/use-client.cjs.map +1 -1
  75. package/dist/hooks/use-client.d.ts +1 -1
  76. package/dist/hooks/use-client.d.ts.map +1 -1
  77. package/dist/hooks/use-client.js +6 -5
  78. package/dist/hooks/use-client.js.map +1 -1
  79. package/dist/hooks/use-members.cjs +60 -1
  80. package/dist/hooks/use-members.cjs.map +1 -1
  81. package/dist/hooks/use-members.js +53 -41
  82. package/dist/hooks/use-members.js.map +1 -1
  83. package/dist/hooks/use-store.cjs +17 -1
  84. package/dist/hooks/use-store.cjs.map +1 -1
  85. package/dist/hooks/use-store.js +7 -7
  86. package/dist/hooks/use-store.js.map +1 -1
  87. package/dist/index.cjs +37 -1
  88. package/dist/index.cjs.map +1 -1
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +35 -35
  92. package/dist/lib/utils.cjs +8 -1
  93. package/dist/lib/utils.cjs.map +1 -1
  94. package/dist/lib/utils.js +5 -5
  95. package/dist/lib/utils.js.map +1 -1
  96. package/dist/lib/variants.cjs +46 -1
  97. package/dist/lib/variants.cjs.map +1 -1
  98. package/dist/lib/variants.js +6 -5
  99. package/dist/lib/variants.js.map +1 -1
  100. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.cjs +721 -1
  101. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.cjs.map +1 -1
  102. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +571 -377
  103. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -1
  104. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs +625 -1
  105. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs.map +1 -1
  106. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +539 -316
  107. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -1
  108. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs +313 -1
  109. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.map +1 -1
  110. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +261 -172
  111. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +1 -1
  112. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs +154 -1
  113. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs.map +1 -1
  114. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs +173 -1
  115. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs.map +1 -1
  116. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +144 -107
  117. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -1
  118. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +111 -87
  119. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -1
  120. package/dist/node_modules/@radix-ui/primitive/dist/index.cjs +11 -1
  121. package/dist/node_modules/@radix-ui/primitive/dist/index.cjs.map +1 -1
  122. package/dist/node_modules/@radix-ui/primitive/dist/index.js +7 -5
  123. package/dist/node_modules/@radix-ui/primitive/dist/index.js.map +1 -1
  124. package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs +42 -1
  125. package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs.map +1 -1
  126. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js +17 -16
  127. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js.map +1 -1
  128. package/dist/node_modules/@radix-ui/react-avatar/dist/index.cjs +140 -1
  129. package/dist/node_modules/@radix-ui/react-avatar/dist/index.cjs.map +1 -1
  130. package/dist/node_modules/@radix-ui/react-avatar/dist/index.js +105 -57
  131. package/dist/node_modules/@radix-ui/react-avatar/dist/index.js.map +1 -1
  132. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.cjs +80 -1
  133. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -1
  134. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.js +49 -41
  135. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.js.map +1 -1
  136. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.cjs +56 -1
  137. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -1
  138. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.js +17 -10
  139. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -1
  140. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-slot/dist/index.cjs +119 -1
  141. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -1
  142. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-slot/dist/index.js +86 -42
  143. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -1
  144. package/dist/node_modules/@radix-ui/react-collection/dist/index.cjs +70 -1
  145. package/dist/node_modules/@radix-ui/react-collection/dist/index.cjs.map +1 -1
  146. package/dist/node_modules/@radix-ui/react-collection/dist/index.js +57 -37
  147. package/dist/node_modules/@radix-ui/react-collection/dist/index.js.map +1 -1
  148. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +56 -1
  149. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -1
  150. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +29 -19
  151. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +1 -1
  152. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs +79 -1
  153. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -1
  154. package/dist/node_modules/@radix-ui/react-context/dist/index.js +48 -39
  155. package/dist/node_modules/@radix-ui/react-context/dist/index.js.map +1 -1
  156. package/dist/node_modules/@radix-ui/react-direction/dist/index.cjs +27 -1
  157. package/dist/node_modules/@radix-ui/react-direction/dist/index.cjs.map +1 -1
  158. package/dist/node_modules/@radix-ui/react-direction/dist/index.js +6 -6
  159. package/dist/node_modules/@radix-ui/react-direction/dist/index.js.map +1 -1
  160. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs +229 -1
  161. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs.map +1 -1
  162. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +182 -97
  163. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +1 -1
  164. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.cjs +296 -1
  165. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.cjs.map +1 -1
  166. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.js +232 -167
  167. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.js.map +1 -1
  168. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs +46 -1
  169. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs.map +1 -1
  170. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +23 -11
  171. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +1 -1
  172. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs +224 -1
  173. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs.map +1 -1
  174. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +169 -98
  175. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +1 -1
  176. package/dist/node_modules/@radix-ui/react-id/dist/index.cjs +31 -1
  177. package/dist/node_modules/@radix-ui/react-id/dist/index.cjs.map +1 -1
  178. package/dist/node_modules/@radix-ui/react-id/dist/index.js +11 -10
  179. package/dist/node_modules/@radix-ui/react-id/dist/index.js.map +1 -1
  180. package/dist/node_modules/@radix-ui/react-menu/dist/index.cjs +845 -1
  181. package/dist/node_modules/@radix-ui/react-menu/dist/index.cjs.map +1 -1
  182. package/dist/node_modules/@radix-ui/react-menu/dist/index.js +662 -442
  183. package/dist/node_modules/@radix-ui/react-menu/dist/index.js.map +1 -1
  184. package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs +308 -1
  185. package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs.map +1 -1
  186. package/dist/node_modules/@radix-ui/react-popper/dist/index.js +209 -137
  187. package/dist/node_modules/@radix-ui/react-popper/dist/index.js.map +1 -1
  188. package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs +34 -1
  189. package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs.map +1 -1
  190. package/dist/node_modules/@radix-ui/react-portal/dist/index.js +14 -12
  191. package/dist/node_modules/@radix-ui/react-portal/dist/index.js.map +1 -1
  192. package/dist/node_modules/@radix-ui/react-presence/dist/index.cjs +145 -1
  193. package/dist/node_modules/@radix-ui/react-presence/dist/index.cjs.map +1 -1
  194. package/dist/node_modules/@radix-ui/react-presence/dist/index.js +103 -45
  195. package/dist/node_modules/@radix-ui/react-presence/dist/index.js.map +1 -1
  196. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs +61 -1
  197. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -1
  198. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js +21 -14
  199. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -1
  200. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.cjs +244 -1
  201. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.cjs.map +1 -1
  202. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js +179 -135
  203. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +1 -1
  204. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs +105 -1
  205. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -1
  206. package/dist/node_modules/@radix-ui/react-slot/dist/index.js +74 -35
  207. package/dist/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -1
  208. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs +28 -1
  209. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs.map +1 -1
  210. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +8 -7
  211. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +1 -1
  212. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs +86 -1
  213. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs.map +1 -1
  214. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +57 -40
  215. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +1 -1
  216. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.cjs +34 -1
  217. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.cjs.map +1 -1
  218. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +13 -10
  219. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +1 -1
  220. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.cjs +15 -1
  221. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.cjs.map +1 -1
  222. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.js +8 -8
  223. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.js.map +1 -1
  224. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs +23 -1
  225. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs.map +1 -1
  226. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +3 -3
  227. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +1 -1
  228. package/dist/node_modules/@radix-ui/react-use-size/dist/index.cjs +56 -1
  229. package/dist/node_modules/@radix-ui/react-use-size/dist/index.cjs.map +1 -1
  230. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js +34 -22
  231. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js.map +1 -1
  232. package/dist/node_modules/aria-hidden/dist/es2015/index.cjs +122 -1
  233. package/dist/node_modules/aria-hidden/dist/es2015/index.cjs.map +1 -1
  234. package/dist/node_modules/aria-hidden/dist/es2015/index.js +111 -41
  235. package/dist/node_modules/aria-hidden/dist/es2015/index.js.map +1 -1
  236. package/dist/node_modules/class-variance-authority/dist/index.cjs +45 -1
  237. package/dist/node_modules/class-variance-authority/dist/index.cjs.map +1 -1
  238. package/dist/node_modules/class-variance-authority/dist/index.js +40 -30
  239. package/dist/node_modules/class-variance-authority/dist/index.js.map +1 -1
  240. package/dist/node_modules/clsx/dist/clsx.cjs +17 -1
  241. package/dist/node_modules/clsx/dist/clsx.cjs.map +1 -1
  242. package/dist/node_modules/clsx/dist/clsx.js +13 -13
  243. package/dist/node_modules/clsx/dist/clsx.js.map +1 -1
  244. package/dist/node_modules/get-nonce/dist/es2015/index.cjs +9 -1
  245. package/dist/node_modules/get-nonce/dist/es2015/index.cjs.map +1 -1
  246. package/dist/node_modules/get-nonce/dist/es2015/index.js +5 -3
  247. package/dist/node_modules/get-nonce/dist/es2015/index.js.map +1 -1
  248. package/dist/node_modules/js-cookie/dist/js.cookie.cjs +98 -1
  249. package/dist/node_modules/js-cookie/dist/js.cookie.cjs.map +1 -1
  250. package/dist/node_modules/js-cookie/dist/js.cookie.js +69 -43
  251. package/dist/node_modules/js-cookie/dist/js.cookie.js.map +1 -1
  252. package/dist/node_modules/jwt-decode/build/esm/index.cjs +58 -1
  253. package/dist/node_modules/jwt-decode/build/esm/index.cjs.map +1 -1
  254. package/dist/node_modules/jwt-decode/build/esm/index.js +36 -30
  255. package/dist/node_modules/jwt-decode/build/esm/index.js.map +1 -1
  256. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +34 -1
  257. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs.map +1 -1
  258. package/dist/node_modules/lucide-react/dist/esm/Icon.js +25 -25
  259. package/dist/node_modules/lucide-react/dist/esm/Icon.js.map +1 -1
  260. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +21 -1
  261. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs.map +1 -1
  262. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js +16 -15
  263. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js.map +1 -1
  264. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs +13 -1
  265. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs.map +1 -1
  266. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js +2 -2
  267. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js.map +1 -1
  268. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +7 -1
  269. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs.map +1 -1
  270. package/dist/node_modules/lucide-react/dist/esm/icons/check.js +5 -4
  271. package/dist/node_modules/lucide-react/dist/esm/icons/check.js.map +1 -1
  272. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +7 -1
  273. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs.map +1 -1
  274. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js +5 -4
  275. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js.map +1 -1
  276. package/dist/node_modules/lucide-react/dist/esm/icons/circle.cjs +7 -1
  277. package/dist/node_modules/lucide-react/dist/esm/icons/circle.cjs.map +1 -1
  278. package/dist/node_modules/lucide-react/dist/esm/icons/circle.js +5 -4
  279. package/dist/node_modules/lucide-react/dist/esm/icons/circle.js.map +1 -1
  280. package/dist/node_modules/lucide-react/dist/esm/icons/log-out.cjs +11 -1
  281. package/dist/node_modules/lucide-react/dist/esm/icons/log-out.cjs.map +1 -1
  282. package/dist/node_modules/lucide-react/dist/esm/icons/log-out.js +6 -5
  283. package/dist/node_modules/lucide-react/dist/esm/icons/log-out.js.map +1 -1
  284. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.cjs +26 -1
  285. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.cjs.map +1 -1
  286. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js +22 -14
  287. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js.map +1 -1
  288. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.cjs +27 -1
  289. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.cjs.map +1 -1
  290. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js +8 -8
  291. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js.map +1 -1
  292. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs +197 -4
  293. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs.map +1 -1
  294. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +163 -98
  295. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js.map +1 -1
  296. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.cjs +55 -1
  297. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.cjs.map +1 -1
  298. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js +31 -24
  299. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js.map +1 -1
  300. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.cjs +19 -1
  301. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.cjs.map +1 -1
  302. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +12 -9
  303. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js.map +1 -1
  304. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.cjs +102 -1
  305. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.cjs.map +1 -1
  306. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +85 -51
  307. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js.map +1 -1
  308. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.cjs +5 -1
  309. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.cjs.map +1 -1
  310. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js +3 -3
  311. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js.map +1 -1
  312. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.cjs +6 -1
  313. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.cjs.map +1 -1
  314. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js +5 -5
  315. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js.map +1 -1
  316. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.cjs +62 -36
  317. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.cjs.map +1 -1
  318. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js +41 -65
  319. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js.map +1 -1
  320. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.cjs +10 -1
  321. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.cjs.map +1 -1
  322. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +8 -5
  323. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js.map +1 -1
  324. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.cjs +37 -1
  325. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.cjs.map +1 -1
  326. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +28 -16
  327. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js.map +1 -1
  328. package/dist/node_modules/react-style-singleton/dist/es2015/component.cjs +13 -1
  329. package/dist/node_modules/react-style-singleton/dist/es2015/component.cjs.map +1 -1
  330. package/dist/node_modules/react-style-singleton/dist/es2015/component.js +9 -7
  331. package/dist/node_modules/react-style-singleton/dist/es2015/component.js.map +1 -1
  332. package/dist/node_modules/react-style-singleton/dist/es2015/hook.cjs +33 -1
  333. package/dist/node_modules/react-style-singleton/dist/es2015/hook.cjs.map +1 -1
  334. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js +11 -10
  335. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js.map +1 -1
  336. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.cjs +48 -1
  337. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.cjs.map +1 -1
  338. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js +35 -17
  339. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js.map +1 -1
  340. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +3014 -1
  341. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.map +1 -1
  342. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +804 -555
  343. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -1
  344. package/dist/node_modules/tailwindcss/dist/plugin.cjs +12 -1
  345. package/dist/node_modules/tailwindcss/dist/plugin.cjs.map +1 -1
  346. package/dist/node_modules/tailwindcss/dist/plugin.js +8 -8
  347. package/dist/node_modules/tailwindcss/dist/plugin.js.map +1 -1
  348. package/dist/node_modules/tslib/tslib.es6.cjs +38 -1
  349. package/dist/node_modules/tslib/tslib.es6.cjs.map +1 -1
  350. package/dist/node_modules/tslib/tslib.es6.js +33 -21
  351. package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
  352. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.cjs +11 -1
  353. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.cjs.map +1 -1
  354. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js +8 -3
  355. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js.map +1 -1
  356. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.cjs +52 -1
  357. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.cjs.map +1 -1
  358. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +28 -19
  359. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js.map +1 -1
  360. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.cjs +29 -1
  361. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.cjs.map +1 -1
  362. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js +15 -11
  363. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js.map +1 -1
  364. package/dist/node_modules/use-sidecar/dist/es2015/exports.cjs +38 -1
  365. package/dist/node_modules/use-sidecar/dist/es2015/exports.cjs.map +1 -1
  366. package/dist/node_modules/use-sidecar/dist/es2015/exports.js +15 -12
  367. package/dist/node_modules/use-sidecar/dist/es2015/exports.js.map +1 -1
  368. package/dist/node_modules/use-sidecar/dist/es2015/medium.cjs +88 -1
  369. package/dist/node_modules/use-sidecar/dist/es2015/medium.cjs.map +1 -1
  370. package/dist/node_modules/use-sidecar/dist/es2015/medium.js +64 -43
  371. package/dist/node_modules/use-sidecar/dist/es2015/medium.js.map +1 -1
  372. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +68 -1
  373. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.map +1 -1
  374. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +49 -39
  375. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  376. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.cjs +53 -1
  377. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.cjs.map +1 -1
  378. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +39 -32
  379. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +1 -1
  380. package/dist/node_modules/use-sync-external-store/shim/index.cjs +17 -1
  381. package/dist/node_modules/use-sync-external-store/shim/index.cjs.map +1 -1
  382. package/dist/node_modules/use-sync-external-store/shim/index.js +14 -7
  383. package/dist/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  384. package/dist/providers/auth/auth.context.cjs +5 -1
  385. package/dist/providers/auth/auth.context.cjs.map +1 -1
  386. package/dist/providers/auth/auth.context.js +3 -3
  387. package/dist/providers/auth/auth.context.js.map +1 -1
  388. package/dist/providers/auth/auth.hook.cjs +12 -1
  389. package/dist/providers/auth/auth.hook.cjs.map +1 -1
  390. package/dist/providers/auth/auth.hook.js +8 -7
  391. package/dist/providers/auth/auth.hook.js.map +1 -1
  392. package/dist/providers/auth/auth.provider.cjs +37 -1
  393. package/dist/providers/auth/auth.provider.cjs.map +1 -1
  394. package/dist/providers/auth/auth.provider.js +31 -22
  395. package/dist/providers/auth/auth.provider.js.map +1 -1
  396. package/dist/providers/blimu/blimu.context.cjs +5 -1
  397. package/dist/providers/blimu/blimu.context.cjs.map +1 -1
  398. package/dist/providers/blimu/blimu.context.js +3 -3
  399. package/dist/providers/blimu/blimu.context.js.map +1 -1
  400. package/dist/providers/blimu/blimu.hook.cjs +12 -1
  401. package/dist/providers/blimu/blimu.hook.cjs.map +1 -1
  402. package/dist/providers/blimu/blimu.hook.js +8 -7
  403. package/dist/providers/blimu/blimu.hook.js.map +1 -1
  404. package/dist/providers/blimu/blimu.provider.cjs +71 -1
  405. package/dist/providers/blimu/blimu.provider.cjs.map +1 -1
  406. package/dist/providers/blimu/blimu.provider.js +32 -27
  407. package/dist/providers/blimu/blimu.provider.js.map +1 -1
  408. package/dist/providers/index.cjs +13 -0
  409. package/dist/providers/index.cjs.map +1 -0
  410. package/dist/providers/index.js +13 -0
  411. package/dist/providers/index.js.map +1 -0
  412. package/dist/providers/theme/theme.context.cjs +5 -1
  413. package/dist/providers/theme/theme.context.cjs.map +1 -1
  414. package/dist/providers/theme/theme.context.js +3 -3
  415. package/dist/providers/theme/theme.context.js.map +1 -1
  416. package/dist/providers/theme/theme.hook.cjs +12 -1
  417. package/dist/providers/theme/theme.hook.cjs.map +1 -1
  418. package/dist/providers/theme/theme.hook.js +8 -7
  419. package/dist/providers/theme/theme.hook.js.map +1 -1
  420. package/dist/providers/theme/theme.provider.cjs +104 -1
  421. package/dist/providers/theme/theme.provider.cjs.map +1 -1
  422. package/dist/providers/theme/theme.provider.js +85 -48
  423. package/dist/providers/theme/theme.provider.js.map +1 -1
  424. package/dist/tailwind.cjs +200 -0
  425. package/dist/tailwind.cjs.map +1 -0
  426. package/dist/{tailwind.plugin.js → tailwind.js} +6 -6
  427. package/dist/tailwind.js.map +1 -0
  428. package/dist/types/index.cjs +11 -1
  429. package/dist/types/index.cjs.map +1 -1
  430. package/dist/types/index.js +8 -8
  431. package/dist/types/index.js.map +1 -1
  432. package/dist/utils/publishable-key.cjs +62 -1
  433. package/dist/utils/publishable-key.cjs.map +1 -1
  434. package/dist/utils/publishable-key.js +52 -27
  435. package/dist/utils/publishable-key.js.map +1 -1
  436. package/package.json +41 -42
  437. package/dist/components.cjs +0 -2
  438. package/dist/components.cjs.map +0 -1
  439. package/dist/components.js +0 -13
  440. package/dist/components.js.map +0 -1
  441. package/dist/hooks.cjs +0 -2
  442. package/dist/hooks.cjs.map +0 -1
  443. package/dist/hooks.js +0 -14
  444. package/dist/hooks.js.map +0 -1
  445. package/dist/providers.cjs +0 -2
  446. package/dist/providers.cjs.map +0 -1
  447. package/dist/providers.js +0 -13
  448. package/dist/providers.js.map +0 -1
  449. package/dist/tailwind.plugin.cjs +0 -2
  450. package/dist/tailwind.plugin.cjs.map +0 -1
  451. package/dist/tailwind.plugin.js.map +0 -1
@@ -1,2 +1,105 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react/jsx-runtime"),s=require("react"),v=require("./theme.context.cjs");function y({children:o,defaultTheme:m="system",storageKey:u="blimu-theme",autoDetect:f=!0}){const[e,h]=s.useState(()=>typeof window>"u"?m:localStorage.getItem(u)||m),[i,d]=s.useState(()=>typeof window>"u"?"light":E(e));s.useEffect(()=>{if(typeof window>"u")return;const t=window.document.documentElement;if(t.classList.remove("light","dark"),e==="system"){const n=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";t.classList.add(n),d(n);return}t.classList.add(e),d(e)},[e]),s.useEffect(()=>{typeof window>"u"||localStorage.setItem(u,e)},[e,u]),s.useEffect(()=>{if(!f||typeof window>"u")return;const t=new MutationObserver(n=>{n.forEach(a=>{if(a.attributeName==="class"){const r=document.documentElement.classList.contains("dark"),c=document.documentElement.classList.contains("light");if(r||c){const l=r?"dark":"light";i!==l&&d(l)}}})});return t.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>t.disconnect()},[f,i]),s.useEffect(()=>{if(e!=="system"||typeof window>"u")return;const t=window.matchMedia("(prefers-color-scheme: dark)"),n=a=>{const r=window.document.documentElement;r.classList.remove("light","dark");const c=a.matches?"dark":"light";r.classList.add(c),d(c)};return t.addEventListener("change",n),()=>t.removeEventListener("change",n)},[e]);const w=s.useMemo(()=>({theme:e,setTheme:h,resolvedTheme:i}),[e,i]);return g.jsx(v.ThemeContext.Provider,{value:w,children:o})}function E(o){return o==="system"?typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":o}exports.ThemeProvider=y;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const theme_context = require("./theme.context.cjs");
6
+ function ThemeProvider({
7
+ children,
8
+ defaultTheme = "system",
9
+ storageKey = "blimu-theme",
10
+ autoDetect = true
11
+ }) {
12
+ const [theme, setTheme] = React.useState(() => {
13
+ if (typeof window === "undefined") {
14
+ return defaultTheme;
15
+ }
16
+ const stored = localStorage.getItem(storageKey);
17
+ return stored || defaultTheme;
18
+ });
19
+ const [resolvedTheme, setResolvedTheme] = React.useState(() => {
20
+ if (typeof window === "undefined") {
21
+ return "light";
22
+ }
23
+ return getResolvedTheme(theme);
24
+ });
25
+ React.useEffect(() => {
26
+ if (typeof window === "undefined") {
27
+ return;
28
+ }
29
+ const root = window.document.documentElement;
30
+ root.classList.remove("light", "dark");
31
+ if (theme === "system") {
32
+ const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
33
+ root.classList.add(systemTheme);
34
+ setResolvedTheme(systemTheme);
35
+ return;
36
+ }
37
+ root.classList.add(theme);
38
+ setResolvedTheme(theme);
39
+ }, [theme]);
40
+ React.useEffect(() => {
41
+ if (typeof window === "undefined") {
42
+ return;
43
+ }
44
+ localStorage.setItem(storageKey, theme);
45
+ }, [theme, storageKey]);
46
+ React.useEffect(() => {
47
+ if (!autoDetect || typeof window === "undefined") {
48
+ return;
49
+ }
50
+ const observer = new MutationObserver((mutations) => {
51
+ mutations.forEach((mutation) => {
52
+ if (mutation.attributeName === "class") {
53
+ const isDark = document.documentElement.classList.contains("dark");
54
+ const isLight = document.documentElement.classList.contains("light");
55
+ if (isDark || isLight) {
56
+ const detectedTheme = isDark ? "dark" : "light";
57
+ if (resolvedTheme !== detectedTheme) {
58
+ setResolvedTheme(detectedTheme);
59
+ }
60
+ }
61
+ }
62
+ });
63
+ });
64
+ observer.observe(document.documentElement, {
65
+ attributes: true,
66
+ attributeFilter: ["class"]
67
+ });
68
+ return () => observer.disconnect();
69
+ }, [autoDetect, resolvedTheme]);
70
+ React.useEffect(() => {
71
+ if (theme !== "system" || typeof window === "undefined") {
72
+ return;
73
+ }
74
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
75
+ const handleChange = (e) => {
76
+ const root = window.document.documentElement;
77
+ root.classList.remove("light", "dark");
78
+ const systemTheme = e.matches ? "dark" : "light";
79
+ root.classList.add(systemTheme);
80
+ setResolvedTheme(systemTheme);
81
+ };
82
+ mediaQuery.addEventListener("change", handleChange);
83
+ return () => mediaQuery.removeEventListener("change", handleChange);
84
+ }, [theme]);
85
+ const value = React.useMemo(
86
+ () => ({
87
+ theme,
88
+ setTheme,
89
+ resolvedTheme
90
+ }),
91
+ [theme, resolvedTheme]
92
+ );
93
+ return /* @__PURE__ */ jsxRuntime.jsx(theme_context.ThemeContext.Provider, { value, children });
94
+ }
95
+ function getResolvedTheme(theme) {
96
+ if (theme === "system") {
97
+ if (typeof window === "undefined") {
98
+ return "light";
99
+ }
100
+ return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
101
+ }
102
+ return theme;
103
+ }
104
+ exports.ThemeProvider = ThemeProvider;
2
105
  //# sourceMappingURL=theme.provider.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.provider.cjs","sources":["../../../src/providers/theme/theme.provider.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\n\nimport type { Theme, ThemeContextValue } from './theme.context';\nimport { ThemeContext } from './theme.context';\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n /**\n * Whether to automatically detect and sync with parent app's theme\n * @default true\n */\n autoDetect?: boolean;\n}\n\n/**\n * ThemeProvider component that manages theme state and syncs with system preferences\n *\n * Supports automatic detection of parent app's theme (e.g., next-themes) via\n * MutationObserver watching for class changes on the document element.\n *\n * @example\n * ```tsx\n * <ThemeProvider defaultTheme=\"system\" storageKey=\"my-app-theme\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'blimu-theme',\n autoDetect = true,\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n const stored = localStorage.getItem(storageKey) as Theme | null;\n return stored || defaultTheme;\n });\n\n const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>(() => {\n if (typeof window === 'undefined') {\n return 'light';\n }\n return getResolvedTheme(theme);\n });\n\n // Apply theme to document\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n const root = window.document.documentElement;\n root.classList.remove('light', 'dark');\n\n if (theme === 'system') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n root.classList.add(systemTheme);\n setResolvedTheme(systemTheme);\n return;\n }\n\n root.classList.add(theme);\n setResolvedTheme(theme);\n }, [theme]);\n\n // Persist theme to localStorage\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n localStorage.setItem(storageKey, theme);\n }, [theme, storageKey]);\n\n // Auto-detect parent app's theme changes (e.g., next-themes)\n useEffect(() => {\n if (!autoDetect || typeof window === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'class') {\n const isDark = document.documentElement.classList.contains('dark');\n const isLight = document.documentElement.classList.contains('light');\n\n // Only sync if parent app has explicitly set a theme class\n if (isDark || isLight) {\n const detectedTheme = isDark ? 'dark' : 'light';\n if (resolvedTheme !== detectedTheme) {\n setResolvedTheme(detectedTheme);\n }\n }\n }\n });\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, [autoDetect, resolvedTheme]);\n\n // Listen to system theme changes when theme is 'system'\n useEffect(() => {\n if (theme !== 'system' || typeof window === 'undefined') {\n return;\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = (e: MediaQueryListEvent) => {\n const root = window.document.documentElement;\n root.classList.remove('light', 'dark');\n const systemTheme = e.matches ? 'dark' : 'light';\n root.classList.add(systemTheme);\n setResolvedTheme(systemTheme);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [theme]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n theme,\n setTheme,\n resolvedTheme,\n }),\n [theme, resolvedTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * Get the resolved theme (light or dark) from a Theme value\n */\nfunction getResolvedTheme(theme: Theme): 'light' | 'dark' {\n if (theme === 'system') {\n if (typeof window === 'undefined') {\n return 'light';\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n return theme;\n}\n"],"names":["ThemeProvider","children","defaultTheme","storageKey","autoDetect","theme","setTheme","useState","resolvedTheme","setResolvedTheme","getResolvedTheme","useEffect","root","systemTheme","observer","mutations","mutation","isDark","isLight","detectedTheme","mediaQuery","handleChange","e","value","useMemo","jsx","ThemeContext"],"mappings":"yKA6BO,SAASA,EAAc,CAC5B,SAAAC,EACA,aAAAC,EAAe,SACf,WAAAC,EAAa,cACb,WAAAC,EAAa,EACf,EAAuB,CACrB,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAgB,IACpC,OAAO,OAAW,IACbL,EAEM,aAAa,QAAQC,CAAU,GAC7BD,CAClB,EAEK,CAACM,EAAeC,CAAgB,EAAIF,EAAAA,SAA2B,IAC/D,OAAO,OAAW,IACb,QAEFG,EAAiBL,CAAK,CAC9B,EAGDM,EAAAA,UAAU,IAAM,CACd,GAAI,OAAO,OAAW,IACpB,OAGF,MAAMC,EAAO,OAAO,SAAS,gBAG7B,GAFAA,EAAK,UAAU,OAAO,QAAS,MAAM,EAEjCP,IAAU,SAAU,CACtB,MAAMQ,EAAc,OAAO,WAAW,8BAA8B,EAAE,QAClE,OACA,QACJD,EAAK,UAAU,IAAIC,CAAW,EAC9BJ,EAAiBI,CAAW,EAC5B,MACF,CAEAD,EAAK,UAAU,IAAIP,CAAK,EACxBI,EAAiBJ,CAAK,CACxB,EAAG,CAACA,CAAK,CAAC,EAGVM,EAAAA,UAAU,IAAM,CACV,OAAO,OAAW,KAGtB,aAAa,QAAQR,EAAYE,CAAK,CACxC,EAAG,CAACA,EAAOF,CAAU,CAAC,EAGtBQ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACP,GAAc,OAAO,OAAW,IACnC,OAGF,MAAMU,EAAW,IAAI,iBAAkBC,GAAc,CACnDA,EAAU,QAASC,GAAa,CAC9B,GAAIA,EAAS,gBAAkB,QAAS,CACtC,MAAMC,EAAS,SAAS,gBAAgB,UAAU,SAAS,MAAM,EAC3DC,EAAU,SAAS,gBAAgB,UAAU,SAAS,OAAO,EAGnE,GAAID,GAAUC,EAAS,CACrB,MAAMC,EAAgBF,EAAS,OAAS,QACpCT,IAAkBW,GACpBV,EAAiBU,CAAa,CAElC,CACF,CACF,CAAC,CACH,CAAC,EAED,OAAAL,EAAS,QAAQ,SAAS,gBAAiB,CACzC,WAAY,GACZ,gBAAiB,CAAC,OAAO,CAAA,CAC1B,EAEM,IAAMA,EAAS,WAAA,CACxB,EAAG,CAACV,EAAYI,CAAa,CAAC,EAG9BG,EAAAA,UAAU,IAAM,CACd,GAAIN,IAAU,UAAY,OAAO,OAAW,IAC1C,OAGF,MAAMe,EAAa,OAAO,WAAW,8BAA8B,EAC7DC,EAAgBC,GAA2B,CAC/C,MAAMV,EAAO,OAAO,SAAS,gBAC7BA,EAAK,UAAU,OAAO,QAAS,MAAM,EACrC,MAAMC,EAAcS,EAAE,QAAU,OAAS,QACzCV,EAAK,UAAU,IAAIC,CAAW,EAC9BJ,EAAiBI,CAAW,CAC9B,EAEA,OAAAO,EAAW,iBAAiB,SAAUC,CAAY,EAC3C,IAAMD,EAAW,oBAAoB,SAAUC,CAAY,CACpE,EAAG,CAAChB,CAAK,CAAC,EAEV,MAAMkB,EAAQC,EAAAA,QACZ,KAAO,CACL,MAAAnB,EACA,SAAAC,EACA,cAAAE,CAAA,GAEF,CAACH,EAAOG,CAAa,CAAA,EAGvB,OAAOiB,EAAAA,IAACC,EAAAA,aAAa,SAAb,CAAsB,MAAAH,EAAe,SAAAtB,CAAA,CAAS,CACxD,CAKA,SAASS,EAAiBL,EAAgC,CACxD,OAAIA,IAAU,SACR,OAAO,OAAW,IACb,QAEF,OAAO,WAAW,8BAA8B,EAAE,QAAU,OAAS,QAEvEA,CACT"}
1
+ {"version":3,"file":"theme.provider.cjs","sources":["../../../src/providers/theme/theme.provider.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\n\nimport type { Theme, ThemeContextValue } from './theme.context';\nimport { ThemeContext } from './theme.context';\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n /**\n * Whether to automatically detect and sync with parent app's theme\n * @default true\n */\n autoDetect?: boolean;\n}\n\n/**\n * ThemeProvider component that manages theme state and syncs with system preferences\n *\n * Supports automatic detection of parent app's theme (e.g., next-themes) via\n * MutationObserver watching for class changes on the document element.\n *\n * @example\n * ```tsx\n * <ThemeProvider defaultTheme=\"system\" storageKey=\"my-app-theme\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'blimu-theme',\n autoDetect = true,\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n const stored = localStorage.getItem(storageKey) as Theme | null;\n return stored || defaultTheme;\n });\n\n const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>(() => {\n if (typeof window === 'undefined') {\n return 'light';\n }\n return getResolvedTheme(theme);\n });\n\n // Apply theme to document\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n const root = window.document.documentElement;\n root.classList.remove('light', 'dark');\n\n if (theme === 'system') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n root.classList.add(systemTheme);\n setResolvedTheme(systemTheme);\n return;\n }\n\n root.classList.add(theme);\n setResolvedTheme(theme);\n }, [theme]);\n\n // Persist theme to localStorage\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n localStorage.setItem(storageKey, theme);\n }, [theme, storageKey]);\n\n // Auto-detect parent app's theme changes (e.g., next-themes)\n useEffect(() => {\n if (!autoDetect || typeof window === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'class') {\n const isDark = document.documentElement.classList.contains('dark');\n const isLight = document.documentElement.classList.contains('light');\n\n // Only sync if parent app has explicitly set a theme class\n if (isDark || isLight) {\n const detectedTheme = isDark ? 'dark' : 'light';\n if (resolvedTheme !== detectedTheme) {\n setResolvedTheme(detectedTheme);\n }\n }\n }\n });\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, [autoDetect, resolvedTheme]);\n\n // Listen to system theme changes when theme is 'system'\n useEffect(() => {\n if (theme !== 'system' || typeof window === 'undefined') {\n return;\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = (e: MediaQueryListEvent) => {\n const root = window.document.documentElement;\n root.classList.remove('light', 'dark');\n const systemTheme = e.matches ? 'dark' : 'light';\n root.classList.add(systemTheme);\n setResolvedTheme(systemTheme);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [theme]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n theme,\n setTheme,\n resolvedTheme,\n }),\n [theme, resolvedTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * Get the resolved theme (light or dark) from a Theme value\n */\nfunction getResolvedTheme(theme: Theme): 'light' | 'dark' {\n if (theme === 'system') {\n if (typeof window === 'undefined') {\n return 'light';\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n return theme;\n}\n"],"names":["useState","useEffect","useMemo","jsx","ThemeContext"],"mappings":"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"}
@@ -1,68 +1,105 @@
1
- import { jsx as p } from "react/jsx-runtime";
2
- import { useState as h, useEffect as c, useMemo as v } from "react";
3
- import { ThemeContext as y } from "./theme.context.js";
4
- function b({
5
- children: o,
6
- defaultTheme: u = "system",
7
- storageKey: m = "blimu-theme",
8
- autoDetect: f = !0
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect, useMemo } from "react";
3
+ import { ThemeContext } from "./theme.context.js";
4
+ function ThemeProvider({
5
+ children,
6
+ defaultTheme = "system",
7
+ storageKey = "blimu-theme",
8
+ autoDetect = true
9
9
  }) {
10
- const [e, w] = h(() => typeof window > "u" ? u : localStorage.getItem(m) || u), [s, i] = h(() => typeof window > "u" ? "light" : k(e));
11
- c(() => {
12
- if (typeof window > "u")
10
+ const [theme, setTheme] = useState(() => {
11
+ if (typeof window === "undefined") {
12
+ return defaultTheme;
13
+ }
14
+ const stored = localStorage.getItem(storageKey);
15
+ return stored || defaultTheme;
16
+ });
17
+ const [resolvedTheme, setResolvedTheme] = useState(() => {
18
+ if (typeof window === "undefined") {
19
+ return "light";
20
+ }
21
+ return getResolvedTheme(theme);
22
+ });
23
+ useEffect(() => {
24
+ if (typeof window === "undefined") {
13
25
  return;
14
- const t = window.document.documentElement;
15
- if (t.classList.remove("light", "dark"), e === "system") {
16
- const n = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
17
- t.classList.add(n), i(n);
26
+ }
27
+ const root = window.document.documentElement;
28
+ root.classList.remove("light", "dark");
29
+ if (theme === "system") {
30
+ const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
31
+ root.classList.add(systemTheme);
32
+ setResolvedTheme(systemTheme);
33
+ return;
34
+ }
35
+ root.classList.add(theme);
36
+ setResolvedTheme(theme);
37
+ }, [theme]);
38
+ useEffect(() => {
39
+ if (typeof window === "undefined") {
18
40
  return;
19
41
  }
20
- t.classList.add(e), i(e);
21
- }, [e]), c(() => {
22
- typeof window > "u" || localStorage.setItem(m, e);
23
- }, [e, m]), c(() => {
24
- if (!f || typeof window > "u")
42
+ localStorage.setItem(storageKey, theme);
43
+ }, [theme, storageKey]);
44
+ useEffect(() => {
45
+ if (!autoDetect || typeof window === "undefined") {
25
46
  return;
26
- const t = new MutationObserver((n) => {
27
- n.forEach((a) => {
28
- if (a.attributeName === "class") {
29
- const r = document.documentElement.classList.contains("dark"), d = document.documentElement.classList.contains("light");
30
- if (r || d) {
31
- const l = r ? "dark" : "light";
32
- s !== l && i(l);
47
+ }
48
+ const observer = new MutationObserver((mutations) => {
49
+ mutations.forEach((mutation) => {
50
+ if (mutation.attributeName === "class") {
51
+ const isDark = document.documentElement.classList.contains("dark");
52
+ const isLight = document.documentElement.classList.contains("light");
53
+ if (isDark || isLight) {
54
+ const detectedTheme = isDark ? "dark" : "light";
55
+ if (resolvedTheme !== detectedTheme) {
56
+ setResolvedTheme(detectedTheme);
57
+ }
33
58
  }
34
59
  }
35
60
  });
36
61
  });
37
- return t.observe(document.documentElement, {
38
- attributes: !0,
62
+ observer.observe(document.documentElement, {
63
+ attributes: true,
39
64
  attributeFilter: ["class"]
40
- }), () => t.disconnect();
41
- }, [f, s]), c(() => {
42
- if (e !== "system" || typeof window > "u")
65
+ });
66
+ return () => observer.disconnect();
67
+ }, [autoDetect, resolvedTheme]);
68
+ useEffect(() => {
69
+ if (theme !== "system" || typeof window === "undefined") {
43
70
  return;
44
- const t = window.matchMedia("(prefers-color-scheme: dark)"), n = (a) => {
45
- const r = window.document.documentElement;
46
- r.classList.remove("light", "dark");
47
- const d = a.matches ? "dark" : "light";
48
- r.classList.add(d), i(d);
71
+ }
72
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
73
+ const handleChange = (e) => {
74
+ const root = window.document.documentElement;
75
+ root.classList.remove("light", "dark");
76
+ const systemTheme = e.matches ? "dark" : "light";
77
+ root.classList.add(systemTheme);
78
+ setResolvedTheme(systemTheme);
49
79
  };
50
- return t.addEventListener("change", n), () => t.removeEventListener("change", n);
51
- }, [e]);
52
- const g = v(
80
+ mediaQuery.addEventListener("change", handleChange);
81
+ return () => mediaQuery.removeEventListener("change", handleChange);
82
+ }, [theme]);
83
+ const value = useMemo(
53
84
  () => ({
54
- theme: e,
55
- setTheme: w,
56
- resolvedTheme: s
85
+ theme,
86
+ setTheme,
87
+ resolvedTheme
57
88
  }),
58
- [e, s]
89
+ [theme, resolvedTheme]
59
90
  );
60
- return /* @__PURE__ */ p(y.Provider, { value: g, children: o });
91
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children });
61
92
  }
62
- function k(o) {
63
- return o === "system" ? typeof window > "u" ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : o;
93
+ function getResolvedTheme(theme) {
94
+ if (theme === "system") {
95
+ if (typeof window === "undefined") {
96
+ return "light";
97
+ }
98
+ return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
99
+ }
100
+ return theme;
64
101
  }
65
102
  export {
66
- b as ThemeProvider
103
+ ThemeProvider
67
104
  };
68
105
  //# sourceMappingURL=theme.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.provider.js","sources":["../../../src/providers/theme/theme.provider.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\n\nimport type { Theme, ThemeContextValue } from './theme.context';\nimport { ThemeContext } from './theme.context';\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n /**\n * Whether to automatically detect and sync with parent app's theme\n * @default true\n */\n autoDetect?: boolean;\n}\n\n/**\n * ThemeProvider component that manages theme state and syncs with system preferences\n *\n * Supports automatic detection of parent app's theme (e.g., next-themes) via\n * MutationObserver watching for class changes on the document element.\n *\n * @example\n * ```tsx\n * <ThemeProvider defaultTheme=\"system\" storageKey=\"my-app-theme\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'blimu-theme',\n autoDetect = true,\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n const stored = localStorage.getItem(storageKey) as Theme | null;\n return stored || defaultTheme;\n });\n\n const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>(() => {\n if (typeof window === 'undefined') {\n return 'light';\n }\n return getResolvedTheme(theme);\n });\n\n // Apply theme to document\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n const root = window.document.documentElement;\n root.classList.remove('light', 'dark');\n\n if (theme === 'system') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n root.classList.add(systemTheme);\n setResolvedTheme(systemTheme);\n return;\n }\n\n root.classList.add(theme);\n setResolvedTheme(theme);\n }, [theme]);\n\n // Persist theme to localStorage\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n localStorage.setItem(storageKey, theme);\n }, [theme, storageKey]);\n\n // Auto-detect parent app's theme changes (e.g., next-themes)\n useEffect(() => {\n if (!autoDetect || typeof window === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'class') {\n const isDark = document.documentElement.classList.contains('dark');\n const isLight = document.documentElement.classList.contains('light');\n\n // Only sync if parent app has explicitly set a theme class\n if (isDark || isLight) {\n const detectedTheme = isDark ? 'dark' : 'light';\n if (resolvedTheme !== detectedTheme) {\n setResolvedTheme(detectedTheme);\n }\n }\n }\n });\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, [autoDetect, resolvedTheme]);\n\n // Listen to system theme changes when theme is 'system'\n useEffect(() => {\n if (theme !== 'system' || typeof window === 'undefined') {\n return;\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = (e: MediaQueryListEvent) => {\n const root = window.document.documentElement;\n root.classList.remove('light', 'dark');\n const systemTheme = e.matches ? 'dark' : 'light';\n root.classList.add(systemTheme);\n setResolvedTheme(systemTheme);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [theme]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n theme,\n setTheme,\n resolvedTheme,\n }),\n [theme, resolvedTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * Get the resolved theme (light or dark) from a Theme value\n */\nfunction getResolvedTheme(theme: Theme): 'light' | 'dark' {\n if (theme === 'system') {\n if (typeof window === 'undefined') {\n return 'light';\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n return theme;\n}\n"],"names":["ThemeProvider","children","defaultTheme","storageKey","autoDetect","theme","setTheme","useState","resolvedTheme","setResolvedTheme","getResolvedTheme","useEffect","root","systemTheme","observer","mutations","mutation","isDark","isLight","detectedTheme","mediaQuery","handleChange","e","value","useMemo","jsx","ThemeContext"],"mappings":";;;AA6BO,SAASA,EAAc;AAAA,EAC5B,UAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,YAAAC,IAAa;AAAA,EACb,YAAAC,IAAa;AACf,GAAuB;AACrB,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAgB,MACpC,OAAO,SAAW,MACbL,IAEM,aAAa,QAAQC,CAAU,KAC7BD,CAClB,GAEK,CAACM,GAAeC,CAAgB,IAAIF,EAA2B,MAC/D,OAAO,SAAW,MACb,UAEFG,EAAiBL,CAAK,CAC9B;AAGD,EAAAM,EAAU,MAAM;AACd,QAAI,OAAO,SAAW;AACpB;AAGF,UAAMC,IAAO,OAAO,SAAS;AAG7B,QAFAA,EAAK,UAAU,OAAO,SAAS,MAAM,GAEjCP,MAAU,UAAU;AACtB,YAAMQ,IAAc,OAAO,WAAW,8BAA8B,EAAE,UAClE,SACA;AACJ,MAAAD,EAAK,UAAU,IAAIC,CAAW,GAC9BJ,EAAiBI,CAAW;AAC5B;AAAA,IACF;AAEA,IAAAD,EAAK,UAAU,IAAIP,CAAK,GACxBI,EAAiBJ,CAAK;AAAA,EACxB,GAAG,CAACA,CAAK,CAAC,GAGVM,EAAU,MAAM;AACd,IAAI,OAAO,SAAW,OAGtB,aAAa,QAAQR,GAAYE,CAAK;AAAA,EACxC,GAAG,CAACA,GAAOF,CAAU,CAAC,GAGtBQ,EAAU,MAAM;AACd,QAAI,CAACP,KAAc,OAAO,SAAW;AACnC;AAGF,UAAMU,IAAW,IAAI,iBAAiB,CAACC,MAAc;AACnD,MAAAA,EAAU,QAAQ,CAACC,MAAa;AAC9B,YAAIA,EAAS,kBAAkB,SAAS;AACtC,gBAAMC,IAAS,SAAS,gBAAgB,UAAU,SAAS,MAAM,GAC3DC,IAAU,SAAS,gBAAgB,UAAU,SAAS,OAAO;AAGnE,cAAID,KAAUC,GAAS;AACrB,kBAAMC,IAAgBF,IAAS,SAAS;AACxC,YAAIT,MAAkBW,KACpBV,EAAiBU,CAAa;AAAA,UAElC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,WAAAL,EAAS,QAAQ,SAAS,iBAAiB;AAAA,MACzC,YAAY;AAAA,MACZ,iBAAiB,CAAC,OAAO;AAAA,IAAA,CAC1B,GAEM,MAAMA,EAAS,WAAA;AAAA,EACxB,GAAG,CAACV,GAAYI,CAAa,CAAC,GAG9BG,EAAU,MAAM;AACd,QAAIN,MAAU,YAAY,OAAO,SAAW;AAC1C;AAGF,UAAMe,IAAa,OAAO,WAAW,8BAA8B,GAC7DC,IAAe,CAACC,MAA2B;AAC/C,YAAMV,IAAO,OAAO,SAAS;AAC7B,MAAAA,EAAK,UAAU,OAAO,SAAS,MAAM;AACrC,YAAMC,IAAcS,EAAE,UAAU,SAAS;AACzC,MAAAV,EAAK,UAAU,IAAIC,CAAW,GAC9BJ,EAAiBI,CAAW;AAAA,IAC9B;AAEA,WAAAO,EAAW,iBAAiB,UAAUC,CAAY,GAC3C,MAAMD,EAAW,oBAAoB,UAAUC,CAAY;AAAA,EACpE,GAAG,CAAChB,CAAK,CAAC;AAEV,QAAMkB,IAAQC;AAAA,IACZ,OAAO;AAAA,MACL,OAAAnB;AAAA,MACA,UAAAC;AAAA,MACA,eAAAE;AAAA,IAAA;AAAA,IAEF,CAACH,GAAOG,CAAa;AAAA,EAAA;AAGvB,SAAO,gBAAAiB,EAACC,EAAa,UAAb,EAAsB,OAAAH,GAAe,UAAAtB,EAAA,CAAS;AACxD;AAKA,SAASS,EAAiBL,GAAgC;AACxD,SAAIA,MAAU,WACR,OAAO,SAAW,MACb,UAEF,OAAO,WAAW,8BAA8B,EAAE,UAAU,SAAS,UAEvEA;AACT;"}
1
+ {"version":3,"file":"theme.provider.js","sources":["../../../src/providers/theme/theme.provider.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\n\nimport type { Theme, ThemeContextValue } from './theme.context';\nimport { ThemeContext } from './theme.context';\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n /**\n * Whether to automatically detect and sync with parent app's theme\n * @default true\n */\n autoDetect?: boolean;\n}\n\n/**\n * ThemeProvider component that manages theme state and syncs with system preferences\n *\n * Supports automatic detection of parent app's theme (e.g., next-themes) via\n * MutationObserver watching for class changes on the document element.\n *\n * @example\n * ```tsx\n * <ThemeProvider defaultTheme=\"system\" storageKey=\"my-app-theme\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'blimu-theme',\n autoDetect = true,\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n const stored = localStorage.getItem(storageKey) as Theme | null;\n return stored || defaultTheme;\n });\n\n const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>(() => {\n if (typeof window === 'undefined') {\n return 'light';\n }\n return getResolvedTheme(theme);\n });\n\n // Apply theme to document\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n const root = window.document.documentElement;\n root.classList.remove('light', 'dark');\n\n if (theme === 'system') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n root.classList.add(systemTheme);\n setResolvedTheme(systemTheme);\n return;\n }\n\n root.classList.add(theme);\n setResolvedTheme(theme);\n }, [theme]);\n\n // Persist theme to localStorage\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n localStorage.setItem(storageKey, theme);\n }, [theme, storageKey]);\n\n // Auto-detect parent app's theme changes (e.g., next-themes)\n useEffect(() => {\n if (!autoDetect || typeof window === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'class') {\n const isDark = document.documentElement.classList.contains('dark');\n const isLight = document.documentElement.classList.contains('light');\n\n // Only sync if parent app has explicitly set a theme class\n if (isDark || isLight) {\n const detectedTheme = isDark ? 'dark' : 'light';\n if (resolvedTheme !== detectedTheme) {\n setResolvedTheme(detectedTheme);\n }\n }\n }\n });\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, [autoDetect, resolvedTheme]);\n\n // Listen to system theme changes when theme is 'system'\n useEffect(() => {\n if (theme !== 'system' || typeof window === 'undefined') {\n return;\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = (e: MediaQueryListEvent) => {\n const root = window.document.documentElement;\n root.classList.remove('light', 'dark');\n const systemTheme = e.matches ? 'dark' : 'light';\n root.classList.add(systemTheme);\n setResolvedTheme(systemTheme);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [theme]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n theme,\n setTheme,\n resolvedTheme,\n }),\n [theme, resolvedTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * Get the resolved theme (light or dark) from a Theme value\n */\nfunction getResolvedTheme(theme: Theme): 'light' | 'dark' {\n if (theme === 'system') {\n if (typeof window === 'undefined') {\n return 'light';\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n return theme;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const plugin = require("./node_modules/tailwindcss/dist/plugin.cjs");
4
+ const blimuPlugin = plugin(
5
+ ({ addBase, theme }) => {
6
+ addBase({
7
+ ":root": {
8
+ "--blimu-background": "oklch(1 0 0)",
9
+ "--blimu-foreground": "oklch(0.145 0 0)",
10
+ "--blimu-card": "oklch(1 0 0)",
11
+ "--blimu-card-foreground": "oklch(0.145 0 0)",
12
+ "--blimu-popover": "oklch(1 0 0)",
13
+ "--blimu-popover-foreground": "oklch(0.145 0 0)",
14
+ "--blimu-primary": "oklch(0.5 0.2 270)",
15
+ "--blimu-primary-foreground": "oklch(0.985 0 0)",
16
+ "--blimu-secondary": "oklch(0.97 0 0)",
17
+ "--blimu-secondary-foreground": "oklch(0.205 0 0)",
18
+ "--blimu-muted": "oklch(0.97 0 0)",
19
+ "--blimu-muted-foreground": "oklch(0.556 0 0)",
20
+ "--blimu-accent": "oklch(0.97 0 0)",
21
+ "--blimu-accent-foreground": "oklch(0.205 0 0)",
22
+ "--blimu-destructive": "oklch(0.577 0.245 27.325)",
23
+ "--blimu-destructive-foreground": "oklch(0.577 0.245 27.325)",
24
+ "--blimu-border": "oklch(0.922 0 0)",
25
+ "--blimu-input": "oklch(0.922 0 0)",
26
+ "--blimu-ring": "oklch(0.4 0 0)",
27
+ "--blimu-chart-1": "oklch(0.646 0.222 41.116)",
28
+ "--blimu-chart-2": "oklch(0.6 0.118 184.704)",
29
+ "--blimu-chart-3": "oklch(0.398 0.07 227.392)",
30
+ "--blimu-chart-4": "oklch(0.828 0.189 84.429)",
31
+ "--blimu-chart-5": "oklch(0.769 0.188 70.08)",
32
+ "--blimu-radius": "0.625rem",
33
+ "--blimu-sidebar": "oklch(0.985 0 0)",
34
+ "--blimu-sidebar-foreground": "oklch(0.145 0 0)",
35
+ "--blimu-sidebar-primary": "oklch(0.205 0 0)",
36
+ "--blimu-sidebar-primary-foreground": "oklch(0.985 0 0)",
37
+ "--blimu-sidebar-accent": "oklch(0.97 0 0)",
38
+ "--blimu-sidebar-accent-foreground": "oklch(0.205 0 0)",
39
+ "--blimu-sidebar-border": "oklch(0.922 0 0)",
40
+ "--blimu-sidebar-ring": "oklch(0.708 0 0)"
41
+ },
42
+ ".dark": {
43
+ "--blimu-background": "oklch(0.145 0 0)",
44
+ "--blimu-foreground": "oklch(0.985 0 0)",
45
+ "--blimu-card": "oklch(0.145 0 0)",
46
+ "--blimu-card-foreground": "oklch(0.985 0 0)",
47
+ "--blimu-popover": "oklch(0.22 0 0)",
48
+ "--blimu-popover-foreground": "oklch(0.985 0 0)",
49
+ "--blimu-primary": "oklch(0.65 0.2 270)",
50
+ "--blimu-primary-foreground": "oklch(0.985 0 0)",
51
+ "--blimu-secondary": "oklch(0.269 0 0)",
52
+ "--blimu-secondary-foreground": "oklch(0.985 0 0)",
53
+ "--blimu-muted": "oklch(0.269 0 0)",
54
+ "--blimu-muted-foreground": "oklch(0.708 0 0)",
55
+ "--blimu-accent": "oklch(0.269 0 0)",
56
+ "--blimu-accent-foreground": "oklch(0.985 0 0)",
57
+ "--blimu-destructive": "oklch(0.396 0.141 25.723)",
58
+ "--blimu-destructive-foreground": "oklch(0.637 0.237 25.331)",
59
+ "--blimu-border": "oklch(0.269 0 0)",
60
+ "--blimu-input": "oklch(0.269 0 0)",
61
+ "--blimu-ring": "oklch(0.7 0 0)",
62
+ "--blimu-chart-1": "oklch(0.488 0.243 264.376)",
63
+ "--blimu-chart-2": "oklch(0.696 0.17 162.48)",
64
+ "--blimu-chart-3": "oklch(0.769 0.188 70.08)",
65
+ "--blimu-chart-4": "oklch(0.627 0.265 303.9)",
66
+ "--blimu-chart-5": "oklch(0.645 0.246 16.439)",
67
+ "--blimu-sidebar": "oklch(0.205 0 0)",
68
+ "--blimu-sidebar-foreground": "oklch(0.985 0 0)",
69
+ "--blimu-sidebar-primary": "oklch(0.488 0.243 264.376)",
70
+ "--blimu-sidebar-primary-foreground": "oklch(0.985 0 0)",
71
+ "--blimu-sidebar-accent": "oklch(0.269 0 0)",
72
+ "--blimu-sidebar-accent-foreground": "oklch(0.985 0 0)",
73
+ "--blimu-sidebar-border": "oklch(0.269 0 0)",
74
+ "--blimu-sidebar-ring": "oklch(0.439 0 0)"
75
+ }
76
+ });
77
+ },
78
+ {
79
+ // Extend Tailwind with Blimu-specific utilities
80
+ theme: {
81
+ extend: {
82
+ colors: {
83
+ // Top-level aliases matching Shadcn pattern (for compatibility)
84
+ background: "oklch(var(--blimu-background))",
85
+ foreground: "oklch(var(--blimu-foreground))",
86
+ card: {
87
+ DEFAULT: "oklch(var(--blimu-card))",
88
+ foreground: "oklch(var(--blimu-card-foreground))"
89
+ },
90
+ popover: {
91
+ DEFAULT: "oklch(var(--blimu-popover))",
92
+ foreground: "oklch(var(--blimu-popover-foreground))"
93
+ },
94
+ primary: {
95
+ DEFAULT: "oklch(var(--blimu-primary))",
96
+ foreground: "oklch(var(--blimu-primary-foreground))"
97
+ },
98
+ secondary: {
99
+ DEFAULT: "oklch(var(--blimu-secondary))",
100
+ foreground: "oklch(var(--blimu-secondary-foreground))"
101
+ },
102
+ muted: {
103
+ DEFAULT: "oklch(var(--blimu-muted))",
104
+ foreground: "oklch(var(--blimu-muted-foreground))"
105
+ },
106
+ accent: {
107
+ DEFAULT: "oklch(var(--blimu-accent))",
108
+ foreground: "oklch(var(--blimu-accent-foreground))"
109
+ },
110
+ destructive: {
111
+ DEFAULT: "oklch(var(--blimu-destructive))",
112
+ foreground: "oklch(var(--blimu-destructive-foreground))"
113
+ },
114
+ border: "oklch(var(--blimu-border))",
115
+ input: "oklch(var(--blimu-input))",
116
+ ring: "oklch(var(--blimu-ring))",
117
+ // Scoped Blimu colors (preferred for explicit scoping)
118
+ blimu: {
119
+ background: "oklch(var(--blimu-background))",
120
+ foreground: "oklch(var(--blimu-foreground))",
121
+ card: {
122
+ DEFAULT: "oklch(var(--blimu-card))",
123
+ foreground: "oklch(var(--blimu-card-foreground))"
124
+ },
125
+ popover: {
126
+ DEFAULT: "oklch(var(--blimu-popover))",
127
+ foreground: "oklch(var(--blimu-popover-foreground))"
128
+ },
129
+ primary: {
130
+ DEFAULT: "oklch(var(--blimu-primary))",
131
+ foreground: "oklch(var(--blimu-primary-foreground))"
132
+ },
133
+ secondary: {
134
+ DEFAULT: "oklch(var(--blimu-secondary))",
135
+ foreground: "oklch(var(--blimu-secondary-foreground))"
136
+ },
137
+ muted: {
138
+ DEFAULT: "oklch(var(--blimu-muted))",
139
+ foreground: "oklch(var(--blimu-muted-foreground))"
140
+ },
141
+ accent: {
142
+ DEFAULT: "oklch(var(--blimu-accent))",
143
+ foreground: "oklch(var(--blimu-accent-foreground))"
144
+ },
145
+ destructive: {
146
+ DEFAULT: "oklch(var(--blimu-destructive))",
147
+ foreground: "oklch(var(--blimu-destructive-foreground))"
148
+ },
149
+ border: "oklch(var(--blimu-border))",
150
+ input: "oklch(var(--blimu-input))",
151
+ ring: "oklch(var(--blimu-ring))",
152
+ chart: {
153
+ 1: "oklch(var(--blimu-chart-1))",
154
+ 2: "oklch(var(--blimu-chart-2))",
155
+ 3: "oklch(var(--blimu-chart-3))",
156
+ 4: "oklch(var(--blimu-chart-4))",
157
+ 5: "oklch(var(--blimu-chart-5))"
158
+ },
159
+ sidebar: {
160
+ DEFAULT: "oklch(var(--blimu-sidebar))",
161
+ foreground: "oklch(var(--blimu-sidebar-foreground))",
162
+ primary: {
163
+ DEFAULT: "oklch(var(--blimu-sidebar-primary))",
164
+ foreground: "oklch(var(--blimu-sidebar-primary-foreground))"
165
+ },
166
+ accent: {
167
+ DEFAULT: "oklch(var(--blimu-sidebar-accent))",
168
+ foreground: "oklch(var(--blimu-sidebar-accent-foreground))"
169
+ },
170
+ border: "oklch(var(--blimu-sidebar-border))",
171
+ ring: "oklch(var(--blimu-sidebar-ring))"
172
+ }
173
+ }
174
+ },
175
+ borderRadius: {
176
+ blimu: "var(--blimu-radius)",
177
+ "blimu-sm": "calc(var(--blimu-radius) - 4px)",
178
+ "blimu-md": "calc(var(--blimu-radius) - 2px)",
179
+ "blimu-lg": "var(--blimu-radius)",
180
+ "blimu-xl": "calc(var(--blimu-radius) + 4px)"
181
+ }
182
+ }
183
+ },
184
+ // Safelist critical animation classes
185
+ content: [
186
+ "animate-in",
187
+ "animate-out",
188
+ "fade-in-0",
189
+ "fade-out-0",
190
+ "zoom-in-95",
191
+ "zoom-out-95",
192
+ "slide-in-from-top",
193
+ "slide-in-from-bottom",
194
+ "slide-in-from-left",
195
+ "slide-in-from-right"
196
+ ]
197
+ }
198
+ );
199
+ exports.blimuPlugin = blimuPlugin;
200
+ //# sourceMappingURL=tailwind.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind.cjs","sources":["../src/tailwind.plugin.ts"],"sourcesContent":["import plugin from 'tailwindcss/plugin';\n\n/**\n * Blimu Tailwind CSS Plugin\n *\n * This plugin extends Tailwind with Blimu-specific design tokens and utilities.\n * It injects CSS variables and extends the theme with the Blimu color palette.\n *\n * @example\n * ```javascript\n * // tailwind.config.js\n * import { blimuPlugin } from '@blimu/react/tailwind';\n *\n * export default {\n * plugins: [blimuPlugin],\n * };\n * ```\n */\nexport const blimuPlugin: ReturnType<typeof plugin> = plugin(\n ({ addBase, theme }) => {\n // Inject CSS variables as base styles\n addBase({\n ':root': {\n '--blimu-background': 'oklch(1 0 0)',\n '--blimu-foreground': 'oklch(0.145 0 0)',\n '--blimu-card': 'oklch(1 0 0)',\n '--blimu-card-foreground': 'oklch(0.145 0 0)',\n '--blimu-popover': 'oklch(1 0 0)',\n '--blimu-popover-foreground': 'oklch(0.145 0 0)',\n '--blimu-primary': 'oklch(0.5 0.2 270)',\n '--blimu-primary-foreground': 'oklch(0.985 0 0)',\n '--blimu-secondary': 'oklch(0.97 0 0)',\n '--blimu-secondary-foreground': 'oklch(0.205 0 0)',\n '--blimu-muted': 'oklch(0.97 0 0)',\n '--blimu-muted-foreground': 'oklch(0.556 0 0)',\n '--blimu-accent': 'oklch(0.97 0 0)',\n '--blimu-accent-foreground': 'oklch(0.205 0 0)',\n '--blimu-destructive': 'oklch(0.577 0.245 27.325)',\n '--blimu-destructive-foreground': 'oklch(0.577 0.245 27.325)',\n '--blimu-border': 'oklch(0.922 0 0)',\n '--blimu-input': 'oklch(0.922 0 0)',\n '--blimu-ring': 'oklch(0.4 0 0)',\n '--blimu-chart-1': 'oklch(0.646 0.222 41.116)',\n '--blimu-chart-2': 'oklch(0.6 0.118 184.704)',\n '--blimu-chart-3': 'oklch(0.398 0.07 227.392)',\n '--blimu-chart-4': 'oklch(0.828 0.189 84.429)',\n '--blimu-chart-5': 'oklch(0.769 0.188 70.08)',\n '--blimu-radius': '0.625rem',\n '--blimu-sidebar': 'oklch(0.985 0 0)',\n '--blimu-sidebar-foreground': 'oklch(0.145 0 0)',\n '--blimu-sidebar-primary': 'oklch(0.205 0 0)',\n '--blimu-sidebar-primary-foreground': 'oklch(0.985 0 0)',\n '--blimu-sidebar-accent': 'oklch(0.97 0 0)',\n '--blimu-sidebar-accent-foreground': 'oklch(0.205 0 0)',\n '--blimu-sidebar-border': 'oklch(0.922 0 0)',\n '--blimu-sidebar-ring': 'oklch(0.708 0 0)',\n },\n '.dark': {\n '--blimu-background': 'oklch(0.145 0 0)',\n '--blimu-foreground': 'oklch(0.985 0 0)',\n '--blimu-card': 'oklch(0.145 0 0)',\n '--blimu-card-foreground': 'oklch(0.985 0 0)',\n '--blimu-popover': 'oklch(0.22 0 0)',\n '--blimu-popover-foreground': 'oklch(0.985 0 0)',\n '--blimu-primary': 'oklch(0.65 0.2 270)',\n '--blimu-primary-foreground': 'oklch(0.985 0 0)',\n '--blimu-secondary': 'oklch(0.269 0 0)',\n '--blimu-secondary-foreground': 'oklch(0.985 0 0)',\n '--blimu-muted': 'oklch(0.269 0 0)',\n '--blimu-muted-foreground': 'oklch(0.708 0 0)',\n '--blimu-accent': 'oklch(0.269 0 0)',\n '--blimu-accent-foreground': 'oklch(0.985 0 0)',\n '--blimu-destructive': 'oklch(0.396 0.141 25.723)',\n '--blimu-destructive-foreground': 'oklch(0.637 0.237 25.331)',\n '--blimu-border': 'oklch(0.269 0 0)',\n '--blimu-input': 'oklch(0.269 0 0)',\n '--blimu-ring': 'oklch(0.7 0 0)',\n '--blimu-chart-1': 'oklch(0.488 0.243 264.376)',\n '--blimu-chart-2': 'oklch(0.696 0.17 162.48)',\n '--blimu-chart-3': 'oklch(0.769 0.188 70.08)',\n '--blimu-chart-4': 'oklch(0.627 0.265 303.9)',\n '--blimu-chart-5': 'oklch(0.645 0.246 16.439)',\n '--blimu-sidebar': 'oklch(0.205 0 0)',\n '--blimu-sidebar-foreground': 'oklch(0.985 0 0)',\n '--blimu-sidebar-primary': 'oklch(0.488 0.243 264.376)',\n '--blimu-sidebar-primary-foreground': 'oklch(0.985 0 0)',\n '--blimu-sidebar-accent': 'oklch(0.269 0 0)',\n '--blimu-sidebar-accent-foreground': 'oklch(0.985 0 0)',\n '--blimu-sidebar-border': 'oklch(0.269 0 0)',\n '--blimu-sidebar-ring': 'oklch(0.439 0 0)',\n },\n });\n },\n {\n // Extend Tailwind with Blimu-specific utilities\n theme: {\n extend: {\n colors: {\n // Top-level aliases matching Shadcn pattern (for compatibility)\n background: 'oklch(var(--blimu-background))',\n foreground: 'oklch(var(--blimu-foreground))',\n card: {\n DEFAULT: 'oklch(var(--blimu-card))',\n foreground: 'oklch(var(--blimu-card-foreground))',\n },\n popover: {\n DEFAULT: 'oklch(var(--blimu-popover))',\n foreground: 'oklch(var(--blimu-popover-foreground))',\n },\n primary: {\n DEFAULT: 'oklch(var(--blimu-primary))',\n foreground: 'oklch(var(--blimu-primary-foreground))',\n },\n secondary: {\n DEFAULT: 'oklch(var(--blimu-secondary))',\n foreground: 'oklch(var(--blimu-secondary-foreground))',\n },\n muted: {\n DEFAULT: 'oklch(var(--blimu-muted))',\n foreground: 'oklch(var(--blimu-muted-foreground))',\n },\n accent: {\n DEFAULT: 'oklch(var(--blimu-accent))',\n foreground: 'oklch(var(--blimu-accent-foreground))',\n },\n destructive: {\n DEFAULT: 'oklch(var(--blimu-destructive))',\n foreground: 'oklch(var(--blimu-destructive-foreground))',\n },\n border: 'oklch(var(--blimu-border))',\n input: 'oklch(var(--blimu-input))',\n ring: 'oklch(var(--blimu-ring))',\n // Scoped Blimu colors (preferred for explicit scoping)\n blimu: {\n background: 'oklch(var(--blimu-background))',\n foreground: 'oklch(var(--blimu-foreground))',\n card: {\n DEFAULT: 'oklch(var(--blimu-card))',\n foreground: 'oklch(var(--blimu-card-foreground))',\n },\n popover: {\n DEFAULT: 'oklch(var(--blimu-popover))',\n foreground: 'oklch(var(--blimu-popover-foreground))',\n },\n primary: {\n DEFAULT: 'oklch(var(--blimu-primary))',\n foreground: 'oklch(var(--blimu-primary-foreground))',\n },\n secondary: {\n DEFAULT: 'oklch(var(--blimu-secondary))',\n foreground: 'oklch(var(--blimu-secondary-foreground))',\n },\n muted: {\n DEFAULT: 'oklch(var(--blimu-muted))',\n foreground: 'oklch(var(--blimu-muted-foreground))',\n },\n accent: {\n DEFAULT: 'oklch(var(--blimu-accent))',\n foreground: 'oklch(var(--blimu-accent-foreground))',\n },\n destructive: {\n DEFAULT: 'oklch(var(--blimu-destructive))',\n foreground: 'oklch(var(--blimu-destructive-foreground))',\n },\n border: 'oklch(var(--blimu-border))',\n input: 'oklch(var(--blimu-input))',\n ring: 'oklch(var(--blimu-ring))',\n chart: {\n 1: 'oklch(var(--blimu-chart-1))',\n 2: 'oklch(var(--blimu-chart-2))',\n 3: 'oklch(var(--blimu-chart-3))',\n 4: 'oklch(var(--blimu-chart-4))',\n 5: 'oklch(var(--blimu-chart-5))',\n },\n sidebar: {\n DEFAULT: 'oklch(var(--blimu-sidebar))',\n foreground: 'oklch(var(--blimu-sidebar-foreground))',\n primary: {\n DEFAULT: 'oklch(var(--blimu-sidebar-primary))',\n foreground: 'oklch(var(--blimu-sidebar-primary-foreground))',\n },\n accent: {\n DEFAULT: 'oklch(var(--blimu-sidebar-accent))',\n foreground: 'oklch(var(--blimu-sidebar-accent-foreground))',\n },\n border: 'oklch(var(--blimu-sidebar-border))',\n ring: 'oklch(var(--blimu-sidebar-ring))',\n },\n },\n },\n borderRadius: {\n blimu: 'var(--blimu-radius)',\n 'blimu-sm': 'calc(var(--blimu-radius) - 4px)',\n 'blimu-md': 'calc(var(--blimu-radius) - 2px)',\n 'blimu-lg': 'var(--blimu-radius)',\n 'blimu-xl': 'calc(var(--blimu-radius) + 4px)',\n },\n },\n },\n // Safelist critical animation classes\n content: [\n 'animate-in',\n 'animate-out',\n 'fade-in-0',\n 'fade-out-0',\n 'zoom-in-95',\n 'zoom-out-95',\n 'slide-in-from-top',\n 'slide-in-from-bottom',\n 'slide-in-from-left',\n 'slide-in-from-right',\n ],\n },\n);\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import o from "./node_modules/tailwindcss/dist/plugin.js";
2
- const i = o(
3
- ({ addBase: r, theme: l }) => {
4
- r({
1
+ import u from "./node_modules/tailwindcss/dist/plugin.js";
2
+ const blimuPlugin = u(
3
+ ({ addBase, theme }) => {
4
+ addBase({
5
5
  ":root": {
6
6
  "--blimu-background": "oklch(1 0 0)",
7
7
  "--blimu-foreground": "oklch(0.145 0 0)",
@@ -195,6 +195,6 @@ const i = o(
195
195
  }
196
196
  );
197
197
  export {
198
- i as blimuPlugin
198
+ blimuPlugin
199
199
  };
200
- //# sourceMappingURL=tailwind.plugin.js.map
200
+ //# sourceMappingURL=tailwind.js.map