@payez/next-mvp 3.9.1 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/package.json +6 -18
  2. package/src/api/auth-handler.ts +550 -549
  3. package/src/api-handlers/account/change-password.ts +5 -8
  4. package/src/api-handlers/admin/analytics.ts +4 -6
  5. package/src/api-handlers/admin/audit.ts +5 -7
  6. package/src/api-handlers/admin/index.ts +1 -2
  7. package/src/api-handlers/admin/redis-sessions.ts +6 -8
  8. package/src/api-handlers/admin/sessions.ts +5 -7
  9. package/src/api-handlers/admin/site-logs.ts +8 -10
  10. package/src/api-handlers/admin/stats.ts +4 -6
  11. package/src/api-handlers/admin/users.ts +5 -7
  12. package/src/api-handlers/admin/vibe-data.ts +10 -12
  13. package/src/api-handlers/auth/refresh.ts +5 -7
  14. package/src/api-handlers/auth/signout.ts +5 -6
  15. package/src/api-handlers/auth/status.ts +4 -7
  16. package/src/api-handlers/auth/update-session.ts +123 -125
  17. package/src/api-handlers/auth/verify-code.ts +9 -13
  18. package/src/api-handlers/session/viability.ts +10 -47
  19. package/src/api-handlers/test/force-expire.ts +4 -11
  20. package/src/auth/auth-decision.ts +1 -1
  21. package/src/auth/better-auth.ts +138 -141
  22. package/src/auth/route-config.ts +219 -219
  23. package/src/auth/utils/token-utils.ts +0 -1
  24. package/src/client/AuthContext.tsx +6 -2
  25. package/src/client/fetch-with-auth.ts +47 -47
  26. package/src/components/SessionSync.tsx +6 -5
  27. package/src/components/account/MobileNavDrawer.tsx +3 -3
  28. package/src/components/account/UserAvatarMenu.tsx +6 -3
  29. package/src/components/admin/VibeAdminLayout.tsx +4 -2
  30. package/src/config/logger.ts +1 -1
  31. package/src/hooks/useAuth.ts +117 -115
  32. package/src/hooks/useAuthSettings.ts +2 -2
  33. package/src/hooks/useAvailableProviders.ts +9 -5
  34. package/src/hooks/useSessionExpiration.ts +101 -102
  35. package/src/hooks/useViabilitySession.ts +336 -335
  36. package/src/index.ts +60 -63
  37. package/src/lib/api-handler.ts +0 -1
  38. package/src/lib/app-slug.ts +6 -6
  39. package/src/lib/standardized-client-api.ts +901 -895
  40. package/src/lib/startup-init.ts +243 -247
  41. package/src/lib/test-aware-get-token.ts +22 -12
  42. package/src/lib/token-lifecycle.ts +12 -53
  43. package/src/pages/admin-login/page.tsx +9 -17
  44. package/src/pages/client-admin/ClientSiteAdminPage.tsx +4 -2
  45. package/src/pages/login/page.tsx +21 -28
  46. package/src/pages/showcase/ShowcasePage.tsx +4 -2
  47. package/src/pages/test-env/EmergencyLogoutPage.tsx +7 -6
  48. package/src/pages/test-env/JwtInspectPage.tsx +5 -3
  49. package/src/pages/test-env/RefreshTokenPage.tsx +157 -155
  50. package/src/pages/test-env/TestEnvPage.tsx +4 -2
  51. package/src/pages/verify-code/page.tsx +10 -6
  52. package/src/routes/auth/logout.ts +7 -25
  53. package/src/routes/auth/nextauth.ts +45 -71
  54. package/src/routes/auth/session.ts +25 -50
  55. package/src/routes/auth/viability.ts +7 -19
  56. package/src/server/auth.ts +60 -0
  57. package/src/stores/authStore.ts +1899 -1904
  58. package/src/utils/logout.ts +30 -30
  59. package/dist/api/auth-handler.d.ts +0 -67
  60. package/dist/api/auth-handler.js +0 -397
  61. package/dist/api/index.d.ts +0 -10
  62. package/dist/api/index.js +0 -19
  63. package/dist/api-handlers/account/change-password.d.ts +0 -9
  64. package/dist/api-handlers/account/change-password.js +0 -112
  65. package/dist/api-handlers/account/masked-info.d.ts +0 -2
  66. package/dist/api-handlers/account/masked-info.js +0 -41
  67. package/dist/api-handlers/account/profile.d.ts +0 -3
  68. package/dist/api-handlers/account/profile.js +0 -63
  69. package/dist/api-handlers/account/recovery/initiate.d.ts +0 -2
  70. package/dist/api-handlers/account/recovery/initiate.js +0 -26
  71. package/dist/api-handlers/account/recovery/send-code.d.ts +0 -2
  72. package/dist/api-handlers/account/recovery/send-code.js +0 -28
  73. package/dist/api-handlers/account/recovery/verify-code.d.ts +0 -2
  74. package/dist/api-handlers/account/recovery/verify-code.js +0 -28
  75. package/dist/api-handlers/account/reset-password.d.ts +0 -2
  76. package/dist/api-handlers/account/reset-password.js +0 -26
  77. package/dist/api-handlers/account/send-code.d.ts +0 -24
  78. package/dist/api-handlers/account/send-code.js +0 -60
  79. package/dist/api-handlers/account/update-phone.d.ts +0 -27
  80. package/dist/api-handlers/account/update-phone.js +0 -64
  81. package/dist/api-handlers/account/validate-password.d.ts +0 -17
  82. package/dist/api-handlers/account/validate-password.js +0 -81
  83. package/dist/api-handlers/account/verify-email.d.ts +0 -26
  84. package/dist/api-handlers/account/verify-email.js +0 -106
  85. package/dist/api-handlers/account/verify-sms.d.ts +0 -26
  86. package/dist/api-handlers/account/verify-sms.js +0 -106
  87. package/dist/api-handlers/admin/analytics.d.ts +0 -20
  88. package/dist/api-handlers/admin/analytics.js +0 -379
  89. package/dist/api-handlers/admin/audit.d.ts +0 -20
  90. package/dist/api-handlers/admin/audit.js +0 -214
  91. package/dist/api-handlers/admin/index.d.ts +0 -22
  92. package/dist/api-handlers/admin/index.js +0 -43
  93. package/dist/api-handlers/admin/redis-sessions.d.ts +0 -36
  94. package/dist/api-handlers/admin/redis-sessions.js +0 -204
  95. package/dist/api-handlers/admin/sessions.d.ts +0 -21
  96. package/dist/api-handlers/admin/sessions.js +0 -284
  97. package/dist/api-handlers/admin/site-logs.d.ts +0 -46
  98. package/dist/api-handlers/admin/site-logs.js +0 -318
  99. package/dist/api-handlers/admin/stats.d.ts +0 -21
  100. package/dist/api-handlers/admin/stats.js +0 -240
  101. package/dist/api-handlers/admin/users.d.ts +0 -20
  102. package/dist/api-handlers/admin/users.js +0 -222
  103. package/dist/api-handlers/admin/vibe-data.d.ts +0 -80
  104. package/dist/api-handlers/admin/vibe-data.js +0 -268
  105. package/dist/api-handlers/anon/preferences.d.ts +0 -37
  106. package/dist/api-handlers/anon/preferences.js +0 -96
  107. package/dist/api-handlers/auth/jwks.d.ts +0 -2
  108. package/dist/api-handlers/auth/jwks.js +0 -24
  109. package/dist/api-handlers/auth/login.d.ts +0 -42
  110. package/dist/api-handlers/auth/login.js +0 -178
  111. package/dist/api-handlers/auth/refresh.d.ts +0 -74
  112. package/dist/api-handlers/auth/refresh.js +0 -635
  113. package/dist/api-handlers/auth/signout.d.ts +0 -37
  114. package/dist/api-handlers/auth/signout.js +0 -187
  115. package/dist/api-handlers/auth/status.d.ts +0 -8
  116. package/dist/api-handlers/auth/status.js +0 -26
  117. package/dist/api-handlers/auth/update-session.d.ts +0 -37
  118. package/dist/api-handlers/auth/update-session.js +0 -95
  119. package/dist/api-handlers/auth/validate.d.ts +0 -6
  120. package/dist/api-handlers/auth/validate.js +0 -43
  121. package/dist/api-handlers/auth/verify-code.d.ts +0 -43
  122. package/dist/api-handlers/auth/verify-code.js +0 -94
  123. package/dist/api-handlers/session/refresh-viability.d.ts +0 -14
  124. package/dist/api-handlers/session/refresh-viability.js +0 -39
  125. package/dist/api-handlers/session/viability.d.ts +0 -13
  126. package/dist/api-handlers/session/viability.js +0 -146
  127. package/dist/api-handlers/test/force-expire.d.ts +0 -23
  128. package/dist/api-handlers/test/force-expire.js +0 -65
  129. package/dist/auth/auth-decision.d.ts +0 -39
  130. package/dist/auth/auth-decision.js +0 -182
  131. package/dist/auth/auth-options.d.ts +0 -57
  132. package/dist/auth/auth-options.js +0 -213
  133. package/dist/auth/better-auth.d.ts +0 -82
  134. package/dist/auth/better-auth.js +0 -122
  135. package/dist/auth/callbacks/index.d.ts +0 -6
  136. package/dist/auth/callbacks/index.js +0 -12
  137. package/dist/auth/callbacks/jwt.d.ts +0 -45
  138. package/dist/auth/callbacks/jwt.js +0 -305
  139. package/dist/auth/callbacks/session.d.ts +0 -60
  140. package/dist/auth/callbacks/session.js +0 -170
  141. package/dist/auth/callbacks/signin.d.ts +0 -23
  142. package/dist/auth/callbacks/signin.js +0 -44
  143. package/dist/auth/events/index.d.ts +0 -4
  144. package/dist/auth/events/index.js +0 -8
  145. package/dist/auth/events/signout.d.ts +0 -17
  146. package/dist/auth/events/signout.js +0 -32
  147. package/dist/auth/providers/credentials.d.ts +0 -32
  148. package/dist/auth/providers/credentials.js +0 -223
  149. package/dist/auth/providers/index.d.ts +0 -5
  150. package/dist/auth/providers/index.js +0 -21
  151. package/dist/auth/providers/oauth.d.ts +0 -26
  152. package/dist/auth/providers/oauth.js +0 -105
  153. package/dist/auth/route-config.d.ts +0 -66
  154. package/dist/auth/route-config.js +0 -190
  155. package/dist/auth/types/auth-types.d.ts +0 -417
  156. package/dist/auth/types/auth-types.js +0 -53
  157. package/dist/auth/types/index.d.ts +0 -6
  158. package/dist/auth/types/index.js +0 -22
  159. package/dist/auth/unauthenticated-routes.d.ts +0 -1
  160. package/dist/auth/unauthenticated-routes.js +0 -19
  161. package/dist/auth/utils/idp-client.d.ts +0 -94
  162. package/dist/auth/utils/idp-client.js +0 -384
  163. package/dist/auth/utils/index.d.ts +0 -5
  164. package/dist/auth/utils/index.js +0 -21
  165. package/dist/auth/utils/token-utils.d.ts +0 -84
  166. package/dist/auth/utils/token-utils.js +0 -219
  167. package/dist/client/AuthContext.d.ts +0 -19
  168. package/dist/client/AuthContext.js +0 -112
  169. package/dist/client/better-auth-client.d.ts +0 -1020
  170. package/dist/client/better-auth-client.js +0 -68
  171. package/dist/client/fetch-with-auth.d.ts +0 -11
  172. package/dist/client/fetch-with-auth.js +0 -44
  173. package/dist/client/fetchWithSession.d.ts +0 -3
  174. package/dist/client/fetchWithSession.js +0 -24
  175. package/dist/client/index.d.ts +0 -9
  176. package/dist/client/index.js +0 -20
  177. package/dist/client/useAnonSession.d.ts +0 -36
  178. package/dist/client/useAnonSession.js +0 -99
  179. package/dist/components/SessionSync.d.ts +0 -13
  180. package/dist/components/SessionSync.js +0 -119
  181. package/dist/components/SignalRHealthCheck.d.ts +0 -10
  182. package/dist/components/SignalRHealthCheck.js +0 -97
  183. package/dist/components/account/MobileNavDrawer.d.ts +0 -32
  184. package/dist/components/account/MobileNavDrawer.js +0 -81
  185. package/dist/components/account/UserAvatarMenu.d.ts +0 -20
  186. package/dist/components/account/UserAvatarMenu.js +0 -88
  187. package/dist/components/account/index.d.ts +0 -9
  188. package/dist/components/account/index.js +0 -13
  189. package/dist/components/admin/AlertSettingsTab.d.ts +0 -48
  190. package/dist/components/admin/AlertSettingsTab.js +0 -351
  191. package/dist/components/admin/AnalyticsTab.d.ts +0 -22
  192. package/dist/components/admin/AnalyticsTab.js +0 -167
  193. package/dist/components/admin/DataBrowserTab.d.ts +0 -19
  194. package/dist/components/admin/DataBrowserTab.js +0 -252
  195. package/dist/components/admin/LoggingSettingsTab.d.ts +0 -73
  196. package/dist/components/admin/LoggingSettingsTab.js +0 -339
  197. package/dist/components/admin/SessionsTab.d.ts +0 -37
  198. package/dist/components/admin/SessionsTab.js +0 -165
  199. package/dist/components/admin/StatsTab.d.ts +0 -53
  200. package/dist/components/admin/StatsTab.js +0 -161
  201. package/dist/components/admin/VibeAdminContext.d.ts +0 -32
  202. package/dist/components/admin/VibeAdminContext.js +0 -38
  203. package/dist/components/admin/VibeAdminLayout.d.ts +0 -11
  204. package/dist/components/admin/VibeAdminLayout.js +0 -69
  205. package/dist/components/admin/index.d.ts +0 -29
  206. package/dist/components/admin/index.js +0 -44
  207. package/dist/components/auth/FederatedAuthSection.d.ts +0 -8
  208. package/dist/components/auth/FederatedAuthSection.js +0 -45
  209. package/dist/components/auth/ModeAwareLoginPage.d.ts +0 -10
  210. package/dist/components/auth/ModeAwareLoginPage.js +0 -42
  211. package/dist/components/auth/ModeAwareSignupPage.d.ts +0 -9
  212. package/dist/components/auth/ModeAwareSignupPage.js +0 -78
  213. package/dist/components/auth/TraditionalAuthSection.d.ts +0 -14
  214. package/dist/components/auth/TraditionalAuthSection.js +0 -20
  215. package/dist/components/recovery/CompleteStep.d.ts +0 -5
  216. package/dist/components/recovery/CompleteStep.js +0 -8
  217. package/dist/components/recovery/InitiateRecoveryStep.d.ts +0 -8
  218. package/dist/components/recovery/InitiateRecoveryStep.js +0 -20
  219. package/dist/components/recovery/SelectMethodStep.d.ts +0 -8
  220. package/dist/components/recovery/SelectMethodStep.js +0 -8
  221. package/dist/components/recovery/SetPasswordStep.d.ts +0 -6
  222. package/dist/components/recovery/SetPasswordStep.js +0 -20
  223. package/dist/components/recovery/VerifyCodeStep.d.ts +0 -10
  224. package/dist/components/recovery/VerifyCodeStep.js +0 -24
  225. package/dist/components/reserved/ReservedRecoveryWarning.d.ts +0 -38
  226. package/dist/components/reserved/ReservedRecoveryWarning.js +0 -92
  227. package/dist/components/reserved/ReservedStatusBox.d.ts +0 -30
  228. package/dist/components/reserved/ReservedStatusBox.js +0 -71
  229. package/dist/components/ui/BetaBadge.d.ts +0 -29
  230. package/dist/components/ui/BetaBadge.js +0 -38
  231. package/dist/components/ui/Footer.d.ts +0 -37
  232. package/dist/components/ui/Footer.js +0 -41
  233. package/dist/config/env.d.ts +0 -66
  234. package/dist/config/env.js +0 -57
  235. package/dist/config/logger.d.ts +0 -57
  236. package/dist/config/logger.js +0 -73
  237. package/dist/config/logging-config.d.ts +0 -30
  238. package/dist/config/logging-config.js +0 -122
  239. package/dist/config/unauthenticated-routes.d.ts +0 -17
  240. package/dist/config/unauthenticated-routes.js +0 -24
  241. package/dist/config/vibe-log-transport.d.ts +0 -81
  242. package/dist/config/vibe-log-transport.js +0 -212
  243. package/dist/edge/internal-api-url.d.ts +0 -53
  244. package/dist/edge/internal-api-url.js +0 -63
  245. package/dist/edge/middleware.d.ts +0 -14
  246. package/dist/edge/middleware.js +0 -32
  247. package/dist/hooks/useAuth.d.ts +0 -23
  248. package/dist/hooks/useAuth.js +0 -81
  249. package/dist/hooks/useAuthSettings.d.ts +0 -59
  250. package/dist/hooks/useAuthSettings.js +0 -93
  251. package/dist/hooks/useAvailableProviders.d.ts +0 -45
  252. package/dist/hooks/useAvailableProviders.js +0 -108
  253. package/dist/hooks/usePasswordValidation.d.ts +0 -27
  254. package/dist/hooks/usePasswordValidation.js +0 -102
  255. package/dist/hooks/useProfile.d.ts +0 -15
  256. package/dist/hooks/useProfile.js +0 -59
  257. package/dist/hooks/usePublicAuthSettings.d.ts +0 -56
  258. package/dist/hooks/usePublicAuthSettings.js +0 -131
  259. package/dist/hooks/useSessionExpiration.d.ts +0 -57
  260. package/dist/hooks/useSessionExpiration.js +0 -72
  261. package/dist/hooks/useViabilitySession.d.ts +0 -75
  262. package/dist/hooks/useViabilitySession.js +0 -268
  263. package/dist/index.d.ts +0 -12
  264. package/dist/index.js +0 -55
  265. package/dist/lib/anon-session.d.ts +0 -74
  266. package/dist/lib/anon-session.js +0 -169
  267. package/dist/lib/api-handler.d.ts +0 -123
  268. package/dist/lib/api-handler.js +0 -478
  269. package/dist/lib/app-slug.d.ts +0 -95
  270. package/dist/lib/app-slug.js +0 -172
  271. package/dist/lib/demo-mode.d.ts +0 -6
  272. package/dist/lib/demo-mode.js +0 -16
  273. package/dist/lib/geolocation.d.ts +0 -64
  274. package/dist/lib/geolocation.js +0 -235
  275. package/dist/lib/idp-client-config.d.ts +0 -75
  276. package/dist/lib/idp-client-config.js +0 -425
  277. package/dist/lib/idp-fetch.d.ts +0 -14
  278. package/dist/lib/idp-fetch.js +0 -91
  279. package/dist/lib/internal-api.d.ts +0 -87
  280. package/dist/lib/internal-api.js +0 -122
  281. package/dist/lib/jwt-decode-client.d.ts +0 -10
  282. package/dist/lib/jwt-decode-client.js +0 -46
  283. package/dist/lib/jwt-decode.d.ts +0 -48
  284. package/dist/lib/jwt-decode.js +0 -57
  285. package/dist/lib/nextauth-secret.d.ts +0 -10
  286. package/dist/lib/nextauth-secret.js +0 -100
  287. package/dist/lib/rate-limit-service.d.ts +0 -23
  288. package/dist/lib/rate-limit-service.js +0 -6
  289. package/dist/lib/redis.d.ts +0 -5
  290. package/dist/lib/redis.js +0 -28
  291. package/dist/lib/refresh-token-validator.d.ts +0 -13
  292. package/dist/lib/refresh-token-validator.js +0 -117
  293. package/dist/lib/roles.d.ts +0 -145
  294. package/dist/lib/roles.js +0 -168
  295. package/dist/lib/secret-validation.d.ts +0 -4
  296. package/dist/lib/secret-validation.js +0 -14
  297. package/dist/lib/session-store.d.ts +0 -170
  298. package/dist/lib/session-store.js +0 -545
  299. package/dist/lib/session.d.ts +0 -21
  300. package/dist/lib/session.js +0 -26
  301. package/dist/lib/site-logger.d.ts +0 -214
  302. package/dist/lib/site-logger.js +0 -210
  303. package/dist/lib/standardized-client-api.d.ts +0 -161
  304. package/dist/lib/standardized-client-api.js +0 -786
  305. package/dist/lib/startup-init.d.ts +0 -40
  306. package/dist/lib/startup-init.js +0 -261
  307. package/dist/lib/test-aware-get-token.d.ts +0 -2
  308. package/dist/lib/test-aware-get-token.js +0 -81
  309. package/dist/lib/token-expiry.d.ts +0 -14
  310. package/dist/lib/token-expiry.js +0 -39
  311. package/dist/lib/token-lifecycle.d.ts +0 -52
  312. package/dist/lib/token-lifecycle.js +0 -398
  313. package/dist/lib/types/api-responses.d.ts +0 -128
  314. package/dist/lib/types/api-responses.js +0 -171
  315. package/dist/lib/user-agent-parser.d.ts +0 -50
  316. package/dist/lib/user-agent-parser.js +0 -220
  317. package/dist/logging/api/admin-analytics.d.ts +0 -3
  318. package/dist/logging/api/admin-analytics.js +0 -45
  319. package/dist/logging/api/audit-log.d.ts +0 -3
  320. package/dist/logging/api/audit-log.js +0 -52
  321. package/dist/logging/components/AdminAnalyticsLayout.d.ts +0 -10
  322. package/dist/logging/components/AdminAnalyticsLayout.js +0 -11
  323. package/dist/logging/components/AuditLogViewer.d.ts +0 -7
  324. package/dist/logging/components/AuditLogViewer.js +0 -51
  325. package/dist/logging/components/ErrorMetricsCard.d.ts +0 -7
  326. package/dist/logging/components/ErrorMetricsCard.js +0 -16
  327. package/dist/logging/components/HealthMetricsCard.d.ts +0 -7
  328. package/dist/logging/components/HealthMetricsCard.js +0 -19
  329. package/dist/logging/hooks/useAdminAnalytics.d.ts +0 -24
  330. package/dist/logging/hooks/useAdminAnalytics.js +0 -22
  331. package/dist/logging/hooks/useAuditLog.d.ts +0 -6
  332. package/dist/logging/hooks/useAuditLog.js +0 -25
  333. package/dist/logging/hooks/useErrorMetrics.d.ts +0 -6
  334. package/dist/logging/hooks/useErrorMetrics.js +0 -38
  335. package/dist/logging/hooks/useHealthMetrics.d.ts +0 -6
  336. package/dist/logging/hooks/useHealthMetrics.js +0 -41
  337. package/dist/logging/index.d.ts +0 -11
  338. package/dist/logging/index.js +0 -40
  339. package/dist/logging/types/analytics.d.ts +0 -68
  340. package/dist/logging/types/analytics.js +0 -3
  341. package/dist/logging/types/audit.d.ts +0 -29
  342. package/dist/logging/types/audit.js +0 -2
  343. package/dist/logging/types/index.d.ts +0 -2
  344. package/dist/logging/types/index.js +0 -19
  345. package/dist/middleware/auth-decision.d.ts +0 -33
  346. package/dist/middleware/auth-decision.js +0 -65
  347. package/dist/middleware/create-middleware.d.ts +0 -102
  348. package/dist/middleware/create-middleware.js +0 -469
  349. package/dist/middleware/rbac-check.d.ts +0 -51
  350. package/dist/middleware/rbac-check.js +0 -219
  351. package/dist/middleware/twofa-presets.d.ts +0 -134
  352. package/dist/middleware/twofa-presets.js +0 -175
  353. package/dist/models/DecodedAccessToken.d.ts +0 -17
  354. package/dist/models/DecodedAccessToken.js +0 -2
  355. package/dist/models/SessionModel.d.ts +0 -122
  356. package/dist/models/SessionModel.js +0 -136
  357. package/dist/pages/admin-login/page.d.ts +0 -31
  358. package/dist/pages/admin-login/page.js +0 -83
  359. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.d.ts +0 -18
  360. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.js +0 -276
  361. package/dist/pages/admin-page-permissions/index.d.ts +0 -6
  362. package/dist/pages/admin-page-permissions/index.js +0 -13
  363. package/dist/pages/admin-roles/RolesAdminPage.d.ts +0 -16
  364. package/dist/pages/admin-roles/RolesAdminPage.js +0 -261
  365. package/dist/pages/admin-roles/index.d.ts +0 -8
  366. package/dist/pages/admin-roles/index.js +0 -15
  367. package/dist/pages/admin-roles/modals.d.ts +0 -72
  368. package/dist/pages/admin-roles/modals.js +0 -154
  369. package/dist/pages/client-admin/ClientSiteAdminPage.d.ts +0 -79
  370. package/dist/pages/client-admin/ClientSiteAdminPage.js +0 -177
  371. package/dist/pages/client-admin/index.d.ts +0 -32
  372. package/dist/pages/client-admin/index.js +0 -37
  373. package/dist/pages/coming-soon/page.d.ts +0 -8
  374. package/dist/pages/coming-soon/page.js +0 -28
  375. package/dist/pages/login/page.d.ts +0 -22
  376. package/dist/pages/login/page.js +0 -239
  377. package/dist/pages/profile/EnhancedProfilePage.d.ts +0 -13
  378. package/dist/pages/profile/EnhancedProfilePage.js +0 -150
  379. package/dist/pages/profile/index.d.ts +0 -8
  380. package/dist/pages/profile/index.js +0 -16
  381. package/dist/pages/profile/page.d.ts +0 -19
  382. package/dist/pages/profile/page.js +0 -47
  383. package/dist/pages/profile/profile-patch.d.ts +0 -1
  384. package/dist/pages/profile/profile-patch.js +0 -281
  385. package/dist/pages/recovery/page.d.ts +0 -1
  386. package/dist/pages/recovery/page.js +0 -142
  387. package/dist/pages/roles/MyRolesPage.d.ts +0 -24
  388. package/dist/pages/roles/MyRolesPage.js +0 -71
  389. package/dist/pages/roles/components.d.ts +0 -63
  390. package/dist/pages/roles/components.js +0 -108
  391. package/dist/pages/roles/index.d.ts +0 -8
  392. package/dist/pages/roles/index.js +0 -19
  393. package/dist/pages/security/EnhancedSecurityPage.d.ts +0 -14
  394. package/dist/pages/security/EnhancedSecurityPage.js +0 -248
  395. package/dist/pages/security/index.d.ts +0 -8
  396. package/dist/pages/security/index.js +0 -16
  397. package/dist/pages/security/page.d.ts +0 -21
  398. package/dist/pages/security/page.js +0 -212
  399. package/dist/pages/security/security-patch.d.ts +0 -1
  400. package/dist/pages/security/security-patch.js +0 -302
  401. package/dist/pages/settings/EnhancedSettingsPage.d.ts +0 -46
  402. package/dist/pages/settings/EnhancedSettingsPage.js +0 -231
  403. package/dist/pages/settings/index.d.ts +0 -8
  404. package/dist/pages/settings/index.js +0 -16
  405. package/dist/pages/settings/page.d.ts +0 -7
  406. package/dist/pages/settings/page.js +0 -26
  407. package/dist/pages/showcase/ShowcasePage.d.ts +0 -13
  408. package/dist/pages/showcase/ShowcasePage.js +0 -140
  409. package/dist/pages/showcase/index.d.ts +0 -12
  410. package/dist/pages/showcase/index.js +0 -17
  411. package/dist/pages/test-env/EmergencyLogoutPage.d.ts +0 -14
  412. package/dist/pages/test-env/EmergencyLogoutPage.js +0 -98
  413. package/dist/pages/test-env/JwtInspectPage.d.ts +0 -14
  414. package/dist/pages/test-env/JwtInspectPage.js +0 -114
  415. package/dist/pages/test-env/RefreshTokenPage.d.ts +0 -15
  416. package/dist/pages/test-env/RefreshTokenPage.js +0 -91
  417. package/dist/pages/test-env/TestEnvPage.d.ts +0 -13
  418. package/dist/pages/test-env/TestEnvPage.js +0 -49
  419. package/dist/pages/test-env/index.d.ts +0 -24
  420. package/dist/pages/test-env/index.js +0 -32
  421. package/dist/pages/verify-code/page.d.ts +0 -30
  422. package/dist/pages/verify-code/page.js +0 -408
  423. package/dist/routes/account/index.d.ts +0 -28
  424. package/dist/routes/account/index.js +0 -71
  425. package/dist/routes/account/masked-info.d.ts +0 -33
  426. package/dist/routes/account/masked-info.js +0 -39
  427. package/dist/routes/account/send-code.d.ts +0 -37
  428. package/dist/routes/account/send-code.js +0 -42
  429. package/dist/routes/account/update-phone.d.ts +0 -13
  430. package/dist/routes/account/update-phone.js +0 -17
  431. package/dist/routes/account/verify-email.d.ts +0 -38
  432. package/dist/routes/account/verify-email.js +0 -43
  433. package/dist/routes/account/verify-sms.d.ts +0 -38
  434. package/dist/routes/account/verify-sms.js +0 -43
  435. package/dist/routes/auth/index.d.ts +0 -19
  436. package/dist/routes/auth/index.js +0 -64
  437. package/dist/routes/auth/logout.d.ts +0 -31
  438. package/dist/routes/auth/logout.js +0 -113
  439. package/dist/routes/auth/nextauth.d.ts +0 -19
  440. package/dist/routes/auth/nextauth.js +0 -72
  441. package/dist/routes/auth/refresh.d.ts +0 -30
  442. package/dist/routes/auth/refresh.js +0 -51
  443. package/dist/routes/auth/session.d.ts +0 -43
  444. package/dist/routes/auth/session.js +0 -179
  445. package/dist/routes/auth/settings.d.ts +0 -25
  446. package/dist/routes/auth/settings.js +0 -55
  447. package/dist/routes/auth/viability.d.ts +0 -52
  448. package/dist/routes/auth/viability.js +0 -201
  449. package/dist/routes/index.d.ts +0 -12
  450. package/dist/routes/index.js +0 -54
  451. package/dist/routes/session/index.d.ts +0 -6
  452. package/dist/routes/session/index.js +0 -10
  453. package/dist/routes/session/refresh-viability.d.ts +0 -16
  454. package/dist/routes/session/refresh-viability.js +0 -20
  455. package/dist/server/auth-guard.d.ts +0 -46
  456. package/dist/server/auth-guard.js +0 -128
  457. package/dist/server/decode-session.d.ts +0 -30
  458. package/dist/server/decode-session.js +0 -78
  459. package/dist/server/slim-middleware.d.ts +0 -23
  460. package/dist/server/slim-middleware.js +0 -89
  461. package/dist/server/with-auth.d.ts +0 -33
  462. package/dist/server/with-auth.js +0 -59
  463. package/dist/services/signalrActivityService.d.ts +0 -44
  464. package/dist/services/signalrActivityService.js +0 -257
  465. package/dist/stores/authStore.d.ts +0 -154
  466. package/dist/stores/authStore.js +0 -1531
  467. package/dist/theme/ThemeProvider.d.ts +0 -14
  468. package/dist/theme/ThemeProvider.js +0 -28
  469. package/dist/theme/default.d.ts +0 -8
  470. package/dist/theme/default.js +0 -33
  471. package/dist/theme/index.d.ts +0 -15
  472. package/dist/theme/index.js +0 -25
  473. package/dist/theme/types.d.ts +0 -56
  474. package/dist/theme/types.js +0 -8
  475. package/dist/theme/useTheme.d.ts +0 -60
  476. package/dist/theme/useTheme.js +0 -63
  477. package/dist/theme/utils.d.ts +0 -13
  478. package/dist/theme/utils.js +0 -39
  479. package/dist/types/api.d.ts +0 -134
  480. package/dist/types/api.js +0 -44
  481. package/dist/types/auth.d.ts +0 -19
  482. package/dist/types/auth.js +0 -2
  483. package/dist/types/logging.d.ts +0 -42
  484. package/dist/types/logging.js +0 -2
  485. package/dist/types/recovery.d.ts +0 -48
  486. package/dist/types/recovery.js +0 -2
  487. package/dist/types/security.d.ts +0 -1
  488. package/dist/types/security.js +0 -2
  489. package/dist/utils/api.d.ts +0 -85
  490. package/dist/utils/api.js +0 -287
  491. package/dist/utils/circuitBreaker.d.ts +0 -43
  492. package/dist/utils/circuitBreaker.js +0 -91
  493. package/dist/utils/error-message.d.ts +0 -1
  494. package/dist/utils/error-message.js +0 -103
  495. package/dist/utils/layout/reservedSpace.d.ts +0 -59
  496. package/dist/utils/layout/reservedSpace.js +0 -102
  497. package/dist/utils/logout.d.ts +0 -14
  498. package/dist/utils/logout.js +0 -32
  499. package/dist/vibe/client.d.ts +0 -261
  500. package/dist/vibe/client.js +0 -445
  501. package/dist/vibe/enterprise-auth.d.ts +0 -106
  502. package/dist/vibe/enterprise-auth.js +0 -173
  503. package/dist/vibe/errors.d.ts +0 -83
  504. package/dist/vibe/errors.js +0 -146
  505. package/dist/vibe/generic.d.ts +0 -234
  506. package/dist/vibe/generic.js +0 -369
  507. package/dist/vibe/hooks/index.d.ts +0 -169
  508. package/dist/vibe/hooks/index.js +0 -252
  509. package/dist/vibe/index.d.ts +0 -25
  510. package/dist/vibe/index.js +0 -72
  511. package/dist/vibe/sessions.d.ts +0 -161
  512. package/dist/vibe/sessions.js +0 -391
  513. package/dist/vibe/types.d.ts +0 -353
  514. package/dist/vibe/types.js +0 -315
  515. package/src/auth/auth-options.ts +0 -237
  516. package/src/auth/callbacks/index.ts +0 -7
  517. package/src/auth/callbacks/jwt.ts +0 -382
  518. package/src/auth/callbacks/session.ts +0 -243
  519. package/src/auth/callbacks/signin.ts +0 -56
  520. package/src/auth/events/index.ts +0 -5
  521. package/src/auth/events/signout.ts +0 -33
  522. package/src/auth/providers/credentials.ts +0 -256
  523. package/src/auth/providers/index.ts +0 -6
  524. package/src/auth/providers/oauth.ts +0 -114
  525. package/src/lib/nextauth-secret.ts +0 -121
  526. package/src/types/next-auth.d.ts +0 -15
