@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 +1 @@
1
- {"version":3,"file":"members-list.cjs","sources":["../../src/components/members-list.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { UserAvatar } from './user-avatar';\nimport { cn } from '../lib/utils';\n\nimport { useMembers, type ResourceMember } from '../hooks/use-members';\n\nexport interface MembersListProps {\n /**\n * Resource type (e.g., 'organization', 'workspace')\n */\n resourceType: string;\n\n /**\n * Resource ID\n */\n resourceId: string;\n\n /**\n * Initial page number\n * @default 1\n */\n initialPage?: number;\n\n /**\n * Items per page\n * @default 20\n */\n pageSize?: number;\n\n /**\n * Search query\n */\n search?: string;\n\n /**\n * Custom render function for each member\n */\n renderMember?: (member: ResourceMember) => React.ReactNode;\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Show pagination controls\n * @default true\n */\n showPagination?: boolean;\n}\n\n/**\n * Paginated list of organization/resource members\n *\n * @example\n * ```tsx\n * <MembersList\n * resourceType=\"organization\"\n * resourceId=\"org_123\"\n * />\n * ```\n *\n * @example With custom rendering\n * ```tsx\n * <MembersList\n * resourceType=\"workspace\"\n * resourceId=\"ws_456\"\n * renderMember={(member) => (\n * <div className=\"flex items-center gap-2\">\n * <UserAvatar src={member.user.avatarUrl} alt={member.user.email} />\n * <div>\n * <p>{member.user.firstName} {member.user.lastName}</p>\n * <p className=\"text-sm text-muted-foreground\">{member.user.email}</p>\n * </div>\n * <Badge>{member.role}</Badge>\n * </div>\n * )}\n * />\n * ```\n */\nexport function MembersList({\n resourceType,\n resourceId,\n initialPage = 1,\n pageSize = 20,\n search,\n renderMember,\n className,\n showPagination = true,\n}: MembersListProps) {\n const [page, setPage] = React.useState(initialPage);\n const { members, total, isLoading, error, hasNextPage, hasPreviousPage, refetch } = useMembers({\n resourceType,\n resourceId,\n page,\n limit: pageSize,\n search,\n });\n\n const defaultRenderMember = (member: ResourceMember) => {\n const displayName =\n member.user.firstName && member.user.lastName\n ? `${member.user.firstName} ${member.user.lastName}`\n : member.user.firstName || member.user.email?.split('@')[0] || 'User';\n\n return (\n <div className=\"flex items-center justify-between p-3 rounded-blimu hover:bg-blimu-accent transition-colors\">\n <div className=\"flex items-center gap-3\">\n <UserAvatar\n src={member.user.avatarUrl || undefined}\n alt={member.user.email}\n fallback={displayName}\n size=\"default\"\n />\n <div className=\"flex flex-col\">\n <p className=\"text-sm font-medium text-blimu-foreground\">{displayName}</p>\n <p className=\"text-xs text-blimu-muted-foreground\">{member.user.email}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {member.inherited && (\n <span className=\"text-xs text-blimu-muted-foreground\">(inherited)</span>\n )}\n <span className=\"text-xs font-medium text-blimu-foreground bg-blimu-muted px-2 py-1 rounded-blimu-sm\">\n {member.role}\n </span>\n </div>\n </div>\n );\n };\n\n if (error) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-destructive\">Error loading members: {error.message}</p>\n <button\n onClick={() => refetch()}\n className=\"mt-2 text-sm text-blimu-primary hover:underline\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (isLoading && members.length === 0) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-muted-foreground\">Loading members...</p>\n </div>\n );\n }\n\n if (members.length === 0) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-muted-foreground\">No members found</p>\n </div>\n );\n }\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <div className={cn('flex flex-col', className)}>\n <div className=\"flex flex-col divide-y divide-blimu-border\">\n {members.map((member) => (\n <div key={member.userId}>\n {renderMember ? renderMember(member) : defaultRenderMember(member)}\n </div>\n ))}\n </div>\n\n {showPagination && totalPages > 1 && (\n <div className=\"flex items-center justify-between mt-4 pt-4 border-t border-blimu-border\">\n <div className=\"text-sm text-blimu-muted-foreground\">\n Showing {(page - 1) * pageSize + 1} to {Math.min(page * pageSize, total)} of {total}{' '}\n members\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => setPage((p) => Math.max(1, p - 1))}\n disabled={!hasPreviousPage || isLoading}\n className=\"px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n Previous\n </button>\n <span className=\"text-sm text-blimu-foreground\">\n Page {page} of {totalPages}\n </span>\n <button\n onClick={() => setPage((p) => Math.min(totalPages, p + 1))}\n disabled={!hasNextPage || isLoading}\n className=\"px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["MembersList","resourceType","resourceId","initialPage","pageSize","search","renderMember","className","showPagination","page","setPage","React","members","total","isLoading","error","hasNextPage","hasPreviousPage","refetch","useMembers","defaultRenderMember","member","displayName","jsxs","jsx","UserAvatar","cn","totalPages","p"],"mappings":"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"}
1
+ {"version":3,"file":"members-list.cjs","sources":["../../src/components/members-list.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { UserAvatar } from './user-avatar';\nimport { cn } from '../lib/utils';\n\nimport { useMembers, type ResourceMember } from '../hooks/use-members';\n\nexport interface MembersListProps {\n /**\n * Resource type (e.g., 'organization', 'workspace')\n */\n resourceType: string;\n\n /**\n * Resource ID\n */\n resourceId: string;\n\n /**\n * Initial page number\n * @default 1\n */\n initialPage?: number;\n\n /**\n * Items per page\n * @default 20\n */\n pageSize?: number;\n\n /**\n * Search query\n */\n search?: string;\n\n /**\n * Custom render function for each member\n */\n renderMember?: (member: ResourceMember) => React.ReactNode;\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Show pagination controls\n * @default true\n */\n showPagination?: boolean;\n}\n\n/**\n * Paginated list of organization/resource members\n *\n * @example\n * ```tsx\n * <MembersList\n * resourceType=\"organization\"\n * resourceId=\"org_123\"\n * />\n * ```\n *\n * @example With custom rendering\n * ```tsx\n * <MembersList\n * resourceType=\"workspace\"\n * resourceId=\"ws_456\"\n * renderMember={(member) => (\n * <div className=\"flex items-center gap-2\">\n * <UserAvatar src={member.user.avatarUrl} alt={member.user.email} />\n * <div>\n * <p>{member.user.firstName} {member.user.lastName}</p>\n * <p className=\"text-sm text-muted-foreground\">{member.user.email}</p>\n * </div>\n * <Badge>{member.role}</Badge>\n * </div>\n * )}\n * />\n * ```\n */\nexport function MembersList({\n resourceType,\n resourceId,\n initialPage = 1,\n pageSize = 20,\n search,\n renderMember,\n className,\n showPagination = true,\n}: MembersListProps) {\n const [page, setPage] = React.useState(initialPage);\n const { members, total, isLoading, error, hasNextPage, hasPreviousPage, refetch } = useMembers({\n resourceType,\n resourceId,\n page,\n limit: pageSize,\n search,\n });\n\n const defaultRenderMember = (member: ResourceMember) => {\n const displayName =\n member.user.firstName && member.user.lastName\n ? `${member.user.firstName} ${member.user.lastName}`\n : member.user.firstName || member.user.email?.split('@')[0] || 'User';\n\n return (\n <div className=\"flex items-center justify-between p-3 rounded-blimu hover:bg-blimu-accent transition-colors\">\n <div className=\"flex items-center gap-3\">\n <UserAvatar\n src={member.user.avatarUrl || undefined}\n alt={member.user.email}\n fallback={displayName}\n size=\"default\"\n />\n <div className=\"flex flex-col\">\n <p className=\"text-sm font-medium text-blimu-foreground\">{displayName}</p>\n <p className=\"text-xs text-blimu-muted-foreground\">{member.user.email}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {member.inherited && (\n <span className=\"text-xs text-blimu-muted-foreground\">(inherited)</span>\n )}\n <span className=\"text-xs font-medium text-blimu-foreground bg-blimu-muted px-2 py-1 rounded-blimu-sm\">\n {member.role}\n </span>\n </div>\n </div>\n );\n };\n\n if (error) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-destructive\">Error loading members: {error.message}</p>\n <button\n onClick={() => refetch()}\n className=\"mt-2 text-sm text-blimu-primary hover:underline\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (isLoading && members.length === 0) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-muted-foreground\">Loading members...</p>\n </div>\n );\n }\n\n if (members.length === 0) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-muted-foreground\">No members found</p>\n </div>\n );\n }\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <div className={cn('flex flex-col', className)}>\n <div className=\"flex flex-col divide-y divide-blimu-border\">\n {members.map((member) => (\n <div key={member.userId}>\n {renderMember ? renderMember(member) : defaultRenderMember(member)}\n </div>\n ))}\n </div>\n\n {showPagination && totalPages > 1 && (\n <div className=\"flex items-center justify-between mt-4 pt-4 border-t border-blimu-border\">\n <div className=\"text-sm text-blimu-muted-foreground\">\n Showing {(page - 1) * pageSize + 1} to {Math.min(page * pageSize, total)} of {total}{' '}\n members\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => setPage((p) => Math.max(1, p - 1))}\n disabled={!hasPreviousPage || isLoading}\n className=\"px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n Previous\n </button>\n <span className=\"text-sm text-blimu-foreground\">\n Page {page} of {totalPages}\n </span>\n <button\n onClick={() => setPage((p) => Math.min(totalPages, p + 1))}\n disabled={!hasNextPage || isLoading}\n className=\"px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["React","useMembers","jsxs","jsx","UserAvatar","cn"],"mappings":"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"}
@@ -1,102 +1,107 @@
1
- import { jsxs as r, jsx as t } from "react/jsx-runtime";
2
- import * as M from "react";
3
- import { UserAvatar as w } from "./user-avatar.js";
4
- import { cn as a } from "../lib/utils.js";
5
- import { useMembers as j } from "../hooks/use-members.js";
6
- function $({
7
- resourceType: f,
8
- resourceId: h,
9
- initialPage: p = 1,
10
- pageSize: i = 20,
11
- search: g,
12
- renderMember: c,
13
- className: s,
14
- showPagination: N = !0
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { UserAvatar } from "./user-avatar.js";
4
+ import { cn } from "../lib/utils.js";
5
+ import { useMembers } from "../hooks/use-members.js";
6
+ function MembersList({
7
+ resourceType,
8
+ resourceId,
9
+ initialPage = 1,
10
+ pageSize = 20,
11
+ search,
12
+ renderMember,
13
+ className,
14
+ showPagination = true
15
15
  }) {
16
- const [l, u] = M.useState(p), { members: d, total: n, isLoading: o, error: x, hasNextPage: v, hasPreviousPage: y, refetch: P } = j({
17
- resourceType: f,
18
- resourceId: h,
19
- page: l,
20
- limit: i,
21
- search: g
22
- }), k = (e) => {
23
- const b = e.user.firstName && e.user.lastName ? `${e.user.firstName} ${e.user.lastName}` : e.user.firstName || e.user.email?.split("@")[0] || "User";
24
- return /* @__PURE__ */ r("div", { className: "flex items-center justify-between p-3 rounded-blimu hover:bg-blimu-accent transition-colors", children: [
25
- /* @__PURE__ */ r("div", { className: "flex items-center gap-3", children: [
26
- /* @__PURE__ */ t(
27
- w,
16
+ const [page, setPage] = React.useState(initialPage);
17
+ const { members, total, isLoading, error, hasNextPage, hasPreviousPage, refetch } = useMembers({
18
+ resourceType,
19
+ resourceId,
20
+ page,
21
+ limit: pageSize,
22
+ search
23
+ });
24
+ const defaultRenderMember = (member) => {
25
+ const displayName = member.user.firstName && member.user.lastName ? `${member.user.firstName} ${member.user.lastName}` : member.user.firstName || member.user.email?.split("@")[0] || "User";
26
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-3 rounded-blimu hover:bg-blimu-accent transition-colors", children: [
27
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
28
+ /* @__PURE__ */ jsx(
29
+ UserAvatar,
28
30
  {
29
- src: e.user.avatarUrl || void 0,
30
- alt: e.user.email,
31
- fallback: b,
31
+ src: member.user.avatarUrl || void 0,
32
+ alt: member.user.email,
33
+ fallback: displayName,
32
34
  size: "default"
33
35
  }
34
36
  ),
35
- /* @__PURE__ */ r("div", { className: "flex flex-col", children: [
36
- /* @__PURE__ */ t("p", { className: "text-sm font-medium text-blimu-foreground", children: b }),
37
- /* @__PURE__ */ t("p", { className: "text-xs text-blimu-muted-foreground", children: e.user.email })
37
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
38
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-blimu-foreground", children: displayName }),
39
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-blimu-muted-foreground", children: member.user.email })
38
40
  ] })
39
41
  ] }),
40
- /* @__PURE__ */ r("div", { className: "flex items-center gap-2", children: [
41
- e.inherited && /* @__PURE__ */ t("span", { className: "text-xs text-blimu-muted-foreground", children: "(inherited)" }),
42
- /* @__PURE__ */ t("span", { className: "text-xs font-medium text-blimu-foreground bg-blimu-muted px-2 py-1 rounded-blimu-sm", children: e.role })
42
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
43
+ member.inherited && /* @__PURE__ */ jsx("span", { className: "text-xs text-blimu-muted-foreground", children: "(inherited)" }),
44
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-blimu-foreground bg-blimu-muted px-2 py-1 rounded-blimu-sm", children: member.role })
43
45
  ] })
44
46
  ] });
45
47
  };
46
- if (x)
47
- return /* @__PURE__ */ r("div", { className: a("p-4 text-center", s), children: [
48
- /* @__PURE__ */ r("p", { className: "text-sm text-blimu-destructive", children: [
48
+ if (error) {
49
+ return /* @__PURE__ */ jsxs("div", { className: cn("p-4 text-center", className), children: [
50
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-blimu-destructive", children: [
49
51
  "Error loading members: ",
50
- x.message
52
+ error.message
51
53
  ] }),
52
- /* @__PURE__ */ t(
54
+ /* @__PURE__ */ jsx(
53
55
  "button",
54
56
  {
55
- onClick: () => P(),
57
+ onClick: () => refetch(),
56
58
  className: "mt-2 text-sm text-blimu-primary hover:underline",
57
59
  children: "Retry"
58
60
  }
59
61
  )
60
62
  ] });
61
- if (o && d.length === 0)
62
- return /* @__PURE__ */ t("div", { className: a("p-4 text-center", s), children: /* @__PURE__ */ t("p", { className: "text-sm text-blimu-muted-foreground", children: "Loading members..." }) });
63
- if (d.length === 0)
64
- return /* @__PURE__ */ t("div", { className: a("p-4 text-center", s), children: /* @__PURE__ */ t("p", { className: "text-sm text-blimu-muted-foreground", children: "No members found" }) });
65
- const m = Math.ceil(n / i);
66
- return /* @__PURE__ */ r("div", { className: a("flex flex-col", s), children: [
67
- /* @__PURE__ */ t("div", { className: "flex flex-col divide-y divide-blimu-border", children: d.map((e) => /* @__PURE__ */ t("div", { children: c ? c(e) : k(e) }, e.userId)) }),
68
- N && m > 1 && /* @__PURE__ */ r("div", { className: "flex items-center justify-between mt-4 pt-4 border-t border-blimu-border", children: [
69
- /* @__PURE__ */ r("div", { className: "text-sm text-blimu-muted-foreground", children: [
63
+ }
64
+ if (isLoading && members.length === 0) {
65
+ return /* @__PURE__ */ jsx("div", { className: cn("p-4 text-center", className), children: /* @__PURE__ */ jsx("p", { className: "text-sm text-blimu-muted-foreground", children: "Loading members..." }) });
66
+ }
67
+ if (members.length === 0) {
68
+ return /* @__PURE__ */ jsx("div", { className: cn("p-4 text-center", className), children: /* @__PURE__ */ jsx("p", { className: "text-sm text-blimu-muted-foreground", children: "No members found" }) });
69
+ }
70
+ const totalPages = Math.ceil(total / pageSize);
71
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col", className), children: [
72
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col divide-y divide-blimu-border", children: members.map((member) => /* @__PURE__ */ jsx("div", { children: renderMember ? renderMember(member) : defaultRenderMember(member) }, member.userId)) }),
73
+ showPagination && totalPages > 1 && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mt-4 pt-4 border-t border-blimu-border", children: [
74
+ /* @__PURE__ */ jsxs("div", { className: "text-sm text-blimu-muted-foreground", children: [
70
75
  "Showing ",
71
- (l - 1) * i + 1,
76
+ (page - 1) * pageSize + 1,
72
77
  " to ",
73
- Math.min(l * i, n),
78
+ Math.min(page * pageSize, total),
74
79
  " of ",
75
- n,
80
+ total,
76
81
  " ",
77
82
  "members"
78
83
  ] }),
79
- /* @__PURE__ */ r("div", { className: "flex items-center gap-2", children: [
80
- /* @__PURE__ */ t(
84
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
85
+ /* @__PURE__ */ jsx(
81
86
  "button",
82
87
  {
83
- onClick: () => u((e) => Math.max(1, e - 1)),
84
- disabled: !y || o,
88
+ onClick: () => setPage((p) => Math.max(1, p - 1)),
89
+ disabled: !hasPreviousPage || isLoading,
85
90
  className: "px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed",
86
91
  children: "Previous"
87
92
  }
88
93
  ),
89
- /* @__PURE__ */ r("span", { className: "text-sm text-blimu-foreground", children: [
94
+ /* @__PURE__ */ jsxs("span", { className: "text-sm text-blimu-foreground", children: [
90
95
  "Page ",
91
- l,
96
+ page,
92
97
  " of ",
93
- m
98
+ totalPages
94
99
  ] }),
95
- /* @__PURE__ */ t(
100
+ /* @__PURE__ */ jsx(
96
101
  "button",
97
102
  {
98
- onClick: () => u((e) => Math.min(m, e + 1)),
99
- disabled: !v || o,
103
+ onClick: () => setPage((p) => Math.min(totalPages, p + 1)),
104
+ disabled: !hasNextPage || isLoading,
100
105
  className: "px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed",
101
106
  children: "Next"
102
107
  }
@@ -106,6 +111,6 @@ function $({
106
111
  ] });
107
112
  }
108
113
  export {
109
- $ as MembersList
114
+ MembersList
110
115
  };
111
116
  //# sourceMappingURL=members-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"members-list.js","sources":["../../src/components/members-list.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { UserAvatar } from './user-avatar';\nimport { cn } from '../lib/utils';\n\nimport { useMembers, type ResourceMember } from '../hooks/use-members';\n\nexport interface MembersListProps {\n /**\n * Resource type (e.g., 'organization', 'workspace')\n */\n resourceType: string;\n\n /**\n * Resource ID\n */\n resourceId: string;\n\n /**\n * Initial page number\n * @default 1\n */\n initialPage?: number;\n\n /**\n * Items per page\n * @default 20\n */\n pageSize?: number;\n\n /**\n * Search query\n */\n search?: string;\n\n /**\n * Custom render function for each member\n */\n renderMember?: (member: ResourceMember) => React.ReactNode;\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Show pagination controls\n * @default true\n */\n showPagination?: boolean;\n}\n\n/**\n * Paginated list of organization/resource members\n *\n * @example\n * ```tsx\n * <MembersList\n * resourceType=\"organization\"\n * resourceId=\"org_123\"\n * />\n * ```\n *\n * @example With custom rendering\n * ```tsx\n * <MembersList\n * resourceType=\"workspace\"\n * resourceId=\"ws_456\"\n * renderMember={(member) => (\n * <div className=\"flex items-center gap-2\">\n * <UserAvatar src={member.user.avatarUrl} alt={member.user.email} />\n * <div>\n * <p>{member.user.firstName} {member.user.lastName}</p>\n * <p className=\"text-sm text-muted-foreground\">{member.user.email}</p>\n * </div>\n * <Badge>{member.role}</Badge>\n * </div>\n * )}\n * />\n * ```\n */\nexport function MembersList({\n resourceType,\n resourceId,\n initialPage = 1,\n pageSize = 20,\n search,\n renderMember,\n className,\n showPagination = true,\n}: MembersListProps) {\n const [page, setPage] = React.useState(initialPage);\n const { members, total, isLoading, error, hasNextPage, hasPreviousPage, refetch } = useMembers({\n resourceType,\n resourceId,\n page,\n limit: pageSize,\n search,\n });\n\n const defaultRenderMember = (member: ResourceMember) => {\n const displayName =\n member.user.firstName && member.user.lastName\n ? `${member.user.firstName} ${member.user.lastName}`\n : member.user.firstName || member.user.email?.split('@')[0] || 'User';\n\n return (\n <div className=\"flex items-center justify-between p-3 rounded-blimu hover:bg-blimu-accent transition-colors\">\n <div className=\"flex items-center gap-3\">\n <UserAvatar\n src={member.user.avatarUrl || undefined}\n alt={member.user.email}\n fallback={displayName}\n size=\"default\"\n />\n <div className=\"flex flex-col\">\n <p className=\"text-sm font-medium text-blimu-foreground\">{displayName}</p>\n <p className=\"text-xs text-blimu-muted-foreground\">{member.user.email}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {member.inherited && (\n <span className=\"text-xs text-blimu-muted-foreground\">(inherited)</span>\n )}\n <span className=\"text-xs font-medium text-blimu-foreground bg-blimu-muted px-2 py-1 rounded-blimu-sm\">\n {member.role}\n </span>\n </div>\n </div>\n );\n };\n\n if (error) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-destructive\">Error loading members: {error.message}</p>\n <button\n onClick={() => refetch()}\n className=\"mt-2 text-sm text-blimu-primary hover:underline\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (isLoading && members.length === 0) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-muted-foreground\">Loading members...</p>\n </div>\n );\n }\n\n if (members.length === 0) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-muted-foreground\">No members found</p>\n </div>\n );\n }\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <div className={cn('flex flex-col', className)}>\n <div className=\"flex flex-col divide-y divide-blimu-border\">\n {members.map((member) => (\n <div key={member.userId}>\n {renderMember ? renderMember(member) : defaultRenderMember(member)}\n </div>\n ))}\n </div>\n\n {showPagination && totalPages > 1 && (\n <div className=\"flex items-center justify-between mt-4 pt-4 border-t border-blimu-border\">\n <div className=\"text-sm text-blimu-muted-foreground\">\n Showing {(page - 1) * pageSize + 1} to {Math.min(page * pageSize, total)} of {total}{' '}\n members\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => setPage((p) => Math.max(1, p - 1))}\n disabled={!hasPreviousPage || isLoading}\n className=\"px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n Previous\n </button>\n <span className=\"text-sm text-blimu-foreground\">\n Page {page} of {totalPages}\n </span>\n <button\n onClick={() => setPage((p) => Math.min(totalPages, p + 1))}\n disabled={!hasNextPage || isLoading}\n className=\"px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["MembersList","resourceType","resourceId","initialPage","pageSize","search","renderMember","className","showPagination","page","setPage","React","members","total","isLoading","error","hasNextPage","hasPreviousPage","refetch","useMembers","defaultRenderMember","member","displayName","jsxs","jsx","UserAvatar","cn","totalPages","p"],"mappings":"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"}
1
+ {"version":3,"file":"members-list.js","sources":["../../src/components/members-list.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { UserAvatar } from './user-avatar';\nimport { cn } from '../lib/utils';\n\nimport { useMembers, type ResourceMember } from '../hooks/use-members';\n\nexport interface MembersListProps {\n /**\n * Resource type (e.g., 'organization', 'workspace')\n */\n resourceType: string;\n\n /**\n * Resource ID\n */\n resourceId: string;\n\n /**\n * Initial page number\n * @default 1\n */\n initialPage?: number;\n\n /**\n * Items per page\n * @default 20\n */\n pageSize?: number;\n\n /**\n * Search query\n */\n search?: string;\n\n /**\n * Custom render function for each member\n */\n renderMember?: (member: ResourceMember) => React.ReactNode;\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Show pagination controls\n * @default true\n */\n showPagination?: boolean;\n}\n\n/**\n * Paginated list of organization/resource members\n *\n * @example\n * ```tsx\n * <MembersList\n * resourceType=\"organization\"\n * resourceId=\"org_123\"\n * />\n * ```\n *\n * @example With custom rendering\n * ```tsx\n * <MembersList\n * resourceType=\"workspace\"\n * resourceId=\"ws_456\"\n * renderMember={(member) => (\n * <div className=\"flex items-center gap-2\">\n * <UserAvatar src={member.user.avatarUrl} alt={member.user.email} />\n * <div>\n * <p>{member.user.firstName} {member.user.lastName}</p>\n * <p className=\"text-sm text-muted-foreground\">{member.user.email}</p>\n * </div>\n * <Badge>{member.role}</Badge>\n * </div>\n * )}\n * />\n * ```\n */\nexport function MembersList({\n resourceType,\n resourceId,\n initialPage = 1,\n pageSize = 20,\n search,\n renderMember,\n className,\n showPagination = true,\n}: MembersListProps) {\n const [page, setPage] = React.useState(initialPage);\n const { members, total, isLoading, error, hasNextPage, hasPreviousPage, refetch } = useMembers({\n resourceType,\n resourceId,\n page,\n limit: pageSize,\n search,\n });\n\n const defaultRenderMember = (member: ResourceMember) => {\n const displayName =\n member.user.firstName && member.user.lastName\n ? `${member.user.firstName} ${member.user.lastName}`\n : member.user.firstName || member.user.email?.split('@')[0] || 'User';\n\n return (\n <div className=\"flex items-center justify-between p-3 rounded-blimu hover:bg-blimu-accent transition-colors\">\n <div className=\"flex items-center gap-3\">\n <UserAvatar\n src={member.user.avatarUrl || undefined}\n alt={member.user.email}\n fallback={displayName}\n size=\"default\"\n />\n <div className=\"flex flex-col\">\n <p className=\"text-sm font-medium text-blimu-foreground\">{displayName}</p>\n <p className=\"text-xs text-blimu-muted-foreground\">{member.user.email}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {member.inherited && (\n <span className=\"text-xs text-blimu-muted-foreground\">(inherited)</span>\n )}\n <span className=\"text-xs font-medium text-blimu-foreground bg-blimu-muted px-2 py-1 rounded-blimu-sm\">\n {member.role}\n </span>\n </div>\n </div>\n );\n };\n\n if (error) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-destructive\">Error loading members: {error.message}</p>\n <button\n onClick={() => refetch()}\n className=\"mt-2 text-sm text-blimu-primary hover:underline\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (isLoading && members.length === 0) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-muted-foreground\">Loading members...</p>\n </div>\n );\n }\n\n if (members.length === 0) {\n return (\n <div className={cn('p-4 text-center', className)}>\n <p className=\"text-sm text-blimu-muted-foreground\">No members found</p>\n </div>\n );\n }\n\n const totalPages = Math.ceil(total / pageSize);\n\n return (\n <div className={cn('flex flex-col', className)}>\n <div className=\"flex flex-col divide-y divide-blimu-border\">\n {members.map((member) => (\n <div key={member.userId}>\n {renderMember ? renderMember(member) : defaultRenderMember(member)}\n </div>\n ))}\n </div>\n\n {showPagination && totalPages > 1 && (\n <div className=\"flex items-center justify-between mt-4 pt-4 border-t border-blimu-border\">\n <div className=\"text-sm text-blimu-muted-foreground\">\n Showing {(page - 1) * pageSize + 1} to {Math.min(page * pageSize, total)} of {total}{' '}\n members\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => setPage((p) => Math.max(1, p - 1))}\n disabled={!hasPreviousPage || isLoading}\n className=\"px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n Previous\n </button>\n <span className=\"text-sm text-blimu-foreground\">\n Page {page} of {totalPages}\n </span>\n <button\n onClick={() => setPage((p) => Math.min(totalPages, p + 1))}\n disabled={!hasNextPage || isLoading}\n className=\"px-3 py-1 text-sm rounded-blimu border border-blimu-input bg-blimu-background hover:bg-blimu-accent disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,35 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),d=require("../hooks/use-auth.cjs");function f({signUpFallbackRedirectUrl:e,signInFallbackRedirectUrl:i,forceRedirect:n=!1}){const{login:o,isAuthenticated:u,isLoading:s,isIdle:r}=d.useAuth();return c.useEffect(()=>{if(!(r||s)&&(!u||n)){let t=i||e||window.location.href;t.startsWith("http")||(t=`${window.location.origin}${t}`),o(t)}},[r,s,u,n,i,e,o]),null}exports.RedirectToSignIn=f;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const useAuth = require("../hooks/use-auth.cjs");
5
+ function RedirectToSignIn({
6
+ signUpFallbackRedirectUrl,
7
+ signInFallbackRedirectUrl,
8
+ forceRedirect = false
9
+ }) {
10
+ const { login, isAuthenticated, isLoading, isIdle } = useAuth.useAuth();
11
+ React.useEffect(() => {
12
+ const isReady = !isIdle;
13
+ if (!isReady || isLoading) {
14
+ return;
15
+ }
16
+ if (!isAuthenticated || forceRedirect) {
17
+ let returnUrl = signInFallbackRedirectUrl || signUpFallbackRedirectUrl || window.location.href;
18
+ if (!returnUrl.startsWith("http")) {
19
+ returnUrl = `${window.location.origin}${returnUrl}`;
20
+ }
21
+ login(returnUrl);
22
+ }
23
+ }, [
24
+ isIdle,
25
+ isLoading,
26
+ isAuthenticated,
27
+ forceRedirect,
28
+ signInFallbackRedirectUrl,
29
+ signUpFallbackRedirectUrl,
30
+ login
31
+ ]);
32
+ return null;
33
+ }
34
+ exports.RedirectToSignIn = RedirectToSignIn;
2
35
  //# sourceMappingURL=redirect-to-sign-in.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"redirect-to-sign-in.cjs","sources":["../../src/components/redirect-to-sign-in.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useAuth } from '../hooks/use-auth';\n\nexport interface RedirectToSignInProps {\n /**\n * URL to redirect to after sign up\n * Note: In Blimu, this is used as the return URL after authentication\n */\n signUpFallbackRedirectUrl?: string;\n /**\n * URL to redirect to after sign in\n * Note: In Blimu, this is used as the return URL after authentication\n */\n signInFallbackRedirectUrl?: string;\n /**\n * Force redirect even if already authenticated\n * @default false\n */\n forceRedirect?: boolean;\n}\n\n/**\n * Component that redirects unauthenticated users to the sign-in page\n *\n * This component automatically redirects users to the authentication page\n * when they are not authenticated. It matches Clerk's RedirectToSignIn API\n * for easier migration.\n *\n * @example\n * ```tsx\n * function ProtectedRoute() {\n * const { isAuthenticated } = useAuth();\n *\n * if (!isAuthenticated) {\n * return <RedirectToSignIn signInFallbackRedirectUrl=\"/dashboard\" />;\n * }\n *\n * return <ProtectedContent />;\n * }\n * ```\n */\nexport function RedirectToSignIn({\n signUpFallbackRedirectUrl,\n signInFallbackRedirectUrl,\n forceRedirect = false,\n}: RedirectToSignInProps) {\n const { login, isAuthenticated, isLoading, isIdle } = useAuth();\n\n useEffect(() => {\n // Wait for auth to be ready (not idle) and not loading\n const isReady = !isIdle;\n if (!isReady || isLoading) {\n return;\n }\n\n // Redirect if not authenticated or if force redirect is enabled\n if (!isAuthenticated || forceRedirect) {\n // Use signInFallbackRedirectUrl if provided, otherwise signUpFallbackRedirectUrl, otherwise current URL\n let returnUrl =\n signInFallbackRedirectUrl || signUpFallbackRedirectUrl || window.location.href;\n\n // if it's not a full URL, add the current origin\n if (!returnUrl.startsWith('http')) {\n returnUrl = `${window.location.origin}${returnUrl}`;\n }\n\n login(returnUrl);\n }\n }, [\n isIdle,\n isLoading,\n isAuthenticated,\n forceRedirect,\n signInFallbackRedirectUrl,\n signUpFallbackRedirectUrl,\n login,\n ]);\n\n // Return null while redirecting (component will unmount after redirect)\n return null;\n}\n"],"names":["RedirectToSignIn","signUpFallbackRedirectUrl","signInFallbackRedirectUrl","forceRedirect","login","isAuthenticated","isLoading","isIdle","useAuth","useEffect","returnUrl"],"mappings":"4IA0CO,SAASA,EAAiB,CAC/B,0BAAAC,EACA,0BAAAC,EACA,cAAAC,EAAgB,EAClB,EAA0B,CACxB,KAAM,CAAE,MAAAC,EAAO,gBAAAC,EAAiB,UAAAC,EAAW,OAAAC,CAAA,EAAWC,EAAAA,QAAA,EAEtDC,OAAAA,EAAAA,UAAU,IAAM,CAGd,GAAI,EADaF,GACDD,KAKZ,CAACD,GAAmBF,GAAe,CAErC,IAAIO,EACFR,GAA6BD,GAA6B,OAAO,SAAS,KAGvES,EAAU,WAAW,MAAM,IAC9BA,EAAY,GAAG,OAAO,SAAS,MAAM,GAAGA,CAAS,IAGnDN,EAAMM,CAAS,CACjB,CACF,EAAG,CACDH,EACAD,EACAD,EACAF,EACAD,EACAD,EACAG,CAAA,CACD,EAGM,IACT"}
1
+ {"version":3,"file":"redirect-to-sign-in.cjs","sources":["../../src/components/redirect-to-sign-in.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useAuth } from '../hooks/use-auth';\n\nexport interface RedirectToSignInProps {\n /**\n * URL to redirect to after sign up\n * Note: In Blimu, this is used as the return URL after authentication\n */\n signUpFallbackRedirectUrl?: string;\n /**\n * URL to redirect to after sign in\n * Note: In Blimu, this is used as the return URL after authentication\n */\n signInFallbackRedirectUrl?: string;\n /**\n * Force redirect even if already authenticated\n * @default false\n */\n forceRedirect?: boolean;\n}\n\n/**\n * Component that redirects unauthenticated users to the sign-in page\n *\n * This component automatically redirects users to the authentication page\n * when they are not authenticated. It matches Clerk's RedirectToSignIn API\n * for easier migration.\n *\n * @example\n * ```tsx\n * function ProtectedRoute() {\n * const { isAuthenticated } = useAuth();\n *\n * if (!isAuthenticated) {\n * return <RedirectToSignIn signInFallbackRedirectUrl=\"/dashboard\" />;\n * }\n *\n * return <ProtectedContent />;\n * }\n * ```\n */\nexport function RedirectToSignIn({\n signUpFallbackRedirectUrl,\n signInFallbackRedirectUrl,\n forceRedirect = false,\n}: RedirectToSignInProps) {\n const { login, isAuthenticated, isLoading, isIdle } = useAuth();\n\n useEffect(() => {\n // Wait for auth to be ready (not idle) and not loading\n const isReady = !isIdle;\n if (!isReady || isLoading) {\n return;\n }\n\n // Redirect if not authenticated or if force redirect is enabled\n if (!isAuthenticated || forceRedirect) {\n // Use signInFallbackRedirectUrl if provided, otherwise signUpFallbackRedirectUrl, otherwise current URL\n let returnUrl =\n signInFallbackRedirectUrl || signUpFallbackRedirectUrl || window.location.href;\n\n // if it's not a full URL, add the current origin\n if (!returnUrl.startsWith('http')) {\n returnUrl = `${window.location.origin}${returnUrl}`;\n }\n\n login(returnUrl);\n }\n }, [\n isIdle,\n isLoading,\n isAuthenticated,\n forceRedirect,\n signInFallbackRedirectUrl,\n signUpFallbackRedirectUrl,\n login,\n ]);\n\n // Return null while redirecting (component will unmount after redirect)\n return null;\n}\n"],"names":["useAuth","useEffect"],"mappings":";;;;AA0CO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,gBAAgB;AAClB,GAA0B;AACxB,QAAM,EAAE,OAAO,iBAAiB,WAAW,OAAA,IAAWA,QAAAA,QAAA;AAEtDC,QAAAA,UAAU,MAAM;AAEd,UAAM,UAAU,CAAC;AACjB,QAAI,CAAC,WAAW,WAAW;AACzB;AAAA,IACF;AAGA,QAAI,CAAC,mBAAmB,eAAe;AAErC,UAAI,YACF,6BAA6B,6BAA6B,OAAO,SAAS;AAG5E,UAAI,CAAC,UAAU,WAAW,MAAM,GAAG;AACjC,oBAAY,GAAG,OAAO,SAAS,MAAM,GAAG,SAAS;AAAA,MACnD;AAEA,YAAM,SAAS;AAAA,IACjB;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAGD,SAAO;AACT;;"}
@@ -1,27 +1,35 @@
1
- import { useEffect as u } from "react";
2
- import { useAuth as d } from "../hooks/use-auth.js";
3
- function w({
4
- signUpFallbackRedirectUrl: i,
5
- signInFallbackRedirectUrl: o,
6
- forceRedirect: n = !1
1
+ import { useEffect } from "react";
2
+ import { useAuth } from "../hooks/use-auth.js";
3
+ function RedirectToSignIn({
4
+ signUpFallbackRedirectUrl,
5
+ signInFallbackRedirectUrl,
6
+ forceRedirect = false
7
7
  }) {
8
- const { login: e, isAuthenticated: r, isLoading: s, isIdle: f } = d();
9
- return u(() => {
10
- if (!(f || s) && (!r || n)) {
11
- let t = o || i || window.location.href;
12
- t.startsWith("http") || (t = `${window.location.origin}${t}`), e(t);
8
+ const { login, isAuthenticated, isLoading, isIdle } = useAuth();
9
+ useEffect(() => {
10
+ const isReady = !isIdle;
11
+ if (!isReady || isLoading) {
12
+ return;
13
+ }
14
+ if (!isAuthenticated || forceRedirect) {
15
+ let returnUrl = signInFallbackRedirectUrl || signUpFallbackRedirectUrl || window.location.href;
16
+ if (!returnUrl.startsWith("http")) {
17
+ returnUrl = `${window.location.origin}${returnUrl}`;
18
+ }
19
+ login(returnUrl);
13
20
  }
14
21
  }, [
15
- f,
16
- s,
17
- r,
18
- n,
19
- o,
20
- i,
21
- e
22
- ]), null;
22
+ isIdle,
23
+ isLoading,
24
+ isAuthenticated,
25
+ forceRedirect,
26
+ signInFallbackRedirectUrl,
27
+ signUpFallbackRedirectUrl,
28
+ login
29
+ ]);
30
+ return null;
23
31
  }
24
32
  export {
25
- w as RedirectToSignIn
33
+ RedirectToSignIn
26
34
  };
27
35
  //# sourceMappingURL=redirect-to-sign-in.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redirect-to-sign-in.js","sources":["../../src/components/redirect-to-sign-in.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useAuth } from '../hooks/use-auth';\n\nexport interface RedirectToSignInProps {\n /**\n * URL to redirect to after sign up\n * Note: In Blimu, this is used as the return URL after authentication\n */\n signUpFallbackRedirectUrl?: string;\n /**\n * URL to redirect to after sign in\n * Note: In Blimu, this is used as the return URL after authentication\n */\n signInFallbackRedirectUrl?: string;\n /**\n * Force redirect even if already authenticated\n * @default false\n */\n forceRedirect?: boolean;\n}\n\n/**\n * Component that redirects unauthenticated users to the sign-in page\n *\n * This component automatically redirects users to the authentication page\n * when they are not authenticated. It matches Clerk's RedirectToSignIn API\n * for easier migration.\n *\n * @example\n * ```tsx\n * function ProtectedRoute() {\n * const { isAuthenticated } = useAuth();\n *\n * if (!isAuthenticated) {\n * return <RedirectToSignIn signInFallbackRedirectUrl=\"/dashboard\" />;\n * }\n *\n * return <ProtectedContent />;\n * }\n * ```\n */\nexport function RedirectToSignIn({\n signUpFallbackRedirectUrl,\n signInFallbackRedirectUrl,\n forceRedirect = false,\n}: RedirectToSignInProps) {\n const { login, isAuthenticated, isLoading, isIdle } = useAuth();\n\n useEffect(() => {\n // Wait for auth to be ready (not idle) and not loading\n const isReady = !isIdle;\n if (!isReady || isLoading) {\n return;\n }\n\n // Redirect if not authenticated or if force redirect is enabled\n if (!isAuthenticated || forceRedirect) {\n // Use signInFallbackRedirectUrl if provided, otherwise signUpFallbackRedirectUrl, otherwise current URL\n let returnUrl =\n signInFallbackRedirectUrl || signUpFallbackRedirectUrl || window.location.href;\n\n // if it's not a full URL, add the current origin\n if (!returnUrl.startsWith('http')) {\n returnUrl = `${window.location.origin}${returnUrl}`;\n }\n\n login(returnUrl);\n }\n }, [\n isIdle,\n isLoading,\n isAuthenticated,\n forceRedirect,\n signInFallbackRedirectUrl,\n signUpFallbackRedirectUrl,\n login,\n ]);\n\n // Return null while redirecting (component will unmount after redirect)\n return null;\n}\n"],"names":["RedirectToSignIn","signUpFallbackRedirectUrl","signInFallbackRedirectUrl","forceRedirect","login","isAuthenticated","isLoading","isIdle","useAuth","useEffect","returnUrl"],"mappings":";;AA0CO,SAASA,EAAiB;AAAA,EAC/B,2BAAAC;AAAA,EACA,2BAAAC;AAAA,EACA,eAAAC,IAAgB;AAClB,GAA0B;AACxB,QAAM,EAAE,OAAAC,GAAO,iBAAAC,GAAiB,WAAAC,GAAW,QAAAC,EAAA,IAAWC,EAAA;AAEtD,SAAAC,EAAU,MAAM;AAGd,QAAI,EADaF,KACDD,OAKZ,CAACD,KAAmBF,IAAe;AAErC,UAAIO,IACFR,KAA6BD,KAA6B,OAAO,SAAS;AAG5E,MAAKS,EAAU,WAAW,MAAM,MAC9BA,IAAY,GAAG,OAAO,SAAS,MAAM,GAAGA,CAAS,KAGnDN,EAAMM,CAAS;AAAA,IACjB;AAAA,EACF,GAAG;AAAA,IACDH;AAAA,IACAD;AAAA,IACAD;AAAA,IACAF;AAAA,IACAD;AAAA,IACAD;AAAA,IACAG;AAAA,EAAA,CACD,GAGM;AACT;"}
1
+ {"version":3,"file":"redirect-to-sign-in.js","sources":["../../src/components/redirect-to-sign-in.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useAuth } from '../hooks/use-auth';\n\nexport interface RedirectToSignInProps {\n /**\n * URL to redirect to after sign up\n * Note: In Blimu, this is used as the return URL after authentication\n */\n signUpFallbackRedirectUrl?: string;\n /**\n * URL to redirect to after sign in\n * Note: In Blimu, this is used as the return URL after authentication\n */\n signInFallbackRedirectUrl?: string;\n /**\n * Force redirect even if already authenticated\n * @default false\n */\n forceRedirect?: boolean;\n}\n\n/**\n * Component that redirects unauthenticated users to the sign-in page\n *\n * This component automatically redirects users to the authentication page\n * when they are not authenticated. It matches Clerk's RedirectToSignIn API\n * for easier migration.\n *\n * @example\n * ```tsx\n * function ProtectedRoute() {\n * const { isAuthenticated } = useAuth();\n *\n * if (!isAuthenticated) {\n * return <RedirectToSignIn signInFallbackRedirectUrl=\"/dashboard\" />;\n * }\n *\n * return <ProtectedContent />;\n * }\n * ```\n */\nexport function RedirectToSignIn({\n signUpFallbackRedirectUrl,\n signInFallbackRedirectUrl,\n forceRedirect = false,\n}: RedirectToSignInProps) {\n const { login, isAuthenticated, isLoading, isIdle } = useAuth();\n\n useEffect(() => {\n // Wait for auth to be ready (not idle) and not loading\n const isReady = !isIdle;\n if (!isReady || isLoading) {\n return;\n }\n\n // Redirect if not authenticated or if force redirect is enabled\n if (!isAuthenticated || forceRedirect) {\n // Use signInFallbackRedirectUrl if provided, otherwise signUpFallbackRedirectUrl, otherwise current URL\n let returnUrl =\n signInFallbackRedirectUrl || signUpFallbackRedirectUrl || window.location.href;\n\n // if it's not a full URL, add the current origin\n if (!returnUrl.startsWith('http')) {\n returnUrl = `${window.location.origin}${returnUrl}`;\n }\n\n login(returnUrl);\n }\n }, [\n isIdle,\n isLoading,\n isAuthenticated,\n forceRedirect,\n signInFallbackRedirectUrl,\n signUpFallbackRedirectUrl,\n login,\n ]);\n\n // Return null while redirecting (component will unmount after redirect)\n return null;\n}\n"],"names":[],"mappings":";;AA0CO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,gBAAgB;AAClB,GAA0B;AACxB,QAAM,EAAE,OAAO,iBAAiB,WAAW,OAAA,IAAW,QAAA;AAEtD,YAAU,MAAM;AAEd,UAAM,UAAU,CAAC;AACjB,QAAI,CAAC,WAAW,WAAW;AACzB;AAAA,IACF;AAGA,QAAI,CAAC,mBAAmB,eAAe;AAErC,UAAI,YACF,6BAA6B,6BAA6B,OAAO,SAAS;AAG5E,UAAI,CAAC,UAAU,WAAW,MAAM,GAAG;AACjC,oBAAY,GAAG,OAAO,SAAS,MAAM,GAAG,SAAS;AAAA,MACnD;AAEA,YAAM,SAAS;AAAA,IACjB;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAGD,SAAO;AACT;"}
@@ -1,2 +1,37 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime");require("react");const f=require("../lib/utils.cjs"),g=require("../lib/variants.cjs"),h=require("../hooks/use-auth.cjs");function q({variant:n="default",size:e="default",redirectUrl:i,className:u,children:o="Sign In",...t}){const{login:r,isAuthenticated:c}=h.useAuth(),s=l=>{if(t.onClick&&t.onClick(l),!c){const a=i||window.location.href;r(a)}};return d.jsx("button",{className:f.cn(g.buttonVariants({variant:n,size:e}),u),onClick:s,...t,children:o})}exports.SignInButton=q;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ require("react");
5
+ const utils = require("../lib/utils.cjs");
6
+ const variants = require("../lib/variants.cjs");
7
+ const useAuth = require("../hooks/use-auth.cjs");
8
+ function SignInButton({
9
+ variant = "default",
10
+ size = "default",
11
+ redirectUrl,
12
+ className,
13
+ children = "Sign In",
14
+ ...props
15
+ }) {
16
+ const { login, isAuthenticated } = useAuth.useAuth();
17
+ const handleClick = (e) => {
18
+ if (props.onClick) {
19
+ props.onClick(e);
20
+ }
21
+ if (!isAuthenticated) {
22
+ const returnUrl = redirectUrl || window.location.href;
23
+ login(returnUrl);
24
+ }
25
+ };
26
+ return /* @__PURE__ */ jsxRuntime.jsx(
27
+ "button",
28
+ {
29
+ className: utils.cn(variants.buttonVariants({ variant, size }), className),
30
+ onClick: handleClick,
31
+ ...props,
32
+ children
33
+ }
34
+ );
35
+ }
36
+ exports.SignInButton = SignInButton;
2
37
  //# sourceMappingURL=sign-in-button.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sign-in-button.cjs","sources":["../../src/components/sign-in-button.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport { buttonVariants, type ButtonVariants } from '../lib/variants';\n\nimport { useAuth } from '../hooks/use-auth';\n\nexport interface SignInButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Variant style\n * @default \"default\"\n */\n variant?: ButtonVariants['variant'];\n\n /**\n * Size variant\n * @default \"default\"\n */\n size?: ButtonVariants['size'];\n\n /**\n * URL to redirect to after sign-in\n */\n redirectUrl?: string;\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Button content\n */\n children?: React.ReactNode;\n}\n\n/**\n * Button component that triggers the authentication flow\n *\n * @example\n * ```tsx\n * <SignInButton>Sign In</SignInButton>\n * ```\n *\n * @example With custom variant and redirect\n * ```tsx\n * <SignInButton\n * variant=\"outline\"\n * size=\"lg\"\n * redirectUrl=\"/dashboard\"\n * >\n * Sign In to Dashboard\n * </SignInButton>\n * ```\n */\nexport function SignInButton({\n variant = 'default',\n size = 'default',\n redirectUrl,\n className,\n children = 'Sign In',\n ...props\n}: SignInButtonProps) {\n const { login, isAuthenticated } = useAuth();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (props.onClick) {\n props.onClick(e);\n }\n\n if (!isAuthenticated) {\n const returnUrl = redirectUrl || window.location.href;\n login(returnUrl);\n }\n };\n\n return (\n <button\n className={cn(buttonVariants({ variant, size }), className)}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n}\n"],"names":["SignInButton","variant","size","redirectUrl","className","children","props","login","isAuthenticated","useAuth","handleClick","e","returnUrl","jsx","cn","buttonVariants"],"mappings":"8OAuDO,SAASA,EAAa,CAC3B,QAAAC,EAAU,UACV,KAAAC,EAAO,UACP,YAAAC,EACA,UAAAC,EACA,SAAAC,EAAW,UACX,GAAGC,CACL,EAAsB,CACpB,KAAM,CAAE,MAAAC,EAAO,gBAAAC,CAAA,EAAoBC,UAAA,EAE7BC,EAAeC,GAA2C,CAK9D,GAJIL,EAAM,SACRA,EAAM,QAAQK,CAAC,EAGb,CAACH,EAAiB,CACpB,MAAMI,EAAYT,GAAe,OAAO,SAAS,KACjDI,EAAMK,CAAS,CACjB,CACF,EAEA,OACEC,EAAAA,IAAC,SAAA,CACC,UAAWC,EAAAA,GAAGC,iBAAe,CAAE,QAAAd,EAAS,KAAAC,CAAA,CAAM,EAAGE,CAAS,EAC1D,QAASM,EACR,GAAGJ,EAEH,SAAAD,CAAA,CAAA,CAGP"}
1
+ {"version":3,"file":"sign-in-button.cjs","sources":["../../src/components/sign-in-button.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport { buttonVariants, type ButtonVariants } from '../lib/variants';\n\nimport { useAuth } from '../hooks/use-auth';\n\nexport interface SignInButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Variant style\n * @default \"default\"\n */\n variant?: ButtonVariants['variant'];\n\n /**\n * Size variant\n * @default \"default\"\n */\n size?: ButtonVariants['size'];\n\n /**\n * URL to redirect to after sign-in\n */\n redirectUrl?: string;\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Button content\n */\n children?: React.ReactNode;\n}\n\n/**\n * Button component that triggers the authentication flow\n *\n * @example\n * ```tsx\n * <SignInButton>Sign In</SignInButton>\n * ```\n *\n * @example With custom variant and redirect\n * ```tsx\n * <SignInButton\n * variant=\"outline\"\n * size=\"lg\"\n * redirectUrl=\"/dashboard\"\n * >\n * Sign In to Dashboard\n * </SignInButton>\n * ```\n */\nexport function SignInButton({\n variant = 'default',\n size = 'default',\n redirectUrl,\n className,\n children = 'Sign In',\n ...props\n}: SignInButtonProps) {\n const { login, isAuthenticated } = useAuth();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (props.onClick) {\n props.onClick(e);\n }\n\n if (!isAuthenticated) {\n const returnUrl = redirectUrl || window.location.href;\n login(returnUrl);\n }\n };\n\n return (\n <button\n className={cn(buttonVariants({ variant, size }), className)}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n}\n"],"names":["useAuth","jsx","cn","buttonVariants"],"mappings":";;;;;;;AAuDO,SAAS,aAAa;AAAA,EAC3B,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAAsB;AACpB,QAAM,EAAE,OAAO,gBAAA,IAAoBA,gBAAA;AAEnC,QAAM,cAAc,CAAC,MAA2C;AAC9D,QAAI,MAAM,SAAS;AACjB,YAAM,QAAQ,CAAC;AAAA,IACjB;AAEA,QAAI,CAAC,iBAAiB;AACpB,YAAM,YAAY,eAAe,OAAO,SAAS;AACjD,YAAM,SAAS;AAAA,IACjB;AAAA,EACF;AAEA,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,MAAAA,GAAGC,wBAAe,EAAE,SAAS,KAAA,CAAM,GAAG,SAAS;AAAA,MAC1D,SAAS;AAAA,MACR,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
@@ -1,33 +1,37 @@
1
- import { jsx as a } from "react/jsx-runtime";
1
+ import { jsx } from "react/jsx-runtime";
2
2
  import "react";
3
- import { cn as s } from "../lib/utils.js";
4
- import { buttonVariants as d } from "../lib/variants.js";
5
- import { useAuth as h } from "../hooks/use-auth.js";
6
- function w({
7
- variant: n = "default",
8
- size: o = "default",
9
- redirectUrl: i,
10
- className: r,
11
- children: c = "Sign In",
12
- ...t
3
+ import { cn } from "../lib/utils.js";
4
+ import { buttonVariants } from "../lib/variants.js";
5
+ import { useAuth } from "../hooks/use-auth.js";
6
+ function SignInButton({
7
+ variant = "default",
8
+ size = "default",
9
+ redirectUrl,
10
+ className,
11
+ children = "Sign In",
12
+ ...props
13
13
  }) {
14
- const { login: e, isAuthenticated: l } = h(), u = (f) => {
15
- if (t.onClick && t.onClick(f), !l) {
16
- const m = i || window.location.href;
17
- e(m);
14
+ const { login, isAuthenticated } = useAuth();
15
+ const handleClick = (e) => {
16
+ if (props.onClick) {
17
+ props.onClick(e);
18
+ }
19
+ if (!isAuthenticated) {
20
+ const returnUrl = redirectUrl || window.location.href;
21
+ login(returnUrl);
18
22
  }
19
23
  };
20
- return /* @__PURE__ */ a(
24
+ return /* @__PURE__ */ jsx(
21
25
  "button",
22
26
  {
23
- className: s(d({ variant: n, size: o }), r),
24
- onClick: u,
25
- ...t,
26
- children: c
27
+ className: cn(buttonVariants({ variant, size }), className),
28
+ onClick: handleClick,
29
+ ...props,
30
+ children
27
31
  }
28
32
  );
29
33
  }
30
34
  export {
31
- w as SignInButton
35
+ SignInButton
32
36
  };
33
37
  //# sourceMappingURL=sign-in-button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sign-in-button.js","sources":["../../src/components/sign-in-button.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport { buttonVariants, type ButtonVariants } from '../lib/variants';\n\nimport { useAuth } from '../hooks/use-auth';\n\nexport interface SignInButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Variant style\n * @default \"default\"\n */\n variant?: ButtonVariants['variant'];\n\n /**\n * Size variant\n * @default \"default\"\n */\n size?: ButtonVariants['size'];\n\n /**\n * URL to redirect to after sign-in\n */\n redirectUrl?: string;\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Button content\n */\n children?: React.ReactNode;\n}\n\n/**\n * Button component that triggers the authentication flow\n *\n * @example\n * ```tsx\n * <SignInButton>Sign In</SignInButton>\n * ```\n *\n * @example With custom variant and redirect\n * ```tsx\n * <SignInButton\n * variant=\"outline\"\n * size=\"lg\"\n * redirectUrl=\"/dashboard\"\n * >\n * Sign In to Dashboard\n * </SignInButton>\n * ```\n */\nexport function SignInButton({\n variant = 'default',\n size = 'default',\n redirectUrl,\n className,\n children = 'Sign In',\n ...props\n}: SignInButtonProps) {\n const { login, isAuthenticated } = useAuth();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (props.onClick) {\n props.onClick(e);\n }\n\n if (!isAuthenticated) {\n const returnUrl = redirectUrl || window.location.href;\n login(returnUrl);\n }\n };\n\n return (\n <button\n className={cn(buttonVariants({ variant, size }), className)}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n}\n"],"names":["SignInButton","variant","size","redirectUrl","className","children","props","login","isAuthenticated","useAuth","handleClick","e","returnUrl","jsx","cn","buttonVariants"],"mappings":";;;;;AAuDO,SAASA,EAAa;AAAA,EAC3B,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,GAAGC;AACL,GAAsB;AACpB,QAAM,EAAE,OAAAC,GAAO,iBAAAC,EAAA,IAAoBC,EAAA,GAE7BC,IAAc,CAACC,MAA2C;AAK9D,QAJIL,EAAM,WACRA,EAAM,QAAQK,CAAC,GAGb,CAACH,GAAiB;AACpB,YAAMI,IAAYT,KAAe,OAAO,SAAS;AACjD,MAAAI,EAAMK,CAAS;AAAA,IACjB;AAAA,EACF;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAGC,EAAe,EAAE,SAAAd,GAAS,MAAAC,EAAA,CAAM,GAAGE,CAAS;AAAA,MAC1D,SAASM;AAAA,MACR,GAAGJ;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"sign-in-button.js","sources":["../../src/components/sign-in-button.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport { buttonVariants, type ButtonVariants } from '../lib/variants';\n\nimport { useAuth } from '../hooks/use-auth';\n\nexport interface SignInButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Variant style\n * @default \"default\"\n */\n variant?: ButtonVariants['variant'];\n\n /**\n * Size variant\n * @default \"default\"\n */\n size?: ButtonVariants['size'];\n\n /**\n * URL to redirect to after sign-in\n */\n redirectUrl?: string;\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Button content\n */\n children?: React.ReactNode;\n}\n\n/**\n * Button component that triggers the authentication flow\n *\n * @example\n * ```tsx\n * <SignInButton>Sign In</SignInButton>\n * ```\n *\n * @example With custom variant and redirect\n * ```tsx\n * <SignInButton\n * variant=\"outline\"\n * size=\"lg\"\n * redirectUrl=\"/dashboard\"\n * >\n * Sign In to Dashboard\n * </SignInButton>\n * ```\n */\nexport function SignInButton({\n variant = 'default',\n size = 'default',\n redirectUrl,\n className,\n children = 'Sign In',\n ...props\n}: SignInButtonProps) {\n const { login, isAuthenticated } = useAuth();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (props.onClick) {\n props.onClick(e);\n }\n\n if (!isAuthenticated) {\n const returnUrl = redirectUrl || window.location.href;\n login(returnUrl);\n }\n };\n\n return (\n <button\n className={cn(buttonVariants({ variant, size }), className)}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n}\n"],"names":[],"mappings":";;;;;AAuDO,SAAS,aAAa;AAAA,EAC3B,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAAsB;AACpB,QAAM,EAAE,OAAO,gBAAA,IAAoB,QAAA;AAEnC,QAAM,cAAc,CAAC,MAA2C;AAC9D,QAAI,MAAM,SAAS;AACjB,YAAM,QAAQ,CAAC;AAAA,IACjB;AAEA,QAAI,CAAC,iBAAiB;AACpB,YAAM,YAAY,eAAe,OAAO,SAAS;AACjD,YAAM,SAAS;AAAA,IACjB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAG,eAAe,EAAE,SAAS,KAAA,CAAM,GAAG,SAAS;AAAA,MAC1D,SAAS;AAAA,MACR,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;"}