@mesob/auth-react 0.4.0 → 0.4.2

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 (371) hide show
  1. package/dist/chunk-35TCGAW3.js +98 -0
  2. package/dist/chunk-35TCGAW3.js.map +1 -0
  3. package/dist/chunk-3BZC4VVD.js +36 -0
  4. package/dist/chunk-3BZC4VVD.js.map +1 -0
  5. package/dist/chunk-45UCLKH2.js +188 -0
  6. package/dist/chunk-45UCLKH2.js.map +1 -0
  7. package/dist/chunk-55BMNC4S.js +115 -0
  8. package/dist/chunk-55BMNC4S.js.map +1 -0
  9. package/dist/chunk-5F5FZMHE.js +94 -0
  10. package/dist/chunk-5F5FZMHE.js.map +1 -0
  11. package/dist/chunk-5M7I7WNH.js +31 -0
  12. package/dist/chunk-5M7I7WNH.js.map +1 -0
  13. package/dist/chunk-72YRO3A7.js +288 -0
  14. package/dist/chunk-72YRO3A7.js.map +1 -0
  15. package/dist/chunk-7KXTL6NT.js +48 -0
  16. package/dist/chunk-7KXTL6NT.js.map +1 -0
  17. package/dist/chunk-AIMD6R6U.js +466 -0
  18. package/dist/chunk-AIMD6R6U.js.map +1 -0
  19. package/dist/chunk-BGSHXIHI.js +953 -0
  20. package/dist/chunk-BGSHXIHI.js.map +1 -0
  21. package/dist/chunk-BZ42QPXE.js +271 -0
  22. package/dist/chunk-BZ42QPXE.js.map +1 -0
  23. package/dist/chunk-C26NPUPI.js +272 -0
  24. package/dist/chunk-C26NPUPI.js.map +1 -0
  25. package/dist/chunk-C2KFZ57H.js +194 -0
  26. package/dist/chunk-C2KFZ57H.js.map +1 -0
  27. package/dist/chunk-C5ZW7FD2.js +46 -0
  28. package/dist/chunk-C5ZW7FD2.js.map +1 -0
  29. package/dist/chunk-DPH2PHK3.js +32 -0
  30. package/dist/chunk-DPH2PHK3.js.map +1 -0
  31. package/dist/chunk-EQ4346FE.js +139 -0
  32. package/dist/chunk-EQ4346FE.js.map +1 -0
  33. package/dist/chunk-FAHN63DA.js +535 -0
  34. package/dist/chunk-FAHN63DA.js.map +1 -0
  35. package/dist/chunk-FFR5UHTS.js +99 -0
  36. package/dist/chunk-FFR5UHTS.js.map +1 -0
  37. package/dist/chunk-FHOLUOOZ.js +164 -0
  38. package/dist/chunk-FHOLUOOZ.js.map +1 -0
  39. package/dist/chunk-G2AW2H36.js +11 -0
  40. package/dist/chunk-G2AW2H36.js.map +1 -0
  41. package/dist/chunk-G7SCXCCM.js +89 -0
  42. package/dist/chunk-G7SCXCCM.js.map +1 -0
  43. package/dist/chunk-GP7GIUI3.js +64 -0
  44. package/dist/chunk-GP7GIUI3.js.map +1 -0
  45. package/dist/chunk-GRT6EBR6.js +93 -0
  46. package/dist/chunk-GRT6EBR6.js.map +1 -0
  47. package/dist/chunk-GXKBVCVS.js +102 -0
  48. package/dist/chunk-GXKBVCVS.js.map +1 -0
  49. package/dist/chunk-HB2RZTHS.js +338 -0
  50. package/dist/chunk-HB2RZTHS.js.map +1 -0
  51. package/dist/chunk-HOO2VLNM.js +305 -0
  52. package/dist/chunk-HOO2VLNM.js.map +1 -0
  53. package/dist/chunk-II5MLBSB.js +183 -0
  54. package/dist/chunk-II5MLBSB.js.map +1 -0
  55. package/dist/chunk-ISNNPMF7.js +95 -0
  56. package/dist/chunk-ISNNPMF7.js.map +1 -0
  57. package/dist/chunk-JB6XVST4.js +141 -0
  58. package/dist/chunk-JB6XVST4.js.map +1 -0
  59. package/dist/chunk-JUHBVG5Q.js +303 -0
  60. package/dist/chunk-JUHBVG5Q.js.map +1 -0
  61. package/dist/chunk-JZZJCBAE.js +118 -0
  62. package/dist/chunk-JZZJCBAE.js.map +1 -0
  63. package/dist/chunk-KWG4DSB5.js +55 -0
  64. package/dist/chunk-KWG4DSB5.js.map +1 -0
  65. package/dist/chunk-L4CGIO2I.js +265 -0
  66. package/dist/chunk-L4CGIO2I.js.map +1 -0
  67. package/dist/chunk-LNG736CV.js +19 -0
  68. package/dist/chunk-LNG736CV.js.map +1 -0
  69. package/dist/chunk-LSYKVFJA.js +98 -0
  70. package/dist/chunk-LSYKVFJA.js.map +1 -0
  71. package/dist/chunk-LZR4YUDV.js +107 -0
  72. package/dist/chunk-LZR4YUDV.js.map +1 -0
  73. package/dist/chunk-MELNS4QH.js +255 -0
  74. package/dist/chunk-MELNS4QH.js.map +1 -0
  75. package/dist/chunk-MS2JUZ3N.js +94 -0
  76. package/dist/chunk-MS2JUZ3N.js.map +1 -0
  77. package/dist/chunk-NEO72TMH.js +32 -0
  78. package/dist/chunk-NEO72TMH.js.map +1 -0
  79. package/dist/chunk-NJPNTAAT.js +68 -0
  80. package/dist/chunk-NJPNTAAT.js.map +1 -0
  81. package/dist/chunk-NPW7D2HZ.js +16 -0
  82. package/dist/chunk-NPW7D2HZ.js.map +1 -0
  83. package/dist/chunk-OAN4EXU4.js +310 -0
  84. package/dist/chunk-OAN4EXU4.js.map +1 -0
  85. package/dist/chunk-OFLSINVU.js +138 -0
  86. package/dist/chunk-OFLSINVU.js.map +1 -0
  87. package/dist/chunk-OHIIMUQC.js +286 -0
  88. package/dist/chunk-OHIIMUQC.js.map +1 -0
  89. package/dist/chunk-OQGJX37L.js +239 -0
  90. package/dist/chunk-OQGJX37L.js.map +1 -0
  91. package/dist/chunk-OYHH7HQG.js +65 -0
  92. package/dist/chunk-OYHH7HQG.js.map +1 -0
  93. package/dist/chunk-PSRIZMWJ.js +486 -0
  94. package/dist/chunk-PSRIZMWJ.js.map +1 -0
  95. package/dist/chunk-QNCE2B5O.js +23 -0
  96. package/dist/chunk-QNCE2B5O.js.map +1 -0
  97. package/dist/chunk-RLPZFLAS.js +23 -0
  98. package/dist/chunk-RLPZFLAS.js.map +1 -0
  99. package/dist/chunk-RT5C7IAE.js +38 -0
  100. package/dist/chunk-RT5C7IAE.js.map +1 -0
  101. package/dist/chunk-S3CXCCKL.js +272 -0
  102. package/dist/chunk-S3CXCCKL.js.map +1 -0
  103. package/dist/chunk-SOCZK4CV.js +69 -0
  104. package/dist/chunk-SOCZK4CV.js.map +1 -0
  105. package/dist/chunk-T6P7UHVP.js +34 -0
  106. package/dist/chunk-T6P7UHVP.js.map +1 -0
  107. package/dist/chunk-TFVBER3Y.js +52 -0
  108. package/dist/chunk-TFVBER3Y.js.map +1 -0
  109. package/dist/chunk-UXOZ2TME.js +104 -0
  110. package/dist/chunk-UXOZ2TME.js.map +1 -0
  111. package/dist/chunk-V2W3WPCZ.js +22 -0
  112. package/dist/chunk-V2W3WPCZ.js.map +1 -0
  113. package/dist/chunk-YZ264S2L.js +286 -0
  114. package/dist/chunk-YZ264S2L.js.map +1 -0
  115. package/dist/chunk-ZESFGO3K.js +28 -0
  116. package/dist/chunk-ZESFGO3K.js.map +1 -0
  117. package/dist/chunk-ZG6WFZHX.js +143 -0
  118. package/dist/chunk-ZG6WFZHX.js.map +1 -0
  119. package/dist/components/auth/auth-card.d.ts +3 -6
  120. package/dist/components/auth/auth-card.js +3 -7
  121. package/dist/components/auth/auth-card.js.map +1 -1
  122. package/dist/components/auth/auth-layout.d.ts +3 -6
  123. package/dist/components/auth/auth-layout.js +3 -28
  124. package/dist/components/auth/auth-layout.js.map +1 -1
  125. package/dist/components/auth/countdown.d.ts +2 -5
  126. package/dist/components/auth/countdown.js +5 -130
  127. package/dist/components/auth/countdown.js.map +1 -1
  128. package/dist/components/auth/forgot-password.d.ts +1 -5
  129. package/dist/components/auth/forgot-password.js +6 -365
  130. package/dist/components/auth/forgot-password.js.map +1 -1
  131. package/dist/components/auth/reset-password-form.d.ts +2 -5
  132. package/dist/components/auth/reset-password-form.js +6 -487
  133. package/dist/components/auth/reset-password-form.js.map +1 -1
  134. package/dist/components/auth/set-password.d.ts +2 -5
  135. package/dist/components/auth/set-password.js +7 -521
  136. package/dist/components/auth/set-password.js.map +1 -1
  137. package/dist/components/auth/sign-in.d.ts +2 -5
  138. package/dist/components/auth/sign-in.js +7 -561
  139. package/dist/components/auth/sign-in.js.map +1 -1
  140. package/dist/components/auth/sign-up.d.ts +2 -5
  141. package/dist/components/auth/sign-up.js +6 -511
  142. package/dist/components/auth/sign-up.js.map +1 -1
  143. package/dist/components/auth/verification-form.d.ts +13 -2
  144. package/dist/components/auth/verification-form.js +5 -217
  145. package/dist/components/auth/verification-form.js.map +1 -1
  146. package/dist/components/auth/verify-email.d.ts +2 -5
  147. package/dist/components/auth/verify-email.js +8 -527
  148. package/dist/components/auth/verify-email.js.map +1 -1
  149. package/dist/components/auth/verify-phone.d.ts +2 -5
  150. package/dist/components/auth/verify-phone.js +8 -532
  151. package/dist/components/auth/verify-phone.js.map +1 -1
  152. package/dist/components/authorization/deny.d.ts +3 -6
  153. package/dist/components/authorization/deny.js +4 -47
  154. package/dist/components/authorization/deny.js.map +1 -1
  155. package/dist/components/authorization/grant.d.ts +3 -6
  156. package/dist/components/authorization/grant.js +4 -52
  157. package/dist/components/authorization/grant.js.map +1 -1
  158. package/dist/components/error-boundary.d.ts +6 -10
  159. package/dist/components/error-boundary.js +4 -43
  160. package/dist/components/error-boundary.js.map +1 -1
  161. package/dist/components/iam/permission-selector.d.ts +3 -6
  162. package/dist/components/iam/permission-selector.js +3 -116
  163. package/dist/components/iam/permission-selector.js.map +1 -1
  164. package/dist/components/iam/permissions-page.d.ts +1 -0
  165. package/dist/components/iam/permissions-page.js +10 -0
  166. package/dist/components/iam/permissions-page.js.map +1 -0
  167. package/dist/components/iam/permissions.d.ts +1 -5
  168. package/dist/components/iam/permissions.js +5 -198
  169. package/dist/components/iam/permissions.js.map +1 -1
  170. package/dist/components/iam/role-detail-layout.d.ts +3 -6
  171. package/dist/components/iam/role-detail-layout.js +3 -131
  172. package/dist/components/iam/role-detail-layout.js.map +1 -1
  173. package/dist/components/iam/role-detail-page.d.ts +2 -5
  174. package/dist/components/iam/role-detail-page.js +3 -223
  175. package/dist/components/iam/role-detail-page.js.map +1 -1
  176. package/dist/components/iam/role-permissions-page.d.ts +2 -5
  177. package/dist/components/iam/role-permissions-page.js +4 -391
  178. package/dist/components/iam/role-permissions-page.js.map +1 -1
  179. package/dist/components/iam/roles-page.d.ts +1 -0
  180. package/dist/components/iam/roles-page.js +13 -0
  181. package/dist/components/iam/roles-page.js.map +1 -0
  182. package/dist/components/iam/roles.d.ts +1 -5
  183. package/dist/components/iam/roles.js +5 -218
  184. package/dist/components/iam/roles.js.map +1 -1
  185. package/dist/components/iam/sessions-page.d.ts +1 -0
  186. package/dist/components/iam/sessions-page.js +12 -0
  187. package/dist/components/iam/sessions-page.js.map +1 -0
  188. package/dist/components/iam/sessions.d.ts +1 -5
  189. package/dist/components/iam/sessions.js +5 -198
  190. package/dist/components/iam/sessions.js.map +1 -1
  191. package/dist/components/iam/tenants-page.d.ts +1 -0
  192. package/dist/components/iam/tenants-page.js +13 -0
  193. package/dist/components/iam/tenants-page.js.map +1 -0
  194. package/dist/components/iam/tenants.d.ts +1 -5
  195. package/dist/components/iam/tenants.js +5 -204
  196. package/dist/components/iam/tenants.js.map +1 -1
  197. package/dist/components/iam/users-page.d.ts +1 -0
  198. package/dist/components/iam/users-page.js +13 -0
  199. package/dist/components/iam/users-page.js.map +1 -0
  200. package/dist/components/iam/users.d.ts +1 -5
  201. package/dist/components/iam/users.js +5 -207
  202. package/dist/components/iam/users.js.map +1 -1
  203. package/dist/components/profile/account.d.ts +1 -5
  204. package/dist/components/profile/account.js +4 -151
  205. package/dist/components/profile/account.js.map +1 -1
  206. package/dist/components/profile/change-email-form.d.ts +1 -5
  207. package/dist/components/profile/change-email-form.js +9 -735
  208. package/dist/components/profile/change-email-form.js.map +1 -1
  209. package/dist/components/profile/change-password-form.d.ts +1 -5
  210. package/dist/components/profile/change-password-form.js +3 -262
  211. package/dist/components/profile/change-password-form.js.map +1 -1
  212. package/dist/components/profile/change-phone-form.d.ts +1 -5
  213. package/dist/components/profile/change-phone-form.js +10 -772
  214. package/dist/components/profile/change-phone-form.js.map +1 -1
  215. package/dist/components/profile/change-profile.d.ts +3 -7
  216. package/dist/components/profile/change-profile.js +2 -40
  217. package/dist/components/profile/change-profile.js.map +1 -1
  218. package/dist/components/profile/otp-verification-modal.d.ts +2 -5
  219. package/dist/components/profile/otp-verification-modal.js +6 -266
  220. package/dist/components/profile/otp-verification-modal.js.map +1 -1
  221. package/dist/components/profile/profile-layout.d.ts +4 -0
  222. package/dist/components/profile/profile-layout.js +10 -0
  223. package/dist/components/profile/profile-layout.js.map +1 -0
  224. package/dist/components/profile/request-change-email-form.d.ts +2 -5
  225. package/dist/components/profile/request-change-email-form.js +4 -285
  226. package/dist/components/profile/request-change-email-form.js.map +1 -1
  227. package/dist/components/profile/request-change-phone-form.d.ts +2 -5
  228. package/dist/components/profile/request-change-phone-form.js +5 -323
  229. package/dist/components/profile/request-change-phone-form.js.map +1 -1
  230. package/dist/components/profile/security.d.ts +1 -5
  231. package/dist/components/profile/security.js +15 -1508
  232. package/dist/components/profile/security.js.map +1 -1
  233. package/dist/components/profile/verify-change-email-form.d.ts +2 -5
  234. package/dist/components/profile/verify-change-email-form.js +7 -407
  235. package/dist/components/profile/verify-change-email-form.js.map +1 -1
  236. package/dist/components/profile/verify-change-phone-form.d.ts +2 -5
  237. package/dist/components/profile/verify-change-phone-form.js +7 -411
  238. package/dist/components/profile/verify-change-phone-form.js.map +1 -1
  239. package/dist/components/shared/data-table.d.ts +5 -8
  240. package/dist/components/shared/data-table.js +3 -79
  241. package/dist/components/shared/data-table.js.map +1 -1
  242. package/dist/components/skeletons/auth-form-skeleton.d.ts +1 -5
  243. package/dist/components/skeletons/auth-form-skeleton.js +3 -27
  244. package/dist/components/skeletons/auth-form-skeleton.js.map +1 -1
  245. package/dist/components/skeletons/profile-skeleton.d.ts +1 -5
  246. package/dist/components/skeletons/profile-skeleton.js +3 -28
  247. package/dist/components/skeletons/profile-skeleton.js.map +1 -1
  248. package/dist/components/skeletons/table-skeleton.d.ts +2 -5
  249. package/dist/components/skeletons/table-skeleton.js +3 -34
  250. package/dist/components/skeletons/table-skeleton.js.map +1 -1
  251. package/dist/constants/auth.error.codes.d.ts +5 -0
  252. package/dist/hooks/use-session-cookie-name.d.ts +1 -0
  253. package/dist/hooks/use-translator.d.ts +1 -0
  254. package/dist/index.d.ts +50 -92
  255. package/dist/index.js +147 -4936
  256. package/dist/index.js.map +1 -1
  257. package/dist/lib/query-options.d.ts +10 -0
  258. package/dist/lib/translations.d.ts +3 -0
  259. package/dist/pages/auth/forgot-password.d.ts +3 -7
  260. package/dist/pages/auth/forgot-password.js +8 -770
  261. package/dist/pages/auth/forgot-password.js.map +1 -1
  262. package/dist/pages/auth/layout.d.ts +3 -7
  263. package/dist/pages/auth/layout.js +13 -536
  264. package/dist/pages/auth/layout.js.map +1 -1
  265. package/dist/pages/auth/reset-password.d.ts +4 -7
  266. package/dist/pages/auth/reset-password.js +8 -888
  267. package/dist/pages/auth/reset-password.js.map +1 -1
  268. package/dist/pages/auth/set-password.d.ts +4 -7
  269. package/dist/pages/auth/set-password.js +9 -927
  270. package/dist/pages/auth/set-password.js.map +1 -1
  271. package/dist/pages/auth/sign-in.d.ts +4 -7
  272. package/dist/pages/auth/sign-in.js +9 -967
  273. package/dist/pages/auth/sign-in.js.map +1 -1
  274. package/dist/pages/auth/sign-up.d.ts +4 -7
  275. package/dist/pages/auth/sign-up.js +8 -915
  276. package/dist/pages/auth/sign-up.js.map +1 -1
  277. package/dist/pages/auth/verify-email.d.ts +4 -7
  278. package/dist/pages/auth/verify-email.js +10 -922
  279. package/dist/pages/auth/verify-email.js.map +1 -1
  280. package/dist/pages/auth/verify-phone.d.ts +4 -7
  281. package/dist/pages/auth/verify-phone.js +10 -927
  282. package/dist/pages/auth/verify-phone.js.map +1 -1
  283. package/dist/pages/iam/permissions/_components/permission-card.d.ts +6 -0
  284. package/dist/pages/iam/permissions/_components/permissions-data.d.ts +7 -0
  285. package/dist/pages/iam/permissions/_components/permissions-list.d.ts +14 -0
  286. package/dist/pages/iam/permissions.d.ts +1 -5
  287. package/dist/pages/iam/permissions.js +4 -302
  288. package/dist/pages/iam/permissions.js.map +1 -1
  289. package/dist/pages/iam/role-detail-layout.d.ts +3 -6
  290. package/dist/pages/iam/role-detail-layout.js +5 -132
  291. package/dist/pages/iam/role-detail-layout.js.map +1 -1
  292. package/dist/pages/iam/role-detail.d.ts +4 -7
  293. package/dist/pages/iam/role-detail.js +5 -224
  294. package/dist/pages/iam/role-detail.js.map +1 -1
  295. package/dist/pages/iam/role-permissions.d.ts +4 -7
  296. package/dist/pages/iam/role-permissions.js +6 -392
  297. package/dist/pages/iam/role-permissions.js.map +1 -1
  298. package/dist/pages/iam/role-users.d.ts +4 -7
  299. package/dist/pages/iam/role-users.js +9 -808
  300. package/dist/pages/iam/role-users.js.map +1 -1
  301. package/dist/pages/iam/roles/_components/role-card.d.ts +7 -0
  302. package/dist/pages/iam/roles/_components/role-form.d.ts +9 -0
  303. package/dist/pages/iam/roles/_components/role-selector.d.ts +11 -0
  304. package/dist/pages/iam/roles/_components/roles-data.d.ts +16 -0
  305. package/dist/pages/iam/roles/_components/roles-list.d.ts +15 -0
  306. package/dist/pages/iam/roles/users/_components/role-users-page.d.ts +5 -0
  307. package/dist/pages/iam/roles.d.ts +1 -5
  308. package/dist/pages/iam/roles.js +7 -678
  309. package/dist/pages/iam/roles.js.map +1 -1
  310. package/dist/pages/iam/sessions/_components/session-card.d.ts +6 -0
  311. package/dist/pages/iam/sessions/_components/sessions-data.d.ts +7 -0
  312. package/dist/pages/iam/sessions/_components/sessions-list.d.ts +14 -0
  313. package/dist/pages/iam/sessions.d.ts +1 -5
  314. package/dist/pages/iam/sessions.js +6 -309
  315. package/dist/pages/iam/sessions.js.map +1 -1
  316. package/dist/pages/iam/shared/navigation.d.ts +8 -0
  317. package/dist/pages/iam/shared/page-helpers.d.ts +12 -0
  318. package/dist/pages/iam/tenant-detail.d.ts +2 -5
  319. package/dist/pages/iam/tenant-detail.js +6 -174
  320. package/dist/pages/iam/tenant-detail.js.map +1 -1
  321. package/dist/pages/iam/tenants/_components/tenant-card.d.ts +6 -0
  322. package/dist/pages/iam/tenants/_components/tenant-form.d.ts +9 -0
  323. package/dist/pages/iam/tenants/_components/tenant-selector.d.ts +13 -0
  324. package/dist/pages/iam/tenants/_components/tenants-data.d.ts +12 -0
  325. package/dist/pages/iam/tenants/_components/tenants-list.d.ts +15 -0
  326. package/dist/pages/iam/tenants/tenant-detail-page-content.d.ts +5 -0
  327. package/dist/pages/iam/tenants.d.ts +1 -5
  328. package/dist/pages/iam/tenants.js +7 -604
  329. package/dist/pages/iam/tenants.js.map +1 -1
  330. package/dist/pages/iam/user-activity.d.ts +2 -5
  331. package/dist/pages/iam/user-activity.js +9 -838
  332. package/dist/pages/iam/user-activity.js.map +1 -1
  333. package/dist/pages/iam/user-detail-layout.d.ts +3 -6
  334. package/dist/pages/iam/user-detail-layout.js +5 -93
  335. package/dist/pages/iam/user-detail-layout.js.map +1 -1
  336. package/dist/pages/iam/user-detail.d.ts +2 -5
  337. package/dist/pages/iam/user-detail.js +5 -92
  338. package/dist/pages/iam/user-detail.js.map +1 -1
  339. package/dist/pages/iam/users/_components/bulk-invite-user-form.d.ts +6 -0
  340. package/dist/pages/iam/users/_components/invite-user-form.d.ts +6 -0
  341. package/dist/pages/iam/users/_components/invite-user-shared.d.ts +25 -0
  342. package/dist/pages/iam/users/_components/user-card.d.ts +6 -0
  343. package/dist/pages/iam/users/_components/user-detail-layout-content.d.ts +6 -0
  344. package/dist/pages/iam/users/_components/user-detail-page-content.d.ts +5 -0
  345. package/dist/pages/iam/users/_components/user-form.d.ts +9 -0
  346. package/dist/pages/iam/users/_components/user-selector.d.ts +12 -0
  347. package/dist/pages/iam/users/_components/users-data.d.ts +22 -0
  348. package/dist/pages/iam/users/_components/users-list.d.ts +15 -0
  349. package/dist/pages/iam/users/activity/_components/role-section.d.ts +3 -0
  350. package/dist/pages/iam/users/activity/user-activity-page-content.d.ts +5 -0
  351. package/dist/pages/iam/users.d.ts +1 -5
  352. package/dist/pages/iam/users.js +7 -1269
  353. package/dist/pages/iam/users.js.map +1 -1
  354. package/dist/pages/profile/_components/profile-sidebar.d.ts +1 -0
  355. package/dist/pages/profile/account.d.ts +1 -5
  356. package/dist/pages/profile/account.js +9 -158
  357. package/dist/pages/profile/account.js.map +1 -1
  358. package/dist/pages/profile/layout.d.ts +1 -8
  359. package/dist/pages/profile/layout.js +5 -128
  360. package/dist/pages/profile/layout.js.map +1 -1
  361. package/dist/pages/profile/security.d.ts +1 -5
  362. package/dist/pages/profile/security.js +20 -1515
  363. package/dist/pages/profile/security.js.map +1 -1
  364. package/dist/provider.d.ts +53 -0
  365. package/dist/{types-g9QcNRxT.d.ts → types.d.ts} +33 -12
  366. package/dist/utils/cookie.d.ts +2 -0
  367. package/dist/utils/custom-fetch.d.ts +2 -0
  368. package/dist/utils/handle-error.d.ts +7 -0
  369. package/dist/utils/normalize-phone.d.ts +1 -0
  370. package/package.json +4 -4
  371. package/dist/verification-form-ipSRTtQB.d.ts +0 -22