@@ -1,142 +0,0 @@
1
- "use strict";
2
- 'use client';
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.default = RecoveryPage;
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = require("react");
7
- const navigation_1 = require("next/navigation");
8
- const api_1 = require("../../utils/api");
9
- const InitiateRecoveryStep_1 = require("../../components/recovery/InitiateRecoveryStep");
10
- const SelectMethodStep_1 = require("../../components/recovery/SelectMethodStep");
11
- const VerifyCodeStep_1 = require("../../components/recovery/VerifyCodeStep");
12
- const SetPasswordStep_1 = require("../../components/recovery/SetPasswordStep");
13
- const CompleteStep_1 = require("../../components/recovery/CompleteStep");
14
- const useTheme_1 = require("../../theme/useTheme");
15
- function RecoveryContent() {
16
- const router = (0, navigation_1.useRouter)();
17
- const searchParams = (0, navigation_1.useSearchParams)();
18
- const prefilledEmail = searchParams?.get('email') || '';
19
- const colors = (0, useTheme_1.useColors)();
20
- const [currentStep, setCurrentStep] = (0, react_1.useState)('initiate');
21
- const [email, setEmail] = (0, react_1.useState)(prefilledEmail);
22
- const [recoverySession, setRecoverySession] = (0, react_1.useState)(null);
23
- const [selectedMethod, setSelectedMethod] = (0, react_1.useState)(null);
24
- const [verificationCode, setVerificationCode] = (0, react_1.useState)('');
25
- const [passwordResetToken, setPasswordResetToken] = (0, react_1.useState)(null);
26
- const [error, setError] = (0, react_1.useState)(null);
27
- const [loading, setLoading] = (0, react_1.useState)(false);
28
- const handleInitiateRecovery = async () => {
29
- setLoading(true);
30
- setError(null);
31
- try {
32
- const response = await api_1.accountApi.initiateRecovery(email);
33
- if (response.success && response.data.recovery_session_token) {
34
- setRecoverySession({
35
- recoveryToken: response.data.recovery_session_token,
36
- email: email,
37
- maskedEmail: response.data.masked_email,
38
- maskedPhone: response.data.masked_phone,
39
- hasAuthenticator: response.data.has_authenticator,
40
- availableMethods: response.data.available_methods || [],
41
- expiresAt: response.data.expires_at || ''
42
- });
43
- setCurrentStep('select-method');
44
- }
45
- else {
46
- setCurrentStep('complete');
47
- }
48
- }
49
- catch (err) {
50
- setError(err instanceof Error ? err.message : 'Failed to initiate recovery. Please try again.');
51
- }
52
- finally {
53
- setLoading(false);
54
- }
55
- };
56
- const handleSendCode = async (method) => {
57
- if (!recoverySession)
58
- return;
59
- setLoading(true);
60
- setError(null);
61
- setSelectedMethod(method);
62
- try {
63
- const response = await api_1.accountApi.sendRecoveryCode(recoverySession.recoveryToken, method);
64
- if (response.success) {
65
- setCurrentStep('verify-code');
66
- }
67
- else {
68
- setError('Failed to send verification code. Please try again.');
69
- }
70
- }
71
- catch (err) {
72
- setError(err instanceof Error ? err.message : 'Failed to send verification code.');
73
- }
74
- finally {
75
- setLoading(false);
76
- }
77
- };
78
- const handleVerifyCode = async () => {
79
- if (!recoverySession || !selectedMethod)
80
- return;
81
- setLoading(true);
82
- setError(null);
83
- try {
84
- const response = await api_1.accountApi.verifyRecoveryCode(recoverySession.recoveryToken, verificationCode, selectedMethod);
85
- if (response.success && response.data) {
86
- setPasswordResetToken({
87
- token: response.data.password_reset_token,
88
- expiresAt: response.data.expires_at
89
- });
90
- setCurrentStep('set-password');
91
- }
92
- else {
93
- setError(response.error?.message || 'Invalid verification code');
94
- }
95
- }
96
- catch (err) {
97
- setError(err instanceof Error ? err.message : 'Failed to verify code.');
98
- }
99
- finally {
100
- setLoading(false);
101
- }
102
- };
103
- const handleResetPassword = async (password, confirmPassword) => {
104
- if (!passwordResetToken || !recoverySession)
105
- return;
106
- setLoading(true);
107
- setError(null);
108
- try {
109
- const response = await api_1.accountApi.resetPasswordWithToken(recoverySession.email, passwordResetToken.token, password, confirmPassword);
110
- if (response.success) {
111
- setCurrentStep('complete');
112
- }
113
- else {
114
- setError('Failed to reset password. Please try again.');
115
- }
116
- }
117
- catch (err) {
118
- setError(err instanceof Error ? err.message : 'Failed to reset password.');
119
- }
120
- finally {
121
- setLoading(false);
122
- }
123
- };
124
- const handleGoBack = () => {
125
- if (currentStep === 'select-method')
126
- setCurrentStep('initiate');
127
- else if (currentStep === 'verify-code')
128
- setCurrentStep('select-method');
129
- else if (currentStep === 'set-password')
130
- setCurrentStep('verify-code');
131
- };
132
- return ((0, jsx_runtime_1.jsx)("div", { className: "w-full flex items-center justify-center p-6", style: { background: 'var(--bg-default)' }, children: (0, jsx_runtime_1.jsxs)("div", { className: "max-w-md w-full", children: [error && ((0, jsx_runtime_1.jsx)("div", { className: "mb-4 bg-red-50 border border-red-200 rounded-2xl p-3", children: (0, jsx_runtime_1.jsx)("p", { className: "text-red-700 text-sm", children: error }) })), loading && ((0, jsx_runtime_1.jsx)("div", { className: "mb-4 rounded-2xl p-3", style: { background: 'var(--bg-card)', borderColor: 'var(--border-default)' }, children: (0, jsx_runtime_1.jsx)("p", { className: "text-sm", style: { color: 'var(--text-secondary)' }, children: "Processing..." }) })), currentStep === 'initiate' && ((0, jsx_runtime_1.jsx)(InitiateRecoveryStep_1.InitiateRecoveryStep, { email: email, setEmail: setEmail, onSubmit: handleInitiateRecovery, loading: loading })), currentStep === 'select-method' && recoverySession && ((0, jsx_runtime_1.jsx)(SelectMethodStep_1.SelectMethodStep, { session: recoverySession, onSelectMethod: handleSendCode, loading: loading })), currentStep === 'verify-code' && ((0, jsx_runtime_1.jsx)(VerifyCodeStep_1.VerifyCodeStep, { code: verificationCode, setCode: setVerificationCode, onSubmit: handleVerifyCode, onResend: () => selectedMethod && handleSendCode(selectedMethod), loading: loading, maskedDestination: selectedMethod === 'sms'
133
- ? recoverySession?.maskedPhone
134
- : recoverySession?.maskedEmail })), currentStep === 'set-password' && ((0, jsx_runtime_1.jsx)(SetPasswordStep_1.SetPasswordStep, { onSubmit: handleResetPassword, loading: loading })), currentStep === 'complete' && ((0, jsx_runtime_1.jsx)(CompleteStep_1.CompleteStep, { onGoToLogin: () => router.push('/account-auth/login') })), currentStep !== 'complete' && currentStep !== 'initiate' && !loading && ((0, jsx_runtime_1.jsx)("div", { className: "mt-6 text-center", children: (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: handleGoBack, className: "text-sm hover:underline font-medium", style: { color: 'var(--text-primary)' }, children: "\u2190 Go Back" }) }))] }) }));
135
- }
136
- function LoadingFallback() {
137
- const colors = (0, useTheme_1.useColors)();
138
- return ((0, jsx_runtime_1.jsx)("div", { className: "w-full flex items-center justify-center", style: { background: 'var(--bg-default)' }, children: (0, jsx_runtime_1.jsx)("div", { className: "border rounded-2xl p-8", style: { background: 'var(--bg-card)', borderColor: 'var(--border-default)' }, children: (0, jsx_runtime_1.jsx)("p", { style: { color: 'var(--text-muted)' }, children: "Loading..." }) }) }));
139
- }
140
- function RecoveryPage() {
141
- return ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(LoadingFallback, {}), children: (0, jsx_runtime_1.jsx)(RecoveryContent, {}) }));
142
- }
@@ -1,24 +0,0 @@
1
- /**
2
- * My Roles Page for @payez/next-mvp
3
- *
4
- * User view of their assigned roles (/account/roles).
5
- * Shows roles from both IDP and app sources with expandable permissions.
6
- * Read-only - users cannot self-assign roles.
7
- *
8
- * @see docs/specs/ROLES_MANAGEMENT_SPEC.md
9
- */
10
- import { Role } from './components';
11
- interface MyRolesResponse {
12
- summary: {
13
- total_roles: number;
14
- sources: string[];
15
- };
16
- idp_roles: Role[];
17
- app_roles: Role[];
18
- }
19
- interface MyRolesPageProps {
20
- initialData?: MyRolesResponse;
21
- rolesEndpoint?: string;
22
- }
23
- export default function MyRolesPage({ initialData, rolesEndpoint, }: MyRolesPageProps): import("react/jsx-runtime").JSX.Element;
24
- export {};
@@ -1,71 +0,0 @@
1
- "use strict";
2
- /**
3
- * My Roles Page for @payez/next-mvp
4
- *
5
- * User view of their assigned roles (/account/roles).
6
- * Shows roles from both IDP and app sources with expandable permissions.
7
- * Read-only - users cannot self-assign roles.
8
- *
9
- * @see docs/specs/ROLES_MANAGEMENT_SPEC.md
10
- */
11
- 'use client';
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.default = MyRolesPage;
14
- const jsx_runtime_1 = require("react/jsx-runtime");
15
- const react_1 = require("react");
16
- const useTheme_1 = require("../../theme/useTheme");
17
- const components_1 = require("./components");
18
- function MyRolesPage({ initialData, rolesEndpoint = '/api/account/my-roles', }) {
19
- const layout = (0, useTheme_1.useLayout)();
20
- const colors = (0, useTheme_1.useColors)();
21
- // Determine dark mode
22
- const isDark = colors?.background?.includes('slate-9') ||
23
- colors?.background?.includes('gray-9') ||
24
- colors?.card?.includes('slate-8');
25
- // State
26
- const [data, setData] = (0, react_1.useState)(initialData || null);
27
- const [loading, setLoading] = (0, react_1.useState)(!initialData);
28
- const [error, setError] = (0, react_1.useState)(null);
29
- // Theme colors
30
- const bgColor = isDark ? 'bg-slate-900' : 'bg-gray-50';
31
- const cardBg = isDark ? 'bg-slate-800' : 'bg-white';
32
- const borderColor = isDark ? 'border-slate-700' : 'border-gray-200';
33
- const textPrimary = isDark ? 'text-white' : 'text-gray-900';
34
- const textMuted = isDark ? 'text-slate-400' : 'text-gray-500';
35
- // Fetch roles
36
- const fetchRoles = (0, react_1.useCallback)(async () => {
37
- try {
38
- setLoading(true);
39
- setError(null);
40
- const response = await fetch(rolesEndpoint, { credentials: 'include' });
41
- if (!response.ok) {
42
- throw new Error('Failed to load roles');
43
- }
44
- const result = await response.json();
45
- setData(result);
46
- }
47
- catch (err) {
48
- setError(err instanceof Error ? err.message : 'Failed to load roles');
49
- }
50
- finally {
51
- setLoading(false);
52
- }
53
- }, [rolesEndpoint]);
54
- (0, react_1.useEffect)(() => {
55
- if (!initialData) {
56
- fetchRoles();
57
- }
58
- }, [initialData, fetchRoles]);
59
- // Loading state
60
- if (loading) {
61
- return ((0, jsx_runtime_1.jsx)("div", { className: `min-h-screen ${bgColor} flex items-center justify-center`, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center space-y-4", children: [(0, jsx_runtime_1.jsxs)("svg", { className: "animate-spin h-8 w-8 text-blue-500", viewBox: "0 0 24 24", fill: "none", children: [(0, jsx_runtime_1.jsx)("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), (0, jsx_runtime_1.jsx)("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z" })] }), (0, jsx_runtime_1.jsx)("p", { className: textMuted, children: "Loading roles..." })] }) }));
62
- }
63
- // Error state
64
- if (error) {
65
- return ((0, jsx_runtime_1.jsx)("div", { className: `min-h-screen ${bgColor} flex items-center justify-center`, children: (0, jsx_runtime_1.jsxs)("div", { className: `${cardBg} border ${borderColor} rounded-lg p-8 text-center max-w-md`, children: [(0, jsx_runtime_1.jsx)("svg", { className: "w-12 h-12 text-red-500 mx-auto mb-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }), (0, jsx_runtime_1.jsx)("h2", { className: `text-lg font-semibold ${textPrimary} mb-2`, children: "Failed to Load Roles" }), (0, jsx_runtime_1.jsx)("p", { className: `${textMuted} mb-4`, children: error }), (0, jsx_runtime_1.jsx)("button", { onClick: fetchRoles, className: "px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700", children: "Try Again" })] }) }));
66
- }
67
- const idpRoles = data?.idp_roles || [];
68
- const appRoles = data?.app_roles || [];
69
- const totalRoles = idpRoles.length + appRoles.length;
70
- return ((0, jsx_runtime_1.jsx)("div", { className: `min-h-screen ${bgColor}`, children: (0, jsx_runtime_1.jsxs)("div", { className: `max-w-2xl mx-auto ${layout?.padding || 'p-6'}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mb-6", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h1", { className: `text-3xl font-bold ${textPrimary}`, children: "My Roles" }), totalRoles > 0 && ((0, jsx_runtime_1.jsxs)("p", { className: `mt-1 ${textMuted}`, children: ["You have ", totalRoles, " role", totalRoles !== 1 ? 's' : '', " across ", data?.summary?.sources?.length || 0, " source", (data?.summary?.sources?.length || 0) !== 1 ? 's' : '', "."] }))] }), (0, jsx_runtime_1.jsx)("a", { href: "/account/profile", className: `text-sm hover:underline ${textMuted}`, children: "Back to Profile" })] }), totalRoles === 0 && ((0, jsx_runtime_1.jsxs)("div", { className: `${cardBg} border ${borderColor} rounded-lg p-8 text-center`, children: [(0, jsx_runtime_1.jsx)("svg", { className: `w-12 h-12 mx-auto mb-4 ${textMuted}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" }) }), (0, jsx_runtime_1.jsx)("h2", { className: `text-lg font-semibold ${textPrimary} mb-2`, children: "No Roles Assigned" }), (0, jsx_runtime_1.jsx)("p", { className: textMuted, children: "You don't have any roles assigned yet. Contact your administrator for access." })] })), idpRoles.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "mb-6", children: [(0, jsx_runtime_1.jsx)(components_1.RoleSourceHeader, { source: "idp", count: idpRoles.length, isDark: isDark }), (0, jsx_runtime_1.jsx)("div", { className: "mt-3 space-y-3", children: idpRoles.map((role) => ((0, jsx_runtime_1.jsx)(components_1.RoleCard, { role: role, source: "idp", isDark: isDark }, role.role_name))) })] })), appRoles.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "mb-6", children: [(0, jsx_runtime_1.jsx)(components_1.RoleSourceHeader, { source: "app", count: appRoles.length, isDark: isDark }), (0, jsx_runtime_1.jsx)("div", { className: "mt-3 space-y-3", children: appRoles.map((role) => ((0, jsx_runtime_1.jsx)(components_1.RoleCard, { role: role, source: "app", isDark: isDark }, role.role_name))) })] })), totalRoles > 0 && ((0, jsx_runtime_1.jsx)("div", { className: `border-t ${borderColor} pt-4 mt-6`, children: (0, jsx_runtime_1.jsx)("p", { className: `text-sm ${textMuted}`, children: "Need additional access? Contact your administrator." }) })), (0, jsx_runtime_1.jsxs)("div", { className: "mt-6 flex justify-between", children: [(0, jsx_runtime_1.jsx)("a", { href: "/account/security", className: `text-sm hover:underline ${textMuted}`, children: "\u2190 Security Settings" }), (0, jsx_runtime_1.jsx)("a", { href: "/account/settings", className: `text-sm hover:underline ${textMuted}`, children: "Settings \u2192" })] })] }) }));
71
- }
@@ -1,63 +0,0 @@
1
- /**
2
- * Shared Role Components for @payez/next-mvp
3
- *
4
- * Components for displaying roles and permissions:
5
- * - RoleBadge: Small badge showing role name and source
6
- * - RoleCard: Expandable card showing role details and permissions
7
- * - PermissionsList: Grouped list of permissions
8
- *
9
- * @see docs/specs/ROLES_MANAGEMENT_SPEC.md
10
- */
11
- export interface Permission {
12
- type: 'page' | 'feature';
13
- pattern?: string;
14
- name?: string;
15
- display: string;
16
- }
17
- export interface Role {
18
- role_name: string;
19
- display_name?: string;
20
- description?: string;
21
- assigned_at?: string;
22
- status?: 'active' | 'pending' | 'expired';
23
- permissions?: Permission[];
24
- user_count?: number;
25
- permission_count?: number;
26
- is_system_role?: boolean;
27
- }
28
- export type RoleSource = 'idp' | 'app';
29
- /**
30
- * RoleBadge - Small badge showing role name and source
31
- */
32
- export declare function RoleBadge({ roleName, source, size, isDark, }: {
33
- roleName: string;
34
- source: RoleSource;
35
- size?: 'sm' | 'md';
36
- isDark?: boolean;
37
- }): import("react/jsx-runtime").JSX.Element;
38
- /**
39
- * PermissionsList - Grouped list of permissions
40
- */
41
- export declare function PermissionsList({ permissions, grouped, isDark, }: {
42
- permissions: Permission[];
43
- grouped?: boolean;
44
- isDark?: boolean;
45
- }): import("react/jsx-runtime").JSX.Element;
46
- /**
47
- * RoleCard - Expandable card showing role details and permissions
48
- */
49
- export declare function RoleCard({ role, source, showPermissions, defaultExpanded, isDark, }: {
50
- role: Role;
51
- source: RoleSource;
52
- showPermissions?: boolean;
53
- defaultExpanded?: boolean;
54
- isDark?: boolean;
55
- }): import("react/jsx-runtime").JSX.Element;
56
- /**
57
- * RoleSourceHeader - Section header for role groups
58
- */
59
- export declare function RoleSourceHeader({ source, count, isDark, }: {
60
- source: RoleSource;
61
- count?: number;
62
- isDark?: boolean;
63
- }): import("react/jsx-runtime").JSX.Element;
@@ -1,108 +0,0 @@
1
- "use strict";
2
- /**
3
- * Shared Role Components for @payez/next-mvp
4
- *
5
- * Components for displaying roles and permissions:
6
- * - RoleBadge: Small badge showing role name and source
7
- * - RoleCard: Expandable card showing role details and permissions
8
- * - PermissionsList: Grouped list of permissions
9
- *
10
- * @see docs/specs/ROLES_MANAGEMENT_SPEC.md
11
- */
12
- 'use client';
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.RoleBadge = RoleBadge;
15
- exports.PermissionsList = PermissionsList;
16
- exports.RoleCard = RoleCard;
17
- exports.RoleSourceHeader = RoleSourceHeader;
18
- const jsx_runtime_1 = require("react/jsx-runtime");
19
- const react_1 = require("react");
20
- // Format date helper
21
- function formatDate(dateString) {
22
- if (!dateString)
23
- return '';
24
- try {
25
- return new Date(dateString).toLocaleDateString('en-US', {
26
- year: 'numeric',
27
- month: 'long',
28
- day: 'numeric',
29
- });
30
- }
31
- catch {
32
- return dateString;
33
- }
34
- }
35
- // Role icon based on name
36
- function getRoleIcon(roleName) {
37
- if (roleName.includes('admin'))
38
- return 'shield';
39
- if (roleName.includes('editor'))
40
- return 'edit';
41
- if (roleName.includes('viewer'))
42
- return 'eye';
43
- return 'user';
44
- }
45
- /**
46
- * RoleBadge - Small badge showing role name and source
47
- */
48
- function RoleBadge({ roleName, source, size = 'md', isDark = true, }) {
49
- const sizeClasses = size === 'sm' ? 'text-xs px-2 py-0.5' : 'text-sm px-2.5 py-1';
50
- const sourceColor = source === 'idp'
51
- ? isDark ? 'bg-purple-900/30 text-purple-400 border-purple-500/30' : 'bg-purple-100 text-purple-700 border-purple-300'
52
- : isDark ? 'bg-blue-900/30 text-blue-400 border-blue-500/30' : 'bg-blue-100 text-blue-700 border-blue-300';
53
- return ((0, jsx_runtime_1.jsxs)("span", { className: `inline-flex items-center gap-1 rounded-full border ${sizeClasses} ${sourceColor}`, children: [source === 'idp' && ((0, jsx_runtime_1.jsx)("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" }) })), roleName] }));
54
- }
55
- /**
56
- * PermissionsList - Grouped list of permissions
57
- */
58
- function PermissionsList({ permissions, grouped = true, isDark = true, }) {
59
- const textPrimary = isDark ? 'text-white' : 'text-gray-900';
60
- const textMuted = isDark ? 'text-slate-400' : 'text-gray-500';
61
- const borderColor = isDark ? 'border-slate-600' : 'border-gray-300';
62
- if (!permissions || permissions.length === 0) {
63
- return (0, jsx_runtime_1.jsx)("p", { className: `text-sm ${textMuted}`, children: "No specific permissions defined" });
64
- }
65
- if (!grouped) {
66
- return ((0, jsx_runtime_1.jsx)("ul", { className: "space-y-1", children: permissions.map((perm, idx) => ((0, jsx_runtime_1.jsxs)("li", { className: `text-sm ${textMuted} flex items-center gap-2`, children: [(0, jsx_runtime_1.jsx)("span", { className: "text-green-400", children: "+" }), perm.display] }, idx))) }));
67
- }
68
- // Group by type
69
- const pagePerms = permissions.filter((p) => p.type === 'page');
70
- const featurePerms = permissions.filter((p) => p.type === 'feature');
71
- return ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-3", children: [pagePerms.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { className: `text-xs font-medium uppercase tracking-wider mb-1 ${textMuted}`, children: "Page Access" }), (0, jsx_runtime_1.jsx)("ul", { className: `pl-4 border-l-2 ${borderColor} space-y-1`, children: pagePerms.map((perm, idx) => ((0, jsx_runtime_1.jsx)("li", { className: `text-sm ${textPrimary}`, children: perm.display }, idx))) })] })), featurePerms.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { className: `text-xs font-medium uppercase tracking-wider mb-1 ${textMuted}`, children: "Features" }), (0, jsx_runtime_1.jsx)("ul", { className: `pl-4 border-l-2 ${borderColor} space-y-1`, children: featurePerms.map((perm, idx) => ((0, jsx_runtime_1.jsx)("li", { className: `text-sm ${textPrimary}`, children: perm.display }, idx))) })] }))] }));
72
- }
73
- /**
74
- * RoleCard - Expandable card showing role details and permissions
75
- */
76
- function RoleCard({ role, source, showPermissions = true, defaultExpanded = false, isDark = true, }) {
77
- const [expanded, setExpanded] = (0, react_1.useState)(defaultExpanded);
78
- const cardBg = isDark ? 'bg-slate-800' : 'bg-white';
79
- const borderColor = isDark ? 'border-slate-700' : 'border-gray-200';
80
- const textPrimary = isDark ? 'text-white' : 'text-gray-900';
81
- const textMuted = isDark ? 'text-slate-400' : 'text-gray-500';
82
- const hoverBg = isDark ? 'hover:bg-slate-700/50' : 'hover:bg-gray-50';
83
- const statusColors = {
84
- active: isDark ? 'text-green-400' : 'text-green-600',
85
- pending: isDark ? 'text-yellow-400' : 'text-yellow-600',
86
- expired: isDark ? 'text-red-400' : 'text-red-600',
87
- };
88
- const iconMap = {
89
- shield: ((0, jsx_runtime_1.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" }) })),
90
- edit: ((0, jsx_runtime_1.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" }) })),
91
- eye: ((0, jsx_runtime_1.jsxs)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: [(0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" }), (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" })] })),
92
- user: ((0, jsx_runtime_1.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" }) })),
93
- };
94
- const icon = iconMap[getRoleIcon(role.role_name)] || iconMap.user;
95
- return ((0, jsx_runtime_1.jsxs)("div", { className: `rounded-lg border ${borderColor} ${cardBg} overflow-hidden`, children: [(0, jsx_runtime_1.jsx)("div", { className: `p-4 ${showPermissions ? `cursor-pointer ${hoverBg}` : ''}`, onClick: () => showPermissions && setExpanded(!expanded), children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: `p-2 rounded-lg ${isDark ? 'bg-slate-700' : 'bg-gray-100'} ${textMuted}`, children: icon }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("h3", { className: `font-semibold ${textPrimary}`, children: role.display_name || role.role_name }), source === 'idp' && ((0, jsx_runtime_1.jsx)("svg", { className: `w-4 h-4 ${textMuted}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" }) }))] }), (0, jsx_runtime_1.jsx)("p", { className: `text-sm ${textMuted}`, children: role.description || 'No description' }), role.assigned_at && ((0, jsx_runtime_1.jsxs)("p", { className: `text-xs ${textMuted} mt-1`, children: ["Assigned: ", formatDate(role.assigned_at)] }))] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [role.status && ((0, jsx_runtime_1.jsxs)("span", { className: `flex items-center gap-1 text-sm ${statusColors[role.status]}`, children: [(0, jsx_runtime_1.jsx)("span", { className: "w-2 h-2 rounded-full bg-current" }), role.status.charAt(0).toUpperCase() + role.status.slice(1)] })), showPermissions && ((0, jsx_runtime_1.jsx)("svg", { className: `w-5 h-5 transition-transform ${expanded ? 'rotate-180' : ''} ${textMuted}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) }))] })] }) }), showPermissions && expanded && role.permissions && ((0, jsx_runtime_1.jsx)("div", { className: `px-4 pb-4 pt-2 border-t ${borderColor}`, children: (0, jsx_runtime_1.jsx)(PermissionsList, { permissions: role.permissions, isDark: isDark }) }))] }));
96
- }
97
- /**
98
- * RoleSourceHeader - Section header for role groups
99
- */
100
- function RoleSourceHeader({ source, count, isDark = true, }) {
101
- const bgColor = isDark ? 'bg-slate-700' : 'bg-gray-100';
102
- const textColor = isDark ? 'text-slate-300' : 'text-gray-700';
103
- const labels = {
104
- idp: 'Identity Roles (from PayEz IDP)',
105
- app: 'Application Roles',
106
- };
107
- return ((0, jsx_runtime_1.jsxs)("div", { className: `${bgColor} px-4 py-2 rounded-lg flex items-center justify-between`, children: [(0, jsx_runtime_1.jsx)("span", { className: `text-sm font-medium ${textColor}`, children: labels[source] }), count !== undefined && ((0, jsx_runtime_1.jsxs)("span", { className: `text-xs ${isDark ? 'text-slate-400' : 'text-gray-500'}`, children: [count, " role", count !== 1 ? 's' : ''] }))] }));
108
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Roles Page exports
3
- *
4
- * - MyRolesPage: User view of their roles (/account/roles)
5
- * - Components: RoleCard, RoleBadge, PermissionsList, RoleSourceHeader
6
- */
7
- export { default as MyRolesPage } from './MyRolesPage';
8
- export { RoleCard, RoleBadge, PermissionsList, RoleSourceHeader, type Role, type Permission, type RoleSource, } from './components';
@@ -1,19 +0,0 @@
1
- "use strict";
2
- /**
3
- * Roles Page exports
4
- *
5
- * - MyRolesPage: User view of their roles (/account/roles)
6
- * - Components: RoleCard, RoleBadge, PermissionsList, RoleSourceHeader
7
- */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RoleSourceHeader = exports.PermissionsList = exports.RoleBadge = exports.RoleCard = exports.MyRolesPage = void 0;
13
- var MyRolesPage_1 = require("./MyRolesPage");
14
- Object.defineProperty(exports, "MyRolesPage", { enumerable: true, get: function () { return __importDefault(MyRolesPage_1).default; } });
15
- var components_1 = require("./components");
16
- Object.defineProperty(exports, "RoleCard", { enumerable: true, get: function () { return components_1.RoleCard; } });
17
- Object.defineProperty(exports, "RoleBadge", { enumerable: true, get: function () { return components_1.RoleBadge; } });
18
- Object.defineProperty(exports, "PermissionsList", { enumerable: true, get: function () { return components_1.PermissionsList; } });
19
- Object.defineProperty(exports, "RoleSourceHeader", { enumerable: true, get: function () { return components_1.RoleSourceHeader; } });
@@ -1,14 +0,0 @@
1
- /**
2
- * Enhanced Security Page for @payez/next-mvp
3
- *
4
- * Implements BAPert's Member Self-Service spec with:
5
- * - Password section with change form
6
- * - Two-factor authentication management
7
- * - Connected OAuth accounts
8
- * - Active sessions list
9
- * - Recent activity log
10
- * - Danger zone (data export, account deletion)
11
- *
12
- * @see docs/specs/MEMBER_SELF_SERVICE_SPEC.md
13
- */
14
- export default function EnhancedSecurityPage(): import("react/jsx-runtime").JSX.Element;