@blimu/react 1.1.0 → 1.1.4

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 (489) hide show
  1. package/README.md +1 -1
  2. package/dist/_virtual/index.cjs +5 -1
  3. package/dist/_virtual/index.cjs.map +1 -1
  4. package/dist/_virtual/index.js +3 -3
  5. package/dist/_virtual/index2.cjs +4 -1
  6. package/dist/_virtual/index2.cjs.map +1 -1
  7. package/dist/_virtual/index2.js +2 -2
  8. package/dist/_virtual/use-sync-external-store-shim.development.cjs +4 -1
  9. package/dist/_virtual/use-sync-external-store-shim.development.cjs.map +1 -1
  10. package/dist/_virtual/use-sync-external-store-shim.development.js +2 -2
  11. package/dist/_virtual/use-sync-external-store-shim.production.cjs +4 -1
  12. package/dist/_virtual/use-sync-external-store-shim.production.cjs.map +1 -1
  13. package/dist/_virtual/use-sync-external-store-shim.production.js +2 -2
  14. package/dist/client/auth.service.cjs +248 -1
  15. package/dist/client/auth.service.cjs.map +1 -1
  16. package/dist/client/auth.service.d.ts.map +1 -1
  17. package/dist/client/auth.service.js +193 -96
  18. package/dist/client/auth.service.js.map +1 -1
  19. package/dist/client/external-store.cjs +26 -1
  20. package/dist/client/external-store.cjs.map +1 -1
  21. package/dist/client/external-store.js +22 -8
  22. package/dist/client/external-store.js.map +1 -1
  23. package/dist/client/runtime-client.cjs +136 -1
  24. package/dist/client/runtime-client.cjs.map +1 -1
  25. package/dist/client/runtime-client.d.ts +1 -1
  26. package/dist/client/runtime-client.d.ts.map +1 -1
  27. package/dist/client/runtime-client.js +85 -51
  28. package/dist/client/runtime-client.js.map +1 -1
  29. package/dist/components/index.cjs +13 -0
  30. package/dist/components/index.cjs.map +1 -0
  31. package/dist/components/index.d.ts +6 -6
  32. package/dist/components/index.d.ts.map +1 -1
  33. package/dist/components/index.js +13 -0
  34. package/dist/components/index.js.map +1 -0
  35. package/dist/components/members-list.cjs +132 -1
  36. package/dist/components/members-list.cjs.map +1 -1
  37. package/dist/components/members-list.d.ts.map +1 -1
  38. package/dist/components/members-list.js +69 -64
  39. package/dist/components/members-list.js.map +1 -1
  40. package/dist/components/redirect-to-sign-in.cjs +34 -1
  41. package/dist/components/redirect-to-sign-in.cjs.map +1 -1
  42. package/dist/components/redirect-to-sign-in.js +28 -20
  43. package/dist/components/redirect-to-sign-in.js.map +1 -1
  44. package/dist/components/sign-in-button.cjs +36 -1
  45. package/dist/components/sign-in-button.cjs.map +1 -1
  46. package/dist/components/sign-in-button.d.ts.map +1 -1
  47. package/dist/components/sign-in-button.js +25 -21
  48. package/dist/components/sign-in-button.js.map +1 -1
  49. package/dist/components/ui/avatar.cjs +42 -1
  50. package/dist/components/ui/avatar.cjs.map +1 -1
  51. package/dist/components/ui/avatar.d.ts +2 -2
  52. package/dist/components/ui/avatar.d.ts.map +1 -1
  53. package/dist/components/ui/avatar.js +23 -23
  54. package/dist/components/ui/avatar.js.map +1 -1
  55. package/dist/components/ui/badge.d.ts +2 -2
  56. package/dist/components/ui/badge.d.ts.map +1 -1
  57. package/dist/components/ui/dropdown-menu.cjs +148 -1
  58. package/dist/components/ui/dropdown-menu.cjs.map +1 -1
  59. package/dist/components/ui/dropdown-menu.d.ts +2 -2
  60. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  61. package/dist/components/ui/dropdown-menu.js +83 -81
  62. package/dist/components/ui/dropdown-menu.js.map +1 -1
  63. package/dist/components/ui/popover.d.ts +2 -2
  64. package/dist/components/ui/popover.d.ts.map +1 -1
  65. package/dist/components/ui/separator.d.ts +1 -1
  66. package/dist/components/ui/separator.d.ts.map +1 -1
  67. package/dist/components/user-avatar.cjs +22 -1
  68. package/dist/components/user-avatar.cjs.map +1 -1
  69. package/dist/components/user-avatar.d.ts +5 -5
  70. package/dist/components/user-avatar.d.ts.map +1 -1
  71. package/dist/components/user-avatar.js +16 -16
  72. package/dist/components/user-avatar.js.map +1 -1
  73. package/dist/components/user-button/styles.cjs +39 -1
  74. package/dist/components/user-button/styles.cjs.map +1 -1
  75. package/dist/components/user-button/styles.js +6 -5
  76. package/dist/components/user-button/styles.js.map +1 -1
  77. package/dist/components/user-button/user-button.cjs +98 -1
  78. package/dist/components/user-button/user-button.cjs.map +1 -1
  79. package/dist/components/user-button/user-button.d.ts +1 -1
  80. package/dist/components/user-button/user-button.d.ts.map +1 -1
  81. package/dist/components/user-button/user-button.js +64 -58
  82. package/dist/components/user-button/user-button.js.map +1 -1
  83. package/dist/hooks/index.cjs +14 -0
  84. package/dist/hooks/index.cjs.map +1 -0
  85. package/dist/hooks/index.d.ts +3 -2
  86. package/dist/hooks/index.d.ts.map +1 -1
  87. package/dist/hooks/index.js +14 -0
  88. package/dist/hooks/index.js.map +1 -0
  89. package/dist/hooks/use-auth.cjs +44 -1
  90. package/dist/hooks/use-auth.cjs.map +1 -1
  91. package/dist/hooks/use-auth.d.ts +13 -15
  92. package/dist/hooks/use-auth.d.ts.map +1 -1
  93. package/dist/hooks/use-auth.js +30 -26
  94. package/dist/hooks/use-auth.js.map +1 -1
  95. package/dist/hooks/use-client.cjs +9 -1
  96. package/dist/hooks/use-client.cjs.map +1 -1
  97. package/dist/hooks/use-client.d.ts +1 -1
  98. package/dist/hooks/use-client.d.ts.map +1 -1
  99. package/dist/hooks/use-client.js +6 -5
  100. package/dist/hooks/use-client.js.map +1 -1
  101. package/dist/hooks/use-members.cjs +60 -1
  102. package/dist/hooks/use-members.cjs.map +1 -1
  103. package/dist/hooks/use-members.d.ts +5 -5
  104. package/dist/hooks/use-members.d.ts.map +1 -1
  105. package/dist/hooks/use-members.js +53 -41
  106. package/dist/hooks/use-members.js.map +1 -1
  107. package/dist/hooks/use-store.cjs +17 -1
  108. package/dist/hooks/use-store.cjs.map +1 -1
  109. package/dist/hooks/use-store.js +7 -7
  110. package/dist/hooks/use-store.js.map +1 -1
  111. package/dist/index.cjs +37 -1
  112. package/dist/index.cjs.map +1 -1
  113. package/dist/index.d.ts +5 -5
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +35 -35
  116. package/dist/lib/utils.cjs +8 -1
  117. package/dist/lib/utils.cjs.map +1 -1
  118. package/dist/lib/utils.js +5 -5
  119. package/dist/lib/utils.js.map +1 -1
  120. package/dist/lib/variants.cjs +46 -1
  121. package/dist/lib/variants.cjs.map +1 -1
  122. package/dist/lib/variants.d.ts +1 -1
  123. package/dist/lib/variants.js +6 -5
  124. package/dist/lib/variants.js.map +1 -1
  125. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.cjs +721 -1
  126. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.cjs.map +1 -1
  127. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +571 -377
  128. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -1
  129. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs +625 -1
  130. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.cjs.map +1 -1
  131. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +539 -316
  132. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -1
  133. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs +313 -1
  134. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.map +1 -1
  135. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +261 -172
  136. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +1 -1
  137. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs +154 -1
  138. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.cjs.map +1 -1
  139. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs +173 -1
  140. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.cjs.map +1 -1
  141. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +144 -107
  142. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -1
  143. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +111 -87
  144. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -1
  145. package/dist/node_modules/@radix-ui/primitive/dist/index.cjs +11 -1
  146. package/dist/node_modules/@radix-ui/primitive/dist/index.cjs.map +1 -1
  147. package/dist/node_modules/@radix-ui/primitive/dist/index.js +7 -5
  148. package/dist/node_modules/@radix-ui/primitive/dist/index.js.map +1 -1
  149. package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs +42 -1
  150. package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs.map +1 -1
  151. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js +17 -16
  152. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js.map +1 -1
  153. package/dist/node_modules/@radix-ui/react-avatar/dist/index.cjs +140 -1
  154. package/dist/node_modules/@radix-ui/react-avatar/dist/index.cjs.map +1 -1
  155. package/dist/node_modules/@radix-ui/react-avatar/dist/index.js +105 -57
  156. package/dist/node_modules/@radix-ui/react-avatar/dist/index.js.map +1 -1
  157. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.cjs +80 -1
  158. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -1
  159. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.js +49 -41
  160. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.js.map +1 -1
  161. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.cjs +56 -1
  162. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -1
  163. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.js +17 -10
  164. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -1
  165. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-slot/dist/index.cjs +119 -1
  166. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -1
  167. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-slot/dist/index.js +86 -42
  168. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -1
  169. package/dist/node_modules/@radix-ui/react-collection/dist/index.cjs +70 -1
  170. package/dist/node_modules/@radix-ui/react-collection/dist/index.cjs.map +1 -1
  171. package/dist/node_modules/@radix-ui/react-collection/dist/index.js +57 -37
  172. package/dist/node_modules/@radix-ui/react-collection/dist/index.js.map +1 -1
  173. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +56 -1
  174. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -1
  175. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +29 -19
  176. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +1 -1
  177. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs +79 -1
  178. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -1
  179. package/dist/node_modules/@radix-ui/react-context/dist/index.js +48 -39
  180. package/dist/node_modules/@radix-ui/react-context/dist/index.js.map +1 -1
  181. package/dist/node_modules/@radix-ui/react-direction/dist/index.cjs +27 -1
  182. package/dist/node_modules/@radix-ui/react-direction/dist/index.cjs.map +1 -1
  183. package/dist/node_modules/@radix-ui/react-direction/dist/index.js +6 -6
  184. package/dist/node_modules/@radix-ui/react-direction/dist/index.js.map +1 -1
  185. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs +229 -1
  186. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs.map +1 -1
  187. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +182 -97
  188. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +1 -1
  189. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.cjs +296 -1
  190. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.cjs.map +1 -1
  191. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.js +232 -167
  192. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.js.map +1 -1
  193. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs +46 -1
  194. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs.map +1 -1
  195. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +23 -11
  196. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +1 -1
  197. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs +224 -1
  198. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs.map +1 -1
  199. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +169 -98
  200. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +1 -1
  201. package/dist/node_modules/@radix-ui/react-id/dist/index.cjs +31 -1
  202. package/dist/node_modules/@radix-ui/react-id/dist/index.cjs.map +1 -1
  203. package/dist/node_modules/@radix-ui/react-id/dist/index.js +11 -10
  204. package/dist/node_modules/@radix-ui/react-id/dist/index.js.map +1 -1
  205. package/dist/node_modules/@radix-ui/react-menu/dist/index.cjs +845 -1
  206. package/dist/node_modules/@radix-ui/react-menu/dist/index.cjs.map +1 -1
  207. package/dist/node_modules/@radix-ui/react-menu/dist/index.js +662 -442
  208. package/dist/node_modules/@radix-ui/react-menu/dist/index.js.map +1 -1
  209. package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs +308 -1
  210. package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs.map +1 -1
  211. package/dist/node_modules/@radix-ui/react-popper/dist/index.js +209 -137
  212. package/dist/node_modules/@radix-ui/react-popper/dist/index.js.map +1 -1
  213. package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs +34 -1
  214. package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs.map +1 -1
  215. package/dist/node_modules/@radix-ui/react-portal/dist/index.js +14 -12
  216. package/dist/node_modules/@radix-ui/react-portal/dist/index.js.map +1 -1
  217. package/dist/node_modules/@radix-ui/react-presence/dist/index.cjs +145 -1
  218. package/dist/node_modules/@radix-ui/react-presence/dist/index.cjs.map +1 -1
  219. package/dist/node_modules/@radix-ui/react-presence/dist/index.js +103 -45
  220. package/dist/node_modules/@radix-ui/react-presence/dist/index.js.map +1 -1
  221. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs +61 -1
  222. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -1
  223. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js +21 -14
  224. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -1
  225. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.cjs +244 -1
  226. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.cjs.map +1 -1
  227. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js +179 -135
  228. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +1 -1
  229. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs +105 -1
  230. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -1
  231. package/dist/node_modules/@radix-ui/react-slot/dist/index.js +74 -35
  232. package/dist/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -1
  233. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs +28 -1
  234. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs.map +1 -1
  235. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +8 -7
  236. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +1 -1
  237. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs +86 -1
  238. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs.map +1 -1
  239. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +57 -40
  240. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +1 -1
  241. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.cjs +34 -1
  242. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.cjs.map +1 -1
  243. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +13 -10
  244. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +1 -1
  245. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.cjs +15 -1
  246. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.cjs.map +1 -1
  247. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.js +8 -8
  248. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.js.map +1 -1
  249. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs +23 -1
  250. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs.map +1 -1
  251. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +3 -3
  252. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +1 -1
  253. package/dist/node_modules/@radix-ui/react-use-size/dist/index.cjs +56 -1
  254. package/dist/node_modules/@radix-ui/react-use-size/dist/index.cjs.map +1 -1
  255. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js +34 -22
  256. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js.map +1 -1
  257. package/dist/node_modules/aria-hidden/dist/es2015/index.cjs +122 -1
  258. package/dist/node_modules/aria-hidden/dist/es2015/index.cjs.map +1 -1
  259. package/dist/node_modules/aria-hidden/dist/es2015/index.js +111 -41
  260. package/dist/node_modules/aria-hidden/dist/es2015/index.js.map +1 -1
  261. package/dist/node_modules/class-variance-authority/dist/index.cjs +45 -1
  262. package/dist/node_modules/class-variance-authority/dist/index.cjs.map +1 -1
  263. package/dist/node_modules/class-variance-authority/dist/index.js +40 -30
  264. package/dist/node_modules/class-variance-authority/dist/index.js.map +1 -1
  265. package/dist/node_modules/clsx/dist/clsx.cjs +17 -1
  266. package/dist/node_modules/clsx/dist/clsx.cjs.map +1 -1
  267. package/dist/node_modules/clsx/dist/clsx.js +13 -13
  268. package/dist/node_modules/clsx/dist/clsx.js.map +1 -1
  269. package/dist/node_modules/get-nonce/dist/es2015/index.cjs +9 -1
  270. package/dist/node_modules/get-nonce/dist/es2015/index.cjs.map +1 -1
  271. package/dist/node_modules/get-nonce/dist/es2015/index.js +5 -3
  272. package/dist/node_modules/get-nonce/dist/es2015/index.js.map +1 -1
  273. package/dist/node_modules/js-cookie/dist/js.cookie.cjs +99 -1
  274. package/dist/node_modules/js-cookie/dist/js.cookie.cjs.map +1 -1
  275. package/dist/node_modules/js-cookie/dist/js.cookie.js +69 -43
  276. package/dist/node_modules/js-cookie/dist/js.cookie.js.map +1 -1
  277. package/dist/node_modules/jwt-decode/build/esm/index.cjs +58 -1
  278. package/dist/node_modules/jwt-decode/build/esm/index.cjs.map +1 -1
  279. package/dist/node_modules/jwt-decode/build/esm/index.js +36 -30
  280. package/dist/node_modules/jwt-decode/build/esm/index.js.map +1 -1
  281. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +35 -1
  282. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs.map +1 -1
  283. package/dist/node_modules/lucide-react/dist/esm/Icon.js +25 -25
  284. package/dist/node_modules/lucide-react/dist/esm/Icon.js.map +1 -1
  285. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +22 -1
  286. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs.map +1 -1
  287. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js +16 -15
  288. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js.map +1 -1
  289. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs +14 -1
  290. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs.map +1 -1
  291. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js +2 -2
  292. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js.map +1 -1
  293. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +7 -1
  294. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs.map +1 -1
  295. package/dist/node_modules/lucide-react/dist/esm/icons/check.js +5 -4
  296. package/dist/node_modules/lucide-react/dist/esm/icons/check.js.map +1 -1
  297. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +7 -1
  298. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs.map +1 -1
  299. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js +5 -4
  300. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js.map +1 -1
  301. package/dist/node_modules/lucide-react/dist/esm/icons/circle.cjs +7 -1
  302. package/dist/node_modules/lucide-react/dist/esm/icons/circle.cjs.map +1 -1
  303. package/dist/node_modules/lucide-react/dist/esm/icons/circle.js +5 -4
  304. package/dist/node_modules/lucide-react/dist/esm/icons/circle.js.map +1 -1
  305. package/dist/node_modules/lucide-react/dist/esm/icons/log-out.cjs +11 -1
  306. package/dist/node_modules/lucide-react/dist/esm/icons/log-out.cjs.map +1 -1
  307. package/dist/node_modules/lucide-react/dist/esm/icons/log-out.js +6 -5
  308. package/dist/node_modules/lucide-react/dist/esm/icons/log-out.js.map +1 -1
  309. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.cjs +26 -1
  310. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.cjs.map +1 -1
  311. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js +22 -14
  312. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js.map +1 -1
  313. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.cjs +28 -1
  314. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.cjs.map +1 -1
  315. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js +8 -8
  316. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js.map +1 -1
  317. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs +197 -4
  318. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs.map +1 -1
  319. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +163 -98
  320. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js.map +1 -1
  321. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.cjs +55 -1
  322. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.cjs.map +1 -1
  323. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js +31 -24
  324. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js.map +1 -1
  325. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.cjs +19 -1
  326. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.cjs.map +1 -1
  327. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +12 -9
  328. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js.map +1 -1
  329. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.cjs +102 -1
  330. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.cjs.map +1 -1
  331. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +85 -51
  332. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js.map +1 -1
  333. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.cjs +5 -1
  334. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.cjs.map +1 -1
  335. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js +3 -3
  336. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js.map +1 -1
  337. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.cjs +7 -1
  338. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.cjs.map +1 -1
  339. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js +5 -5
  340. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js.map +1 -1
  341. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.cjs +62 -36
  342. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.cjs.map +1 -1
  343. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js +41 -65
  344. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js.map +1 -1
  345. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.cjs +10 -1
  346. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.cjs.map +1 -1
  347. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +8 -5
  348. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js.map +1 -1
  349. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.cjs +37 -1
  350. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.cjs.map +1 -1
  351. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +28 -16
  352. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js.map +1 -1
  353. package/dist/node_modules/react-style-singleton/dist/es2015/component.cjs +13 -1
  354. package/dist/node_modules/react-style-singleton/dist/es2015/component.cjs.map +1 -1
  355. package/dist/node_modules/react-style-singleton/dist/es2015/component.js +9 -7
  356. package/dist/node_modules/react-style-singleton/dist/es2015/component.js.map +1 -1
  357. package/dist/node_modules/react-style-singleton/dist/es2015/hook.cjs +33 -1
  358. package/dist/node_modules/react-style-singleton/dist/es2015/hook.cjs.map +1 -1
  359. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js +11 -10
  360. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js.map +1 -1
  361. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.cjs +48 -1
  362. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.cjs.map +1 -1
  363. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js +35 -17
  364. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js.map +1 -1
  365. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +3014 -1
  366. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.map +1 -1
  367. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +804 -555
  368. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -1
  369. package/dist/node_modules/tailwindcss/dist/plugin.cjs +13 -1
  370. package/dist/node_modules/tailwindcss/dist/plugin.cjs.map +1 -1
  371. package/dist/node_modules/tailwindcss/dist/plugin.js +8 -8
  372. package/dist/node_modules/tailwindcss/dist/plugin.js.map +1 -1
  373. package/dist/node_modules/tslib/tslib.es6.cjs +38 -1
  374. package/dist/node_modules/tslib/tslib.es6.cjs.map +1 -1
  375. package/dist/node_modules/tslib/tslib.es6.js +33 -21
  376. package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
  377. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.cjs +11 -1
  378. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.cjs.map +1 -1
  379. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js +8 -3
  380. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js.map +1 -1
  381. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.cjs +52 -1
  382. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.cjs.map +1 -1
  383. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +28 -19
  384. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js.map +1 -1
  385. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.cjs +29 -1
  386. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.cjs.map +1 -1
  387. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js +15 -11
  388. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js.map +1 -1
  389. package/dist/node_modules/use-sidecar/dist/es2015/exports.cjs +38 -1
  390. package/dist/node_modules/use-sidecar/dist/es2015/exports.cjs.map +1 -1
  391. package/dist/node_modules/use-sidecar/dist/es2015/exports.js +15 -12
  392. package/dist/node_modules/use-sidecar/dist/es2015/exports.js.map +1 -1
  393. package/dist/node_modules/use-sidecar/dist/es2015/medium.cjs +88 -1
  394. package/dist/node_modules/use-sidecar/dist/es2015/medium.cjs.map +1 -1
  395. package/dist/node_modules/use-sidecar/dist/es2015/medium.js +64 -43
  396. package/dist/node_modules/use-sidecar/dist/es2015/medium.js.map +1 -1
  397. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +68 -1
  398. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.map +1 -1
  399. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +49 -39
  400. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  401. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.cjs +53 -1
  402. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.cjs.map +1 -1
  403. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +39 -32
  404. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +1 -1
  405. package/dist/node_modules/use-sync-external-store/shim/index.cjs +17 -1
  406. package/dist/node_modules/use-sync-external-store/shim/index.cjs.map +1 -1
  407. package/dist/node_modules/use-sync-external-store/shim/index.js +14 -7
  408. package/dist/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  409. package/dist/providers/auth/auth.context.cjs +5 -1
  410. package/dist/providers/auth/auth.context.cjs.map +1 -1
  411. package/dist/providers/auth/auth.context.js +3 -3
  412. package/dist/providers/auth/auth.context.js.map +1 -1
  413. package/dist/providers/auth/auth.hook.cjs +12 -1
  414. package/dist/providers/auth/auth.hook.cjs.map +1 -1
  415. package/dist/providers/auth/auth.hook.js +8 -7
  416. package/dist/providers/auth/auth.hook.js.map +1 -1
  417. package/dist/providers/auth/auth.provider.cjs +37 -1
  418. package/dist/providers/auth/auth.provider.cjs.map +1 -1
  419. package/dist/providers/auth/auth.provider.js +31 -22
  420. package/dist/providers/auth/auth.provider.js.map +1 -1
  421. package/dist/providers/blimu/blimu.context.cjs +5 -1
  422. package/dist/providers/blimu/blimu.context.cjs.map +1 -1
  423. package/dist/providers/blimu/blimu.context.d.ts +4 -4
  424. package/dist/providers/blimu/blimu.context.d.ts.map +1 -1
  425. package/dist/providers/blimu/blimu.context.js +3 -3
  426. package/dist/providers/blimu/blimu.context.js.map +1 -1
  427. package/dist/providers/blimu/blimu.hook.cjs +12 -1
  428. package/dist/providers/blimu/blimu.hook.cjs.map +1 -1
  429. package/dist/providers/blimu/blimu.hook.js +8 -7
  430. package/dist/providers/blimu/blimu.hook.js.map +1 -1
  431. package/dist/providers/blimu/blimu.provider.cjs +71 -1
  432. package/dist/providers/blimu/blimu.provider.cjs.map +1 -1
  433. package/dist/providers/blimu/blimu.provider.d.ts +1 -1
  434. package/dist/providers/blimu/blimu.provider.d.ts.map +1 -1
  435. package/dist/providers/blimu/blimu.provider.js +32 -27
  436. package/dist/providers/blimu/blimu.provider.js.map +1 -1
  437. package/dist/providers/index.cjs +13 -0
  438. package/dist/providers/index.cjs.map +1 -0
  439. package/dist/providers/index.d.ts +3 -3
  440. package/dist/providers/index.d.ts.map +1 -1
  441. package/dist/providers/index.js +13 -0
  442. package/dist/providers/index.js.map +1 -0
  443. package/dist/providers/theme/index.d.ts +2 -2
  444. package/dist/providers/theme/index.d.ts.map +1 -1
  445. package/dist/providers/theme/theme.context.cjs +5 -1
  446. package/dist/providers/theme/theme.context.cjs.map +1 -1
  447. package/dist/providers/theme/theme.context.js +3 -3
  448. package/dist/providers/theme/theme.context.js.map +1 -1
  449. package/dist/providers/theme/theme.hook.cjs +12 -1
  450. package/dist/providers/theme/theme.hook.cjs.map +1 -1
  451. package/dist/providers/theme/theme.hook.js +8 -7
  452. package/dist/providers/theme/theme.hook.js.map +1 -1
  453. package/dist/providers/theme/theme.provider.cjs +104 -1
  454. package/dist/providers/theme/theme.provider.cjs.map +1 -1
  455. package/dist/providers/theme/theme.provider.d.ts.map +1 -1
  456. package/dist/providers/theme/theme.provider.js +85 -48
  457. package/dist/providers/theme/theme.provider.js.map +1 -1
  458. package/dist/styles/styles.css +34 -40
  459. package/dist/styles/tw-styles.css +34 -40
  460. package/dist/tailwind.cjs +200 -0
  461. package/dist/tailwind.cjs.map +1 -0
  462. package/dist/{tailwind.plugin.js → tailwind.js} +43 -43
  463. package/dist/tailwind.js.map +1 -0
  464. package/dist/types/index.cjs +11 -1
  465. package/dist/types/index.cjs.map +1 -1
  466. package/dist/types/index.d.ts +22 -8
  467. package/dist/types/index.d.ts.map +1 -1
  468. package/dist/types/index.js +8 -8
  469. package/dist/types/index.js.map +1 -1
  470. package/dist/utils/publishable-key.cjs +62 -1
  471. package/dist/utils/publishable-key.cjs.map +1 -1
  472. package/dist/utils/publishable-key.js +52 -27
  473. package/dist/utils/publishable-key.js.map +1 -1
  474. package/package.json +68 -53
  475. package/dist/components.cjs +0 -2
  476. package/dist/components.cjs.map +0 -1
  477. package/dist/components.js +0 -13
  478. package/dist/components.js.map +0 -1
  479. package/dist/hooks.cjs +0 -2
  480. package/dist/hooks.cjs.map +0 -1
  481. package/dist/hooks.js +0 -14
  482. package/dist/hooks.js.map +0 -1
  483. package/dist/providers.cjs +0 -2
  484. package/dist/providers.cjs.map +0 -1
  485. package/dist/providers.js +0 -13
  486. package/dist/providers.js.map +0 -1
  487. package/dist/tailwind.plugin.cjs +0 -2
  488. package/dist/tailwind.plugin.cjs.map +0 -1
  489. package/dist/tailwind.plugin.js.map +0 -1