@@ -1,397 +1,11 @@
1
- // src/components/iam/role-permissions-page.tsx
2
1
  import {
3
- Badge as Badge2,
4
- Button,
5
- DataTablePagination,
6
- DeleteConfirmButton,
7
- DisplayTable,
8
- EntityEmptyState,
9
- EntityFilter,
10
- EntityHeader,
11
- EntityLoadingState,
12
- EntitySearch,
13
- EntitySort,
14
- EntityViewToggle,
15
- PageBody,
16
- Tbody,
17
- Td,
18
- Th,
19
- Thead,
20
- Tr,
21
- useEntityPagination,
22
- useEntityParams
23
- } from "@mesob/ui/components";
24
- import { IconKey as IconKey2, IconPlus, IconTrash } from "@tabler/icons-react";
25
- import { useQueryClient } from "@tanstack/react-query";
26
- import { useMemo as useMemo2 } from "react";
27
- import { toast } from "sonner";
28
-
29
- // src/provider.tsx
30
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
31
- import { deepmerge } from "deepmerge-ts";
32
- import createFetchClient from "openapi-fetch";
33
- import createClient from "openapi-react-query";
34
- import { createContext, useContext, useMemo, useState } from "react";
35
-
36
- // src/utils/cookie.ts
37
- var isProduction = typeof process !== "undefined" && process.env.NODE_ENV === "production";
38
-
39
- // src/provider.tsx
40
- import { jsx } from "react/jsx-runtime";
41
- var SessionContext = createContext(null);
42
- var ApiContext = createContext(null);
43
- var ConfigContext = createContext(null);
44
- var queryClient = new QueryClient({
45
- defaultOptions: {
46
- queries: {
47
- refetchOnWindowFocus: false
48
- }
49
- }
50
- });
51
- function useApi() {
52
- const context = useContext(ApiContext);
53
- if (!context) {
54
- throw new Error("useApi must be used within MesobAuthProvider");
55
- }
56
- return context;
57
- }
58
-
59
- // src/components/iam/permission-selector.tsx
60
- import {
61
- Badge,
62
- EntitySelector,
63
- useEntitySectionState
64
- } from "@mesob/ui/components";
65
- import { IconKey } from "@tabler/icons-react";
66
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
67
- var permissionColumns = [
68
- {
69
- key: "permission",
70
- header: "Permission",
71
- cell: (permission) => /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
72
- /* @__PURE__ */ jsx2("p", { className: "font-medium", children: permission.activity }),
73
- /* @__PURE__ */ jsx2("p", { className: "font-mono text-xs text-muted-foreground", children: permission.id })
74
- ] })
75
- },
76
- {
77
- key: "scope",
78
- header: "Scope",
79
- cell: (permission) => /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-2", children: [
80
- /* @__PURE__ */ jsx2(Badge, { variant: "secondary", children: permission.application }),
81
- /* @__PURE__ */ jsx2(Badge, { variant: "outline", children: permission.feature })
82
- ] })
83
- }
84
- ];
85
- function PermissionSelector({
86
- trigger,
87
- multiple = true,
88
- onSelect,
89
- excludeIds = []
90
- }) {
91
- const { hooks } = useApi();
92
- const state = useEntitySectionState({
93
- defaultSort: "id",
94
- defaultOrder: "asc",
95
- defaultPageSize: 10,
96
- searchParamName: "search"
97
- });
98
- const permissionsQuery = state.queryConfig;
99
- const { data, isPending, isFetching } = hooks.useQuery(
100
- "get",
101
- "/permissions",
102
- permissionsQuery
103
- );
104
- const items = (data?.permissions ?? []).filter(
105
- (permission) => !excludeIds.includes(permission.id)
106
- );
107
- const config = {
108
- title: "Select permission(s)",
109
- multiple,
110
- entityName: "permission",
111
- entityIcon: IconKey,
112
- columns: permissionColumns,
113
- getItemLabel: (permission) => permission.id,
114
- searchPlaceholder: "Search permissions...",
115
- filterOptions: [
116
- { label: "All", value: "" },
117
- { label: "Application", value: "application" },
118
- { label: "Feature", value: "feature" },
119
- { label: "Activity", value: "activity" }
120
- ],
121
- sortOptions: [
122
- { label: "ID", value: "id" },
123
- { label: "Application", value: "application" },
124
- { label: "Feature", value: "feature" },
125
- { label: "Activity", value: "activity" }
126
- ],
127
- showViewToggle: false,
128
- wrapHeaderInCard: false
129
- };
130
- return /* @__PURE__ */ jsx2(
131
- EntitySelector,
132
- {
133
- trigger,
134
- config,
135
- onSelect,
136
- items,
137
- total: items.length,
138
- isLoading: isPending || isFetching,
139
- state
140
- }
141
- );
142
- }
143
-
144
- // src/components/iam/role-permissions-page.tsx
145
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
146
- var TABLE_COLUMN_COUNT = 4;
147
- function RolePermissionsPage({ roleId }) {
148
- const { hooks } = useApi();
149
- const qc = useQueryClient();
150
- const { queryConfig, params, setParams } = useEntityParams({
151
- searchKey: "search",
152
- defaultSort: "application",
153
- defaultOrder: "asc"
154
- });
155
- const permissionsQuery = useMemo2(
156
- () => ({
157
- params: {
158
- path: { id: roleId },
159
- query: queryConfig.params.query
160
- }
161
- }),
162
- [queryConfig, roleId]
163
- );
164
- const { data, isPending, isFetching } = hooks.useQuery(
165
- "get",
166
- "/roles/{id}/permissions",
167
- permissionsQuery,
168
- { enabled: !!roleId }
169
- );
170
- const assignPermissions = hooks.useMutation(
171
- "post",
172
- "/roles/{id}/permissions",
173
- {
174
- onSuccess: (result) => {
175
- qc.invalidateQueries({ queryKey: ["get", "/roles"] });
176
- qc.invalidateQueries({ queryKey: ["get", "/roles/{id}"] });
177
- qc.invalidateQueries({ queryKey: ["get", "/roles/{id}/permissions"] });
178
- toast.success(
179
- result?.created ? `${result.created} permission(s) added` : "No changes"
180
- );
181
- },
182
- onError: () => {
183
- toast.error("Failed to assign permissions");
184
- }
185
- }
186
- );
187
- const revokePermission = hooks.useMutation(
188
- "delete",
189
- "/roles/{id}/permissions/{permissionId}",
190
- {
191
- onSuccess: () => {
192
- qc.invalidateQueries({ queryKey: ["get", "/roles"] });
193
- qc.invalidateQueries({ queryKey: ["get", "/roles/{id}"] });
194
- qc.invalidateQueries({
195
- queryKey: ["get", "/roles/{id}/permissions"]
196
- });
197
- toast.success("Permission removed");
198
- },
199
- onError: () => {
200
- toast.error("Failed to remove permission");
201
- }
202
- }
203
- );
204
- const permissions = data?.permissions ?? [];
205
- const { total, pageCount } = useEntityPagination({
206
- items: permissions,
207
- total: data?.total,
208
- pageSize: params.pageSize
209
- });
210
- const isLoading = isPending || isFetching;
211
- const currentView = params.view || "table";
212
- if (!roleId) {
213
- return null;
214
- }
215
- let content;
216
- if (isLoading) {
217
- content = /* @__PURE__ */ jsx3(
218
- EntityLoadingState,
219
- {
220
- view: currentView,
221
- rowCount: params.pageSize,
222
- columnCount: TABLE_COLUMN_COUNT,
223
- cardCount: params.pageSize
224
- }
225
- );
226
- } else if (total === 0) {
227
- content = /* @__PURE__ */ jsx3(
228
- EntityEmptyState,
229
- {
230
- icon: IconKey2,
231
- entityName: "permission",
232
- title: "No permissions assigned",
233
- description: "Assign permissions from the selector to grant access to this role."
234
- }
235
- );
236
- } else if (currentView === "table") {
237
- content = /* @__PURE__ */ jsxs2("div", { className: "space-y-4", children: [
238
- /* @__PURE__ */ jsxs2(DisplayTable, { withTableBorder: true, children: [
239
- /* @__PURE__ */ jsx3(Thead, { children: /* @__PURE__ */ jsxs2(Tr, { children: [
240
- /* @__PURE__ */ jsx3(Th, { children: "Permission" }),
241
- /* @__PURE__ */ jsx3(Th, { children: "Application" }),
242
- /* @__PURE__ */ jsx3(Th, { children: "Feature" }),
243
- /* @__PURE__ */ jsx3(Th, { className: "w-[60px]" })
244
- ] }) }),
245
- /* @__PURE__ */ jsx3(Tbody, { children: permissions.map((permission) => /* @__PURE__ */ jsxs2(Tr, { children: [
246
- /* @__PURE__ */ jsx3(Td, { children: /* @__PURE__ */ jsxs2("div", { className: "space-y-1", children: [
247
- /* @__PURE__ */ jsx3("p", { className: "font-medium", children: permission.activity }),
248
- /* @__PURE__ */ jsx3("p", { className: "font-mono text-xs text-muted-foreground", children: permission.id })
249
- ] }) }),
250
- /* @__PURE__ */ jsx3(Td, { children: /* @__PURE__ */ jsx3(Badge2, { variant: "secondary", children: permission.application }) }),
251
- /* @__PURE__ */ jsx3(Td, { children: /* @__PURE__ */ jsx3(Badge2, { variant: "outline", children: permission.feature }) }),
252
- /* @__PURE__ */ jsx3(Td, { children: /* @__PURE__ */ jsx3(
253
- DeleteConfirmButton,
254
- {
255
- entityName: "permission",
256
- onConfirm: () => revokePermission.mutate({
257
- params: {
258
- path: { id: roleId, permissionId: permission.id }
259
- }
260
- }),
261
- triggerClassName: "size-8 text-destructive hover:text-destructive"
262
- }
263
- ) })
264
- ] }, permission.id)) })
265
- ] }),
266
- /* @__PURE__ */ jsx3(
267
- DataTablePagination,
268
- {
269
- pageIndex: params.page - 1,
270
- pageSize: params.pageSize,
271
- pageCount,
272
- totalRows: total,
273
- onPageChange: (page) => setParams({ page: page + 1 }),
274
- onPageSizeChange: (pageSize) => setParams({ pageSize, page: 1 })
275
- }
276
- )
277
- ] });
278
- } else {
279
- content = /* @__PURE__ */ jsxs2("div", { className: "space-y-4", children: [
280
- /* @__PURE__ */ jsx3("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3", children: permissions.map((permission) => /* @__PURE__ */ jsx3(
281
- "div",
282
- {
283
- className: "rounded-xl border border-border/60 bg-card p-4 shadow-sm",
284
- children: /* @__PURE__ */ jsxs2("div", { className: "flex items-start justify-between gap-3", children: [
285
- /* @__PURE__ */ jsxs2("div", { className: "space-y-2", children: [
286
- /* @__PURE__ */ jsx3("p", { className: "font-semibold", children: permission.activity }),
287
- /* @__PURE__ */ jsxs2("div", { className: "flex flex-wrap gap-2", children: [
288
- /* @__PURE__ */ jsx3(Badge2, { variant: "secondary", children: permission.application }),
289
- /* @__PURE__ */ jsx3(Badge2, { variant: "outline", children: permission.feature })
290
- ] }),
291
- /* @__PURE__ */ jsx3("p", { className: "font-mono text-xs text-muted-foreground", children: permission.id })
292
- ] }),
293
- /* @__PURE__ */ jsx3(
294
- Button,
295
- {
296
- type: "button",
297
- variant: "ghost",
298
- size: "icon",
299
- onClick: () => revokePermission.mutate({
300
- params: {
301
- path: { id: roleId, permissionId: permission.id }
302
- }
303
- }),
304
- disabled: revokePermission.isPending,
305
- children: /* @__PURE__ */ jsx3(IconTrash, { className: "h-4 w-4" })
306
- }
307
- )
308
- ] })
309
- },
310
- permission.id
311
- )) }),
312
- /* @__PURE__ */ jsx3(
313
- DataTablePagination,
314
- {
315
- pageIndex: params.page - 1,
316
- pageSize: params.pageSize,
317
- pageCount,
318
- totalRows: total,
319
- onPageChange: (page) => setParams({ page: page + 1 }),
320
- onPageSizeChange: (pageSize) => setParams({ pageSize, page: 1 })
321
- }
322
- )
323
- ] });
324
- }
325
- return /* @__PURE__ */ jsxs2(PageBody, { className: "px-0 pb-6", children: [
326
- /* @__PURE__ */ jsx3(
327
- EntityHeader,
328
- {
329
- icon: /* @__PURE__ */ jsx3(IconKey2, { className: "h-5 w-5" }),
330
- title: "Role permissions",
331
- actions: /* @__PURE__ */ jsx3(
332
- PermissionSelector,
333
- {
334
- trigger: /* @__PURE__ */ jsxs2(Button, { size: "sm", loading: assignPermissions.isPending, children: [
335
- /* @__PURE__ */ jsx3(IconPlus, { className: "h-4 w-4" }),
336
- "Add permissions"
337
- ] }),
338
- onSelect: (selectedPermissions) => {
339
- if (!selectedPermissions.length) {
340
- return;
341
- }
342
- assignPermissions.mutate({
343
- params: { path: { id: roleId } },
344
- body: {
345
- permissionIds: selectedPermissions.map(
346
- (permission) => permission.id
347
- )
348
- }
349
- });
350
- },
351
- excludeIds: permissions.map((permission) => permission.id)
352
- }
353
- ),
354
- search: /* @__PURE__ */ jsx3(
355
- EntitySearch,
356
- {
357
- paramKey: "search",
358
- placeholder: "Search assigned permissions..."
359
- }
360
- ),
361
- filter: /* @__PURE__ */ jsx3(
362
- EntityFilter,
363
- {
364
- options: [
365
- { label: "All", value: "" },
366
- { label: "Application", value: "application" },
367
- { label: "Feature", value: "feature" },
368
- { label: "Activity", value: "activity" }
369
- ],
370
- placeholder: "Search field"
371
- }
372
- ),
373
- sort: /* @__PURE__ */ jsx3(
374
- EntitySort,
375
- {
376
- defaultSort: "application",
377
- defaultOrder: "asc",
378
- options: [
379
- { label: "ID", value: "id" },
380
- { label: "Application", value: "application" },
381
- { label: "Feature", value: "feature" },
382
- { label: "Activity", value: "activity" }
383
- ]
384
- }
385
- ),
386
- view: /* @__PURE__ */ jsx3(EntityViewToggle, { views: ["table", "card"] })
387
- }
388
- ),
389
- content
390
- ] });
391
- }
2
+ RolePermissionsPage
3
+ } from "../../chunk-YZ264S2L.js";
4
+ import "../../chunk-GRT6EBR6.js";
5
+ import "../../chunk-72YRO3A7.js";
392
6
 
393
7
  // src/pages/iam/role-permissions.tsx
394
- import { jsx as jsx4 } from "react/jsx-runtime";
8
+ import { jsx } from "react/jsx-runtime";
395
9
  var metadata = {
396
10
  title: "Role Permissions",
397
11
  description: "Manage permissions assigned to a role."
@@ -400,7 +14,7 @@ async function RolePermissionsRoutePage({
400
14
  params
401
15
  }) {
402
16
  const { id } = await params;
403
- return /* @__PURE__ */ jsx4(RolePermissionsPage, { roleId: id });
17
+ return /* @__PURE__ */ jsx(RolePermissionsPage, { roleId: id });
404
18
  }
405
19
  export {
406
20
  RolePermissionsRoutePage as default,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/iam/role-permissions-page.tsx","../../../src/provider.tsx","../../../src/utils/cookie.ts","../../../src/components/iam/permission-selector.tsx","../../../src/pages/iam/role-permissions.tsx"],"sourcesContent":["'use client';\n\nimport {\n Badge,\n Button,\n DataTablePagination,\n DeleteConfirmButton,\n DisplayTable,\n EntityEmptyState,\n EntityFilter,\n EntityHeader,\n EntityLoadingState,\n EntitySearch,\n EntitySort,\n EntityViewToggle,\n PageBody,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n useEntityPagination,\n useEntityParams,\n} from '@mesob/ui/components';\nimport { IconKey, IconPlus, IconTrash } from '@tabler/icons-react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport type { ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport { toast } from 'sonner';\nimport type { paths } from '../../data/openapi';\nimport { useApi } from '../../provider';\nimport { PermissionSelector } from './permission-selector';\n\ntype Permission = {\n id: string;\n description?: unknown;\n activity: string;\n application: string;\n feature: string;\n};\n\ntype RolePermissionsPageProps = {\n roleId: string;\n};\n\nconst TABLE_COLUMN_COUNT = 4;\n\nexport function RolePermissionsPage({ roleId }: RolePermissionsPageProps) {\n const { hooks } = useApi();\n const qc = useQueryClient();\n const { queryConfig, params, setParams } = useEntityParams({\n searchKey: 'search',\n defaultSort: 'application',\n defaultOrder: 'asc',\n });\n const permissionsQuery = useMemo(\n () =>\n ({\n params: {\n path: { id: roleId },\n query: queryConfig.params.query,\n },\n }) as {\n params: {\n path: { id: string };\n query: NonNullable<\n paths['/roles/{id}/permissions']['get']['parameters']['query']\n >;\n };\n },\n [queryConfig, roleId],\n );\n\n const { data, isPending, isFetching } = hooks.useQuery(\n 'get',\n '/roles/{id}/permissions',\n permissionsQuery,\n { enabled: !!roleId },\n );\n const assignPermissions = hooks.useMutation(\n 'post',\n '/roles/{id}/permissions',\n {\n onSuccess: (result: { created?: number } | undefined) => {\n qc.invalidateQueries({ queryKey: ['get', '/roles'] });\n qc.invalidateQueries({ queryKey: ['get', '/roles/{id}'] });\n qc.invalidateQueries({ queryKey: ['get', '/roles/{id}/permissions'] });\n toast.success(\n result?.created\n ? `${result.created} permission(s) added`\n : 'No changes',\n );\n },\n onError: () => {\n toast.error('Failed to assign permissions');\n },\n },\n );\n const revokePermission = hooks.useMutation(\n 'delete',\n '/roles/{id}/permissions/{permissionId}',\n {\n onSuccess: () => {\n qc.invalidateQueries({ queryKey: ['get', '/roles'] });\n qc.invalidateQueries({ queryKey: ['get', '/roles/{id}'] });\n qc.invalidateQueries({\n queryKey: ['get', '/roles/{id}/permissions'],\n });\n toast.success('Permission removed');\n },\n onError: () => {\n toast.error('Failed to remove permission');\n },\n },\n );\n\n const permissions = (data?.permissions ?? []) as Permission[];\n const { total, pageCount } = useEntityPagination({\n items: permissions,\n total: data?.total,\n pageSize: params.pageSize,\n });\n const isLoading = isPending || isFetching;\n const currentView = (params.view || 'table') as 'table' | 'card';\n\n if (!roleId) {\n return null;\n }\n\n let content: ReactNode;\n if (isLoading) {\n content = (\n <EntityLoadingState\n view={currentView}\n rowCount={params.pageSize}\n columnCount={TABLE_COLUMN_COUNT}\n cardCount={params.pageSize}\n />\n );\n } else if (total === 0) {\n content = (\n <EntityEmptyState\n icon={IconKey}\n entityName=\"permission\"\n title=\"No permissions assigned\"\n description=\"Assign permissions from the selector to grant access to this role.\"\n />\n );\n } else if (currentView === 'table') {\n content = (\n <div className=\"space-y-4\">\n <DisplayTable withTableBorder>\n <Thead>\n <Tr>\n <Th>Permission</Th>\n <Th>Application</Th>\n <Th>Feature</Th>\n <Th className=\"w-[60px]\" />\n </Tr>\n </Thead>\n <Tbody>\n {permissions.map((permission) => (\n <Tr key={permission.id}>\n <Td>\n <div className=\"space-y-1\">\n <p className=\"font-medium\">{permission.activity}</p>\n <p className=\"font-mono text-xs text-muted-foreground\">\n {permission.id}\n </p>\n </div>\n </Td>\n <Td>\n <Badge variant=\"secondary\">{permission.application}</Badge>\n </Td>\n <Td>\n <Badge variant=\"outline\">{permission.feature}</Badge>\n </Td>\n <Td>\n <DeleteConfirmButton\n entityName=\"permission\"\n onConfirm={() =>\n revokePermission.mutate({\n params: {\n path: { id: roleId, permissionId: permission.id },\n },\n })\n }\n triggerClassName=\"size-8 text-destructive hover:text-destructive\"\n />\n </Td>\n </Tr>\n ))}\n </Tbody>\n </DisplayTable>\n <DataTablePagination\n pageIndex={params.page - 1}\n pageSize={params.pageSize}\n pageCount={pageCount}\n totalRows={total}\n onPageChange={(page) => setParams({ page: page + 1 })}\n onPageSizeChange={(pageSize) => setParams({ pageSize, page: 1 })}\n />\n </div>\n );\n } else {\n content = (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3\">\n {permissions.map((permission) => (\n <div\n key={permission.id}\n className=\"rounded-xl border border-border/60 bg-card p-4 shadow-sm\"\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"space-y-2\">\n <p className=\"font-semibold\">{permission.activity}</p>\n <div className=\"flex flex-wrap gap-2\">\n <Badge variant=\"secondary\">{permission.application}</Badge>\n <Badge variant=\"outline\">{permission.feature}</Badge>\n </div>\n <p className=\"font-mono text-xs text-muted-foreground\">\n {permission.id}\n </p>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() =>\n revokePermission.mutate({\n params: {\n path: { id: roleId, permissionId: permission.id },\n },\n })\n }\n disabled={revokePermission.isPending}\n >\n <IconTrash className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n ))}\n </div>\n <DataTablePagination\n pageIndex={params.page - 1}\n pageSize={params.pageSize}\n pageCount={pageCount}\n totalRows={total}\n onPageChange={(page) => setParams({ page: page + 1 })}\n onPageSizeChange={(pageSize) => setParams({ pageSize, page: 1 })}\n />\n </div>\n );\n }\n\n return (\n <PageBody className=\"px-0 pb-6\">\n <EntityHeader\n icon={<IconKey className=\"h-5 w-5\" />}\n title=\"Role permissions\"\n actions={\n <PermissionSelector\n trigger={\n <Button size=\"sm\" loading={assignPermissions.isPending}>\n <IconPlus className=\"h-4 w-4\" />\n Add permissions\n </Button>\n }\n onSelect={(selectedPermissions) => {\n if (!selectedPermissions.length) {\n return;\n }\n\n assignPermissions.mutate({\n params: { path: { id: roleId } },\n body: {\n permissionIds: selectedPermissions.map(\n (permission) => permission.id,\n ),\n },\n });\n }}\n excludeIds={permissions.map((permission) => permission.id)}\n />\n }\n search={\n <EntitySearch\n paramKey=\"search\"\n placeholder=\"Search assigned permissions...\"\n />\n }\n filter={\n <EntityFilter\n options={[\n { label: 'All', value: '' },\n { label: 'Application', value: 'application' },\n { label: 'Feature', value: 'feature' },\n { label: 'Activity', value: 'activity' },\n ]}\n placeholder=\"Search field\"\n />\n }\n sort={\n <EntitySort\n defaultSort=\"application\"\n defaultOrder=\"asc\"\n options={[\n { label: 'ID', value: 'id' },\n { label: 'Application', value: 'application' },\n { label: 'Feature', value: 'feature' },\n { label: 'Activity', value: 'activity' },\n ]}\n />\n }\n view={<EntityViewToggle views={['table', 'card']} />}\n />\n {content}\n </PageBody>\n );\n}\n","'use client';\n\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { deepmerge } from 'deepmerge-ts';\nimport createFetchClient from 'openapi-fetch';\nimport createClient from 'openapi-react-query';\nimport type { ReactNode } from 'react';\nimport { createContext, useContext, useMemo, useState } from 'react';\nimport type { paths } from './data/openapi';\nimport { createTranslator } from './lib/translations';\nimport {\n type AuthClientConfig,\n type AuthResponse,\n defaultAuthClientConfig,\n type Session,\n type User,\n} from './types';\nimport { getSessionCookieName } from './utils/cookie';\nimport { createCustomFetch } from './utils/custom-fetch';\n\n// biome-ignore lint/suspicious/noExplicitAny: OpenAPI hooks type\ntype OpenApiHooks = any;\n\n// --- Utility: Check if running on server ---\nfunction isServer(): boolean {\n return typeof document === 'undefined';\n}\n\n/**\n * @deprecated Cookie is httpOnly and cannot be read client-side.\n * Use `useSession().isAuthenticated` instead.\n * This function always returns false on client.\n */\nexport function hasAuthCookie(_cookieName: string): boolean {\n // Cookie is httpOnly, can't check client-side\n // Always return false - use useSession() for auth status\n return false;\n}\n\n// --- Types ---\nexport type AuthStatus = 'loading' | 'authenticated' | 'unauthenticated';\n\ntype AuthState = {\n user: User | null;\n session: Session | null;\n status: AuthStatus;\n error: Error | null;\n};\n\ntype SessionContextValue = AuthState & {\n isLoading: boolean;\n isAuthenticated: boolean;\n refresh: () => Promise<void>;\n signOut: () => Promise<void>;\n};\n\ntype ApiContextValue = {\n hooks: OpenApiHooks;\n setAuth: (auth: AuthResponse) => void;\n clearAuth: () => void;\n refresh: () => Promise<void>;\n};\n\ntype ConfigContextValue = {\n config: AuthClientConfig;\n cookieName: string;\n t: (key: string, params?: Record<string, string | number>) => string;\n};\n\nconst SessionContext = createContext<SessionContextValue | null>(null);\nconst ApiContext = createContext<ApiContextValue | null>(null);\nconst ConfigContext = createContext<ConfigContextValue | null>(null);\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\n// --- Hooks ---\n\n/**\n * Get session state including user, session, and auth status.\n * - `status`: 'loading' | 'authenticated' | 'unauthenticated'\n * - `isLoading`: true while fetching session\n * - `isAuthenticated`: true if user and session exist\n */\nexport function useSession(): SessionContextValue {\n const context = useContext(SessionContext);\n if (!context) {\n throw new Error('useSession must be used within MesobAuthProvider');\n }\n return context;\n}\n\nexport function useApi(): ApiContextValue {\n const context = useContext(ApiContext);\n if (!context) {\n throw new Error('useApi must be used within MesobAuthProvider');\n }\n return context;\n}\n\nexport function useConfig(): ConfigContextValue {\n const context = useContext(ConfigContext);\n if (!context) {\n throw new Error('useConfig must be used within MesobAuthProvider');\n }\n return context;\n}\n\n/**\n * @deprecated Cookie is httpOnly, can't be checked client-side.\n * Use `useSession().isAuthenticated` instead.\n */\nexport function useHasAuthCookie(): boolean {\n const { status } = useSession();\n return status === 'authenticated' || status === 'loading';\n}\n\n// --- Provider ---\n\ntype MesobAuthProviderProps = {\n config: AuthClientConfig;\n children: ReactNode;\n};\n\nexport function MesobAuthProvider({\n config,\n children,\n}: MesobAuthProviderProps) {\n const mergedConfig = useMemo(\n () =>\n deepmerge(\n { ...defaultAuthClientConfig } as Partial<AuthClientConfig>,\n config,\n ) as AuthClientConfig,\n [config],\n );\n\n const api = useMemo(\n () =>\n createFetchClient<paths>({\n baseUrl: mergedConfig.baseURL,\n fetch: createCustomFetch(mergedConfig),\n }),\n [mergedConfig],\n );\n\n const hooks = useMemo(() => createClient(api), [api]);\n const cookieName = useMemo(\n () => getSessionCookieName(mergedConfig),\n [mergedConfig],\n );\n\n return (\n <QueryClientProvider client={queryClient}>\n <AuthStateProvider\n config={mergedConfig}\n hooks={hooks}\n cookieName={cookieName}\n >\n {children}\n </AuthStateProvider>\n </QueryClientProvider>\n );\n}\n\ntype AuthStateProviderProps = {\n config: AuthClientConfig;\n hooks: OpenApiHooks;\n cookieName: string;\n children: ReactNode;\n};\n\nfunction AuthStateProvider({\n config,\n hooks,\n cookieName,\n children,\n}: AuthStateProviderProps) {\n // Manual override for sign-out / sign-in\n const [override, setOverride] = useState<AuthState | null>(null);\n\n // Always fetch session - cookie is httpOnly, can't check client-side\n // Server will read the cookie and return user/session if valid\n const {\n data: sessionData,\n isLoading,\n isFetched,\n error: sessionError,\n refetch,\n } = hooks.useQuery(\n 'get',\n '/session',\n {},\n {\n enabled: !(override || isServer()),\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n retry: false,\n gcTime: 0,\n staleTime: 0,\n },\n );\n\n // Derive state directly - no useEffect\n const user = override?.user ?? sessionData?.user ?? null;\n const session = override?.session ?? sessionData?.session ?? null;\n const error = override?.error ?? (sessionError as Error | null);\n\n // Check error status code\n const errorStatus = (() => {\n if (!sessionError) {\n return null;\n }\n const err = sessionError as { status?: number };\n return err.status ?? null;\n })();\n\n // Check if error is a network/connection error\n const isNetworkError = (() => {\n if (!sessionError) {\n return false;\n }\n const error = sessionError as Error & { cause?: unknown; data?: unknown };\n const errorMessage =\n error.message || String(error) || JSON.stringify(error);\n // Network errors: TypeError, DOMException, or fetch failures\n if (\n error instanceof TypeError ||\n error instanceof DOMException ||\n error.name === 'TypeError' ||\n errorMessage.includes('Failed to fetch') ||\n errorMessage.includes('ERR_CONNECTION_REFUSED') ||\n errorMessage.includes('NetworkError') ||\n errorMessage.includes('Network request failed') ||\n errorMessage.includes('fetch failed')\n ) {\n return true;\n }\n // Check error cause\n if (error.cause) {\n const causeStr = String(error.cause);\n if (\n causeStr.includes('Failed to fetch') ||\n causeStr.includes('ERR_CONNECTION_REFUSED') ||\n causeStr.includes('NetworkError')\n ) {\n return true;\n }\n }\n return false;\n })();\n\n // Compute status\n // biome-ignore lint: Status determination requires multiple checks\n const status: AuthStatus = (() => {\n if (override) {\n return override.status;\n }\n if (isServer()) {\n return 'loading';\n }\n if (user && session) {\n return 'authenticated';\n }\n // Check for network errors or auth errors first - allow auth page to show\n if (isNetworkError || errorStatus === 401) {\n return 'unauthenticated';\n }\n // If we have an error but it's not a network error, still check loading state\n if (sessionError && !isNetworkError && errorStatus !== 401) {\n if (errorStatus && errorStatus >= 500) {\n return 'authenticated';\n }\n // Other errors mean unauthenticated\n if (isFetched) {\n return 'unauthenticated';\n }\n }\n if (isLoading || !isFetched) {\n return 'loading';\n }\n if (isFetched && !user && !session) {\n return 'unauthenticated';\n }\n return 'unauthenticated';\n })();\n\n const signOutMutation = hooks.useMutation('post', '/sign-out');\n const t = createTranslator(config.messages || {});\n\n const setAuth = (auth: AuthResponse) => {\n setOverride({\n user: auth.user,\n session: auth.session,\n status: 'authenticated',\n error: null,\n });\n };\n\n const clearAuth = () => {\n setOverride({\n user: null,\n session: null,\n status: 'unauthenticated',\n error: null,\n });\n };\n\n const refresh = async () => {\n setOverride(null);\n await refetch();\n };\n\n const signOut = async () => {\n try {\n await signOutMutation.mutateAsync({});\n } finally {\n clearAuth();\n }\n };\n\n return (\n <ConfigContext.Provider value={{ config, cookieName, t }}>\n <ApiContext.Provider value={{ hooks, setAuth, clearAuth, refresh }}>\n <SessionContext.Provider\n value={{\n user,\n session,\n status,\n error,\n isLoading: status === 'loading',\n isAuthenticated: status === 'authenticated',\n refresh,\n signOut,\n }}\n >\n {children}\n </SessionContext.Provider>\n </ApiContext.Provider>\n </ConfigContext.Provider>\n );\n}\n","import type { AuthClientConfig } from '../types';\n\nconst isProduction =\n typeof process !== 'undefined' && process.env.NODE_ENV === 'production';\n\nexport const getSessionCookieName = (config: AuthClientConfig): string => {\n const prefix = config.cookiePrefix || '';\n const baseName = 'session_token';\n if (prefix) {\n return `${prefix}_${baseName}`;\n }\n return isProduction ? '__Host-session_token' : baseName;\n};\n","'use client';\n\nimport {\n Badge,\n EntitySelector,\n type EntitySelectorColumn,\n type EntitySelectorConfig,\n useEntitySectionState,\n} from '@mesob/ui/components';\nimport { IconKey } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport type { paths } from '../../data/openapi';\nimport { useApi } from '../../provider';\n\ntype Permission = {\n id: string;\n description?: unknown;\n activity: string;\n application: string;\n feature: string;\n};\n\nconst permissionColumns: EntitySelectorColumn<Permission>[] = [\n {\n key: 'permission',\n header: 'Permission',\n cell: (permission) => (\n <div className=\"space-y-1\">\n <p className=\"font-medium\">{permission.activity}</p>\n <p className=\"font-mono text-xs text-muted-foreground\">\n {permission.id}\n </p>\n </div>\n ),\n },\n {\n key: 'scope',\n header: 'Scope',\n cell: (permission) => (\n <div className=\"flex flex-wrap gap-2\">\n <Badge variant=\"secondary\">{permission.application}</Badge>\n <Badge variant=\"outline\">{permission.feature}</Badge>\n </div>\n ),\n },\n];\n\ntype PermissionSelectorProps = {\n trigger: ReactNode;\n multiple?: boolean;\n onSelect: (permissions: Permission[]) => void;\n excludeIds?: string[];\n};\n\nexport function PermissionSelector({\n trigger,\n multiple = true,\n onSelect,\n excludeIds = [],\n}: PermissionSelectorProps) {\n const { hooks } = useApi();\n const state = useEntitySectionState({\n defaultSort: 'id',\n defaultOrder: 'asc',\n defaultPageSize: 10,\n searchParamName: 'search',\n });\n const permissionsQuery = state.queryConfig as {\n params: {\n query: NonNullable<paths['/permissions']['get']['parameters']['query']>;\n };\n };\n\n const { data, isPending, isFetching } = hooks.useQuery(\n 'get',\n '/permissions',\n permissionsQuery,\n );\n\n const items = ((data?.permissions ?? []) as Permission[]).filter(\n (permission) => !excludeIds.includes(permission.id),\n );\n\n const config: EntitySelectorConfig<Permission> = {\n title: 'Select permission(s)',\n multiple,\n entityName: 'permission',\n entityIcon: IconKey,\n columns: permissionColumns,\n getItemLabel: (permission) => permission.id,\n searchPlaceholder: 'Search permissions...',\n filterOptions: [\n { label: 'All', value: '' },\n { label: 'Application', value: 'application' },\n { label: 'Feature', value: 'feature' },\n { label: 'Activity', value: 'activity' },\n ],\n sortOptions: [\n { label: 'ID', value: 'id' },\n { label: 'Application', value: 'application' },\n { label: 'Feature', value: 'feature' },\n { label: 'Activity', value: 'activity' },\n ],\n showViewToggle: false,\n wrapHeaderInCard: false,\n };\n\n return (\n <EntitySelector<Permission>\n trigger={trigger}\n config={config}\n onSelect={onSelect}\n items={items}\n total={items.length}\n isLoading={isPending || isFetching}\n state={state}\n />\n );\n}\n","import type { Metadata } from 'next';\nimport { RolePermissionsPage } from '../../components/iam/role-permissions-page';\n\ntype RolePermissionsPageProps = {\n params: Promise<{ id: string }>;\n};\n\nexport const metadata: Metadata = {\n title: 'Role Permissions',\n description: 'Manage permissions assigned to a role.',\n};\n\nexport default async function RolePermissionsRoutePage({\n params,\n}: RolePermissionsPageProps) {\n const { id } = await params;\n\n return <RolePermissionsPage roleId={id} />;\n}\n"],"mappings":"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","names":["Badge","IconKey","useMemo","jsx","jsx","jsxs","useMemo","IconKey","Badge","jsx"]}
1
+ {"version":3,"sources":["../../../src/pages/iam/role-permissions.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport { RolePermissionsPage } from '../../components/iam/role-permissions-page';\n\ntype RolePermissionsPageProps = {\n params: Promise<{ id: string }>;\n};\n\nexport const metadata: Metadata = {\n title: 'Role Permissions',\n description: 'Manage permissions assigned to a role.',\n};\n\nexport default async function RolePermissionsRoutePage({\n params,\n}: RolePermissionsPageProps) {\n const { id } = await params;\n\n return <RolePermissionsPage roleId={id} />;\n}\n"],"mappings":";;;;;;;AAiBS;AAVF,IAAM,WAAqB;AAAA,EAChC,OAAO;AAAA,EACP,aAAa;AACf;AAEA,eAAO,yBAAgD;AAAA,EACrD;AACF,GAA6B;AAC3B,QAAM,EAAE,GAAG,IAAI,MAAM;AAErB,SAAO,oBAAC,uBAAoB,QAAQ,IAAI;AAC1C;","names":[]}
@@ -1,12 +1,9 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Metadata } from 'next';
3
-
1
+ import type { Metadata } from 'next';
4
2
  type RoleUsersPageProps = {
5
3
  params: Promise<{
6
4
  id: string;
7
5
  }>;
8
6
  };
9
- declare const metadata: Metadata;
10
- declare function RoleUsersRoutePage({ params, }: RoleUsersPageProps): Promise<react_jsx_runtime.JSX.Element>;
11
-
12
- export { RoleUsersRoutePage as default, metadata };
7
+ export declare const metadata: Metadata;
8
+ export default function RoleUsersRoutePage({ params, }: RoleUsersPageProps): Promise<import("react/jsx-runtime").JSX.Element>;
9
+ export {};