@@ -1,2 +1,133 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),M=require("react"),P=require("./user-avatar.cjs"),d=require("../lib/utils.cjs"),k=require("../hooks/use-members.cjs");function w(s){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const i in s)if(i!=="default"){const r=Object.getOwnPropertyDescriptor(s,i);Object.defineProperty(l,i,r.get?r:{enumerable:!0,get:()=>s[i]})}}return l.default=s,Object.freeze(l)}const O=w(M);function q({resourceType:s,resourceId:l,initialPage:i=1,pageSize:r=20,search:g,renderMember:x,className:n,showPagination:p=!0}){const[a,b]=O.useState(i),{members:c,total:u,isLoading:o,error:f,hasNextPage:j,hasPreviousPage:N,refetch:v}=k.useMembers({resourceType:s,resourceId:l,page:a,limit:r,search:g}),y=t=>{const h=t.user.firstName&&t.user.lastName?`${t.user.firstName} ${t.user.lastName}`:t.user.firstName||t.user.email?.split("@")[0]||"User";return e.jsxs("div",{className:"flex items-center justify-between p-3 rounded-blimu hover:bg-blimu-accent transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(P.UserAvatar,{src:t.user.avatarUrl||void 0,alt:t.user.email,fallback:h,size:"default"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("p",{className:"text-sm font-medium text-blimu-foreground",children:h}),e.jsx("p",{className:"text-xs text-blimu-muted-foreground",children:t.user.email})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[t.inherited&&e.jsx("span",{className:"text-xs text-blimu-muted-foreground",children:"(inherited)"}),e.jsx("span",{className:"text-xs font-medium text-blimu-foreground bg-blimu-muted px-2 py-1 rounded-blimu-sm",children:t.role})]})]})};if(f)return e.jsxs("div",{className:d.cn("p-4 text-center",n),children:[e.jsxs("p",{className:"text-sm text-blimu-destructive",children:["Error loading members: ",f.message]}),e.jsx("button",{onClick:()=>v(),className:"mt-2 text-sm text-blimu-primary hover:underline",children:"Retry"})]});if(o&&c.length===0)return e.jsx("div",{className:d.cn("p-4 text-center",n),children:e.jsx("p",{className:"text-sm text-blimu-muted-foreground",children:"Loading members..."})});if(c.length===0)return e.jsx("div",{className:d.cn("p-4 text-center",n),children:e.jsx("p",{className:"text-sm text-blimu-muted-foreground",children:"No members found"})});const m=Math.ceil(u/r);return e.jsxs("div",{className:d.cn("flex flex-col",n),children:[e.jsx("div",{className:"flex flex-col divide-y divide-blimu-border",children:c.map(t=>e.jsx("div",{children:x?x(t):y(t)},t.userId))}),p&&m>1&&e.jsxs("div",{className:"flex items-center justify-between mt-4 pt-4 border-t border-blimu-border",children:[e.jsxs("div",{className:"text-sm text-blimu-muted-foreground",children:["Showing ",(a-1)*r+1," to ",Math.min(a*r,u)," of ",u," ","members"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>b(t=>Math.max(1,t-1)),disabled:!N||o,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",children:"Previous"}),e.jsxs("span",{className:"text-sm text-blimu-foreground",children:["Page ",a," of ",m]}),e.jsx("button",{onClick:()=>b(t=>Math.min(m,t+1)),disabled:!j||o,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",children:"Next"})]})]})]})}exports.MembersList=q;
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 useMembers = require("../hooks/use-members.cjs");
6
+ const utils = require("../lib/utils.cjs");
7
+ const userAvatar = require("./user-avatar.cjs");
8
+ function _interopNamespaceDefault(e) {
9
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
10
+ if (e) {
11
+ for (const k in e) {
12
+ if (k !== "default") {
13
+ const d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: () => e[k]
17
+ });
18
+ }
19
+ }
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+ const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
25
+ function MembersList({
26
+ resourceType,
27
+ resourceId,
28
+ initialPage = 1,
29
+ pageSize = 20,
30
+ search,
31
+ renderMember,
32
+ className,
33
+ showPagination = true
34
+ }) {
35
+ const [page, setPage] = React__namespace.useState(initialPage);
36
+ const { members, total, isLoading, error, hasNextPage, hasPreviousPage, refetch } = useMembers.useMembers({
37
+ resourceType,
38
+ resourceId,
39
+ page,
40
+ limit: pageSize,
41
+ search
42
+ });
43
+ const defaultRenderMember = (member) => {
44
+ const displayName = member.user.firstName && member.user.lastName ? `${member.user.firstName} ${member.user.lastName}` : member.user.firstName || member.user.email?.split("@")[0] || "User";
45
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between p-3 rounded-blimu hover:bg-blimu-accent transition-colors", children: [
46
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
47
+ /* @__PURE__ */ jsxRuntime.jsx(
48
+ userAvatar.UserAvatar,
49
+ {
50
+ src: member.user.avatarUrl || void 0,
51
+ alt: member.user.email,
52
+ fallback: displayName,
53
+ size: "default"
54
+ }
55
+ ),
56
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
57
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-blimu-foreground", children: displayName }),
58
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-blimu-muted-foreground", children: member.user.email })
59
+ ] })
60
+ ] }),
61
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
62
+ member.inherited && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-blimu-muted-foreground", children: "(inherited)" }),
63
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-blimu-foreground bg-blimu-muted px-2 py-1 rounded-blimu-sm", children: member.role })
64
+ ] })
65
+ ] });
66
+ };
67
+ if (error) {
68
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("p-4 text-center", className), children: [
69
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-blimu-destructive", children: [
70
+ "Error loading members: ",
71
+ error.message
72
+ ] }),
73
+ /* @__PURE__ */ jsxRuntime.jsx(
74
+ "button",
75
+ {
76
+ onClick: () => refetch(),
77
+ className: "mt-2 text-sm text-blimu-primary hover:underline",
78
+ children: "Retry"
79
+ }
80
+ )
81
+ ] });
82
+ }
83
+ if (isLoading && members.length === 0) {
84
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn("p-4 text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-blimu-muted-foreground", children: "Loading members..." }) });
85
+ }
86
+ if (members.length === 0) {
87
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn("p-4 text-center", className), children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-blimu-muted-foreground", children: "No members found" }) });
88
+ }
89
+ const totalPages = Math.ceil(total / pageSize);
90
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("flex flex-col", className), children: [
91
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col divide-y divide-blimu-border", children: members.map((member) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: renderMember ? renderMember(member) : defaultRenderMember(member) }, member.userId)) }),
92
+ showPagination && totalPages > 1 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mt-4 pt-4 border-t border-blimu-border", children: [
93
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm text-blimu-muted-foreground", children: [
94
+ "Showing ",
95
+ (page - 1) * pageSize + 1,
96
+ " to ",
97
+ Math.min(page * pageSize, total),
98
+ " of ",
99
+ total,
100
+ " ",
101
+ "members"
102
+ ] }),
103
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
104
+ /* @__PURE__ */ jsxRuntime.jsx(
105
+ "button",
106
+ {
107
+ onClick: () => setPage((p) => Math.max(1, p - 1)),
108
+ disabled: !hasPreviousPage || isLoading,
109
+ 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",
110
+ children: "Previous"
111
+ }
112
+ ),
113
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-blimu-foreground", children: [
114
+ "Page ",
115
+ page,
116
+ " of ",
117
+ totalPages
118
+ ] }),
119
+ /* @__PURE__ */ jsxRuntime.jsx(
120
+ "button",
121
+ {
122
+ onClick: () => setPage((p) => Math.min(totalPages, p + 1)),
123
+ disabled: !hasNextPage || isLoading,
124
+ 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",
125
+ children: "Next"
126
+ }
127
+ )
128
+ ] })
129
+ ] })
130
+ ] });
131
+ }
132
+ exports.MembersList = MembersList;
2
133
  //# sourceMappingURL=members-list.cjs.map
@@ -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 { type ResourceMember, useMembers } from '../hooks/use-members';\nimport { cn } from '../lib/utils';\nimport { UserAvatar } from './user-avatar';\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 +1 @@
1
- {"version":3,"file":"members-list.d.ts","sourceRoot":"","sources":["../../src/components/members-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,KAAK,CAAC,SAAS,CAAC;IAE3D;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,UAAU,EACV,WAAe,EACf,QAAa,EACb,MAAM,EACN,YAAY,EACZ,SAAS,EACT,cAAqB,GACtB,EAAE,gBAAgB,qBAiHlB"}
1
+ {"version":3,"file":"members-list.d.ts","sourceRoot":"","sources":["../../src/components/members-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,sBAAsB,CAAC;AAIvE,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,KAAK,CAAC,SAAS,CAAC;IAE3D;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,UAAU,EACV,WAAe,EACf,QAAa,EACb,MAAM,EACN,YAAY,EACZ,SAAS,EACT,cAAqB,GACtB,EAAE,gBAAgB,qBAiHlB"}
@@ -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 { useMembers } from "../hooks/use-members.js";
4
+ import { cn } from "../lib/utils.js";
5
+ import { UserAvatar } from "./user-avatar.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 { type ResourceMember, useMembers } from '../hooks/use-members';\nimport { cn } from '../lib/utils';\nimport { UserAvatar } from './user-avatar';\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;"}