@alepha/ui 0.18.2 → 0.19.0

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 (257) hide show
  1. package/dist/admin/{AdminApiKeys-BJhIwfD6.js → AdminApiKeys-Bt1PjO6o.js} +3 -4
  2. package/dist/admin/{AdminApiKeys-BJhIwfD6.js.map → AdminApiKeys-Bt1PjO6o.js.map} +1 -1
  3. package/dist/admin/{AdminAudits-DzD_4cDt.js → AdminAudits-C7c1CN4c.js} +3 -4
  4. package/dist/admin/{AdminAudits-DzD_4cDt.js.map → AdminAudits-C7c1CN4c.js.map} +1 -1
  5. package/dist/admin/{AdminDashboard-C92tIc6x.js → AdminDashboard-C3RXpTp6.js} +3 -4
  6. package/dist/admin/{AdminDashboard-C92tIc6x.js.map → AdminDashboard-C3RXpTp6.js.map} +1 -1
  7. package/dist/admin/{AdminFiles-DLpfhBkf.js → AdminFiles-31ivR6Wq.js} +3 -4
  8. package/dist/admin/{AdminFiles-DLpfhBkf.js.map → AdminFiles-31ivR6Wq.js.map} +1 -1
  9. package/dist/admin/{AdminJobDashboard-KIOkeMgE.js → AdminJobDashboard-BABLe7hL.js} +73 -25
  10. package/dist/admin/AdminJobDashboard-BABLe7hL.js.map +1 -0
  11. package/dist/admin/{AdminJobExecutions-D0Yo_PU0.js → AdminJobExecutions-D-G8RIlr.js} +3 -4
  12. package/dist/admin/{AdminJobExecutions-D0Yo_PU0.js.map → AdminJobExecutions-D-G8RIlr.js.map} +1 -1
  13. package/dist/admin/{AdminJobRegistry-PFajqaGK.js → AdminJobRegistry-oIS3K9NX.js} +3 -4
  14. package/dist/admin/{AdminJobRegistry-PFajqaGK.js.map → AdminJobRegistry-oIS3K9NX.js.map} +1 -1
  15. package/dist/admin/{AdminLayout-B1DXZHDn.js → AdminLayout-BmZ9mtXh.js} +8 -25
  16. package/dist/admin/AdminLayout-BmZ9mtXh.js.map +1 -0
  17. package/dist/admin/AdminNotifications-DHdzksww.js +541 -0
  18. package/dist/admin/AdminNotifications-DHdzksww.js.map +1 -0
  19. package/dist/admin/{AdminParameters-BspPeqp_.js → AdminParameters-CyZQSXnN.js} +118 -112
  20. package/dist/admin/AdminParameters-CyZQSXnN.js.map +1 -0
  21. package/dist/admin/{AdminSessions-BnH5CZQl.js → AdminSessions--xwELDSO.js} +3 -4
  22. package/dist/admin/{AdminSessions-BnH5CZQl.js.map → AdminSessions--xwELDSO.js.map} +1 -1
  23. package/dist/admin/{AdminUserLayout-DUbC6-BI.js → AdminUserLayout-DvBTG5gd.js} +82 -115
  24. package/dist/admin/AdminUserLayout-DvBTG5gd.js.map +1 -0
  25. package/dist/admin/{AdminUserProfile-DuTUnjdG.js → AdminUserProfile-CzsPBl6Z.js} +7 -6
  26. package/dist/admin/AdminUserProfile-CzsPBl6Z.js.map +1 -0
  27. package/dist/admin/{AdminUserSessions-DvZdAGpL.js → AdminUserSessions-C-aUnhVN.js} +3 -4
  28. package/dist/admin/{AdminUserSessions-DvZdAGpL.js.map → AdminUserSessions-C-aUnhVN.js.map} +1 -1
  29. package/dist/admin/{AdminUsers-CR9z0g_5.js → AdminUsers-BYwei5sj.js} +4 -4
  30. package/dist/admin/AdminUsers-BYwei5sj.js.map +1 -0
  31. package/dist/admin/{AuthLayout-DsUfp9RG.js → AuthLayout-CkPGLJku.js} +3 -4
  32. package/dist/admin/{AuthLayout-DsUfp9RG.js.map → AuthLayout-CkPGLJku.js.map} +1 -1
  33. package/dist/{demo/IconGoogle-CSQLPYwX.js → admin/IconGoogle-8Nkx6yax.js} +2 -4
  34. package/dist/admin/{IconGoogle-Ch1m3Uzl.js.map → IconGoogle-8Nkx6yax.js.map} +1 -1
  35. package/dist/admin/Login-DSBqNsZc.js +274 -0
  36. package/dist/admin/Login-DSBqNsZc.js.map +1 -0
  37. package/dist/admin/{Profile-B2EcIDB9.js → Profile-CDRjJo0P.js} +31 -29
  38. package/dist/admin/Profile-CDRjJo0P.js.map +1 -0
  39. package/dist/admin/{Register-Z3fxRbUF.js → Register-4QGFOnfh.js} +201 -146
  40. package/dist/admin/Register-4QGFOnfh.js.map +1 -0
  41. package/dist/admin/{ResetPassword-_Y1qTTKh.js → ResetPassword-Gxc9L_mY.js} +9 -10
  42. package/dist/admin/ResetPassword-Gxc9L_mY.js.map +1 -0
  43. package/dist/admin/{VerifyEmail-Bg22bwcC.js → VerifyEmail-D7G5NnaN.js} +25 -11
  44. package/dist/admin/VerifyEmail-D7G5NnaN.js.map +1 -0
  45. package/dist/admin/adminUserAtom-DCi4wf-v.js +11 -0
  46. package/dist/admin/adminUserAtom-DCi4wf-v.js.map +1 -0
  47. package/dist/admin/{core-BVO_TQxb.js → core-D1AbU50V.js} +662 -570
  48. package/dist/admin/core-D1AbU50V.js.map +1 -0
  49. package/dist/admin/index.d.ts +141 -53
  50. package/dist/admin/index.d.ts.map +1 -1
  51. package/dist/admin/index.js +67 -49
  52. package/dist/admin/index.js.map +1 -1
  53. package/dist/admin/rolldown-runtime-CiIaOW0V.js +13 -0
  54. package/dist/{demo/AuthLayout-DN-ClJQk.js → auth/AuthLayout-CfRKcTqP.js} +3 -4
  55. package/dist/auth/{AuthLayout-C161NeF6.js.map → AuthLayout-CfRKcTqP.js.map} +1 -1
  56. package/dist/{admin/IconGoogle-Ch1m3Uzl.js → auth/IconGoogle-8Nkx6yax.js} +2 -4
  57. package/dist/auth/{IconGoogle-Ch1m3Uzl.js.map → IconGoogle-8Nkx6yax.js.map} +1 -1
  58. package/dist/auth/Login-DJyweoPS.js +274 -0
  59. package/dist/auth/Login-DJyweoPS.js.map +1 -0
  60. package/dist/auth/{Profile-BMpXJ0oi.js → Profile-Cy93pNTw.js} +31 -29
  61. package/dist/auth/Profile-Cy93pNTw.js.map +1 -0
  62. package/dist/auth/{Register-2gx8qll-.js → Register-CSqzzitW.js} +201 -146
  63. package/dist/auth/Register-CSqzzitW.js.map +1 -0
  64. package/dist/{demo/ResetPassword-CAPj8MO3.js → auth/ResetPassword-B61QPlQi.js} +9 -10
  65. package/dist/auth/ResetPassword-B61QPlQi.js.map +1 -0
  66. package/dist/{demo/VerifyEmail-DFmdCdYs.js → auth/VerifyEmail-CqBJ11id.js} +25 -11
  67. package/dist/auth/VerifyEmail-CqBJ11id.js.map +1 -0
  68. package/dist/auth/{core-DyfeVr5c.js → core-C6D3pazL.js} +403 -343
  69. package/dist/auth/core-C6D3pazL.js.map +1 -0
  70. package/dist/auth/index.d.ts +93 -54
  71. package/dist/auth/index.d.ts.map +1 -1
  72. package/dist/auth/index.js +30 -31
  73. package/dist/auth/index.js.map +1 -1
  74. package/dist/auth/rolldown-runtime-CiIaOW0V.js +13 -0
  75. package/dist/core/index.d.ts +123 -62
  76. package/dist/core/index.d.ts.map +1 -1
  77. package/dist/core/index.js +878 -776
  78. package/dist/core/index.js.map +1 -1
  79. package/dist/{auth/AuthLayout-C161NeF6.js → demo/AuthLayout-Dq5tSLSc.js} +3 -4
  80. package/dist/demo/{AuthLayout-DN-ClJQk.js.map → AuthLayout-Dq5tSLSc.js.map} +1 -1
  81. package/dist/demo/DemoButton-_Ws2w-J0.js +181 -0
  82. package/dist/demo/DemoButton-_Ws2w-J0.js.map +1 -0
  83. package/dist/demo/DemoControlSelect-ChP4ZOpQ.js +304 -0
  84. package/dist/demo/DemoControlSelect-ChP4ZOpQ.js.map +1 -0
  85. package/dist/demo/DemoDataTable-Hwf_UUni.js +361 -0
  86. package/dist/demo/DemoDataTable-Hwf_UUni.js.map +1 -0
  87. package/dist/demo/{DemoDialog-DW8QEvD1.js → DemoDialog-B01OMVRd.js} +3 -4
  88. package/dist/demo/{DemoDialog-DW8QEvD1.js.map → DemoDialog-B01OMVRd.js.map} +1 -1
  89. package/dist/demo/{DemoFlex-CAhLUanT.js → DemoFlex-870PEl0V.js} +4 -5
  90. package/dist/demo/{DemoFlex-CAhLUanT.js.map → DemoFlex-870PEl0V.js.map} +1 -1
  91. package/dist/demo/{DemoHeading-yIFmNjHB.js → DemoHeading-C1YR27fz.js} +4 -5
  92. package/dist/demo/{DemoHeading-yIFmNjHB.js.map → DemoHeading-C1YR27fz.js.map} +1 -1
  93. package/dist/demo/{DemoHome-BSGuBHus.js → DemoHome-DRbL2eGf.js} +4 -5
  94. package/dist/demo/{DemoHome-BSGuBHus.js.map → DemoHome-DRbL2eGf.js.map} +1 -1
  95. package/dist/demo/{DemoJsonViewer-DsA2IpgV.js → DemoJsonViewer-DoABiqBW.js} +4 -5
  96. package/dist/demo/{DemoJsonViewer-DsA2IpgV.js.map → DemoJsonViewer-DoABiqBW.js.map} +1 -1
  97. package/dist/demo/{DemoLayout-Cy6xjn6P.js → DemoLayout-CN_PDCX2.js} +16 -8
  98. package/dist/demo/DemoLayout-CN_PDCX2.js.map +1 -0
  99. package/dist/demo/{DemoLogin-vqxgTu4P.js → DemoLogin-B5x-ug3Q.js} +51 -35
  100. package/dist/demo/DemoLogin-B5x-ug3Q.js.map +1 -0
  101. package/dist/demo/{DemoRegister-YHPvPg77.js → DemoRegister-Q6sg2xuV.js} +51 -53
  102. package/dist/demo/DemoRegister-Q6sg2xuV.js.map +1 -0
  103. package/dist/demo/{DemoResetPassword-mOW18Zlm.js → DemoResetPassword-DrqZfmEw.js} +14 -19
  104. package/dist/demo/DemoResetPassword-DrqZfmEw.js.map +1 -0
  105. package/dist/demo/{DemoSidebar-od7aLjP_.js → DemoSidebar-CfKS6w1o.js} +4 -5
  106. package/dist/demo/{DemoSidebar-od7aLjP_.js.map → DemoSidebar-CfKS6w1o.js.map} +1 -1
  107. package/dist/demo/{DemoText-DU3JeRS0.js → DemoText-pT6Gi5b5.js} +4 -5
  108. package/dist/demo/{DemoText-DU3JeRS0.js.map → DemoText-pT6Gi5b5.js.map} +1 -1
  109. package/dist/demo/{DemoToast-CUJEiPRa.js → DemoToast-I13NBzQQ.js} +3 -4
  110. package/dist/demo/{DemoToast-CUJEiPRa.js.map → DemoToast-I13NBzQQ.js.map} +1 -1
  111. package/dist/demo/{DemoTypeForm-C1dNkahD.js → DemoTypeForm-BqzcrtvN.js} +9 -6
  112. package/dist/demo/DemoTypeForm-BqzcrtvN.js.map +1 -0
  113. package/dist/demo/DemoVerifyEmail-HwD8xfQw.js +33 -0
  114. package/dist/demo/DemoVerifyEmail-HwD8xfQw.js.map +1 -0
  115. package/dist/{auth/IconGoogle-Ch1m3Uzl.js → demo/IconGoogle-CwQy4G9y.js} +2 -4
  116. package/dist/demo/{IconGoogle-CSQLPYwX.js.map → IconGoogle-CwQy4G9y.js.map} +1 -1
  117. package/dist/demo/Login-CqG1iJbn.js +274 -0
  118. package/dist/demo/Login-CqG1iJbn.js.map +1 -0
  119. package/dist/demo/{Profile-BE_Y3co2.js → Profile-C0ojJCaG.js} +31 -29
  120. package/dist/demo/Profile-C0ojJCaG.js.map +1 -0
  121. package/dist/demo/{Register-fXHmBpr3.js → Register-KKZwr_lL.js} +201 -146
  122. package/dist/demo/Register-KKZwr_lL.js.map +1 -0
  123. package/dist/{auth/ResetPassword-DBxt9hKk.js → demo/ResetPassword-DMrLFEtr.js} +9 -10
  124. package/dist/demo/ResetPassword-DMrLFEtr.js.map +1 -0
  125. package/dist/demo/{Showcase-BtEU0pY9.js → Showcase-D49Wud2v.js} +65 -68
  126. package/dist/demo/Showcase-D49Wud2v.js.map +1 -0
  127. package/dist/{auth/VerifyEmail-Z80Ubajk.js → demo/VerifyEmail-BFCAFz6T.js} +25 -11
  128. package/dist/demo/VerifyEmail-BFCAFz6T.js.map +1 -0
  129. package/dist/demo/{auth-Djd7SKiw.js → auth-D9qTZzCa.js} +18 -35
  130. package/dist/demo/{auth-Djd7SKiw.js.map → auth-D9qTZzCa.js.map} +1 -1
  131. package/dist/demo/{core-B7LNjM78.js → core-DRtQklr3.js} +752 -647
  132. package/dist/demo/core-DRtQklr3.js.map +1 -0
  133. package/dist/demo/index.d.ts +1 -0
  134. package/dist/demo/index.d.ts.map +1 -1
  135. package/dist/demo/index.js +25 -22
  136. package/dist/demo/index.js.map +1 -1
  137. package/dist/demo/rolldown-runtime-CiIaOW0V.js +13 -0
  138. package/package.json +19 -19
  139. package/src/admin/AdminRouter.tsx +42 -2
  140. package/src/admin/atoms/adminUserAtom.ts +7 -0
  141. package/src/admin/components/AdminLayout.tsx +2 -14
  142. package/src/admin/components/jobs/AdminJobDashboard.tsx +51 -20
  143. package/src/admin/components/notifications/AdminNotifications.tsx +519 -0
  144. package/src/admin/components/parameters/ParameterDetails.tsx +12 -270
  145. package/src/admin/components/parameters/ParameterDetailsConfigForm.tsx +238 -0
  146. package/src/admin/components/parameters/ParameterDetailsLoading.tsx +24 -0
  147. package/src/admin/components/parameters/ParameterHistory.tsx +10 -11
  148. package/src/admin/components/parameters/ParameterTree.tsx +28 -184
  149. package/src/admin/components/parameters/ParameterTreeNode.tsx +151 -0
  150. package/src/admin/components/shared/AdminResourceHeader.tsx +2 -25
  151. package/src/admin/components/shared/AdminResourceHeaderMenuItem.tsx +37 -0
  152. package/src/admin/components/shared/AdminResourceTabs.tsx +2 -26
  153. package/src/admin/components/shared/AdminResourceTabsItem.tsx +36 -0
  154. package/src/admin/components/users/AdminUserLayout.tsx +84 -127
  155. package/src/admin/components/users/AdminUserProfile.tsx +5 -2
  156. package/src/admin/components/users/AdminUsers.tsx +1 -1
  157. package/src/auth/components/Login.tsx +188 -121
  158. package/src/auth/components/Profile.tsx +1 -22
  159. package/src/auth/components/ProfileField.tsx +39 -0
  160. package/src/auth/components/Register.tsx +215 -158
  161. package/src/auth/components/ResetPassword.tsx +7 -11
  162. package/src/auth/components/VerifyEmail.tsx +35 -10
  163. package/src/auth/components/buttons/UserButton.tsx +19 -21
  164. package/src/auth/index.ts +1 -0
  165. package/src/core/components/Flex.tsx +34 -0
  166. package/src/core/components/buttons/ActionButton.tsx +105 -78
  167. package/src/core/components/data/DetailDrawer.tsx +102 -96
  168. package/src/core/components/data/DetailList.tsx +2 -1
  169. package/src/core/components/dialogs/PromptDialog.tsx +1 -1
  170. package/src/core/components/layout/Breadcrumb.tsx +4 -7
  171. package/src/core/components/layout/DashboardShell.tsx +18 -4
  172. package/src/core/components/layout/Sidebar.tsx +16 -241
  173. package/src/core/components/layout/SidebarCollapsedItem.tsx +91 -0
  174. package/src/core/components/layout/SidebarItem.tsx +146 -0
  175. package/src/core/components/layout/index.ts +3 -1
  176. package/src/core/form/components/Control.tsx +31 -29
  177. package/src/core/form/components/ControlArray.tsx +13 -39
  178. package/src/core/form/components/ControlDate.tsx +10 -21
  179. package/src/core/form/components/ControlNumber.tsx +4 -33
  180. package/src/core/form/components/ControlQueryBuilder.tsx +12 -175
  181. package/src/core/form/components/ControlQueryBuilderHelp.tsx +165 -0
  182. package/src/core/form/components/ControlSelect.browser.spec.tsx +343 -0
  183. package/src/core/form/components/ControlSelect.tsx +294 -92
  184. package/src/core/form/components/TypeForm.browser.spec.tsx +3 -3
  185. package/src/core/form/components/TypeForm.tsx +5 -2
  186. package/src/core/form/index.ts +8 -1
  187. package/src/core/form/utils/parseInput.ts +7 -3
  188. package/src/core/index.ts +3 -1
  189. package/src/core/json/components/JsonViewer.tsx +103 -319
  190. package/src/core/json/components/JsonViewerCopyButton.tsx +46 -0
  191. package/src/core/json/components/JsonViewerRowNode.tsx +120 -0
  192. package/src/core/json/components/JsonViewerShared.ts +76 -0
  193. package/src/core/services/DialogService.tsx +2 -2
  194. package/src/core/styles.css +13 -2
  195. package/src/core/table/components/ColumnPicker.tsx +3 -3
  196. package/src/core/table/components/DataTable.tsx +88 -29
  197. package/src/core/table/components/DataTableFilters.tsx +6 -11
  198. package/src/core/table/components/DataTablePagination.tsx +9 -3
  199. package/src/core/table/components/DataTableToolbar.tsx +7 -3
  200. package/src/core/table/components/FilterPicker.tsx +3 -3
  201. package/src/core/table/interfaces/types.ts +29 -0
  202. package/src/core/utils/icons.tsx +2 -2
  203. package/src/demo/DemoRouter.ts +8 -1
  204. package/src/demo/components/DemoLayout.tsx +12 -2
  205. package/src/demo/components/auth/DemoLogin.tsx +35 -28
  206. package/src/demo/components/auth/DemoRegister.tsx +35 -49
  207. package/src/demo/components/auth/DemoResetPassword.tsx +5 -9
  208. package/src/demo/components/auth/DemoVerifyEmail.tsx +7 -6
  209. package/src/demo/components/core/DemoButton.tsx +123 -103
  210. package/src/demo/components/core/DemoControlSelect.tsx +325 -0
  211. package/src/demo/components/core/DemoDataTable.tsx +255 -237
  212. package/src/demo/components/core/DemoTypeForm.tsx +7 -2
  213. package/src/demo/components/shared/MacWindow.tsx +5 -11
  214. package/src/demo/components/shared/Showcase.tsx +28 -42
  215. package/dist/admin/AdminJobDashboard-KIOkeMgE.js.map +0 -1
  216. package/dist/admin/AdminLayout-B1DXZHDn.js.map +0 -1
  217. package/dist/admin/AdminParameters-BspPeqp_.js.map +0 -1
  218. package/dist/admin/AdminUserLayout-DUbC6-BI.js.map +0 -1
  219. package/dist/admin/AdminUserProfile-DuTUnjdG.js.map +0 -1
  220. package/dist/admin/AdminUsers-CR9z0g_5.js.map +0 -1
  221. package/dist/admin/Login-DHbYJKwg.js +0 -219
  222. package/dist/admin/Login-DHbYJKwg.js.map +0 -1
  223. package/dist/admin/Profile-B2EcIDB9.js.map +0 -1
  224. package/dist/admin/Register-Z3fxRbUF.js.map +0 -1
  225. package/dist/admin/ResetPassword-_Y1qTTKh.js.map +0 -1
  226. package/dist/admin/VerifyEmail-Bg22bwcC.js.map +0 -1
  227. package/dist/admin/core-BVO_TQxb.js.map +0 -1
  228. package/dist/admin/rolldown-runtime-CjeV3_4I.js +0 -18
  229. package/dist/auth/Login-C7jIqf00.js +0 -219
  230. package/dist/auth/Login-C7jIqf00.js.map +0 -1
  231. package/dist/auth/Profile-BMpXJ0oi.js.map +0 -1
  232. package/dist/auth/Register-2gx8qll-.js.map +0 -1
  233. package/dist/auth/ResetPassword-DBxt9hKk.js.map +0 -1
  234. package/dist/auth/VerifyEmail-Z80Ubajk.js.map +0 -1
  235. package/dist/auth/core-DyfeVr5c.js.map +0 -1
  236. package/dist/auth/rolldown-runtime-CjeV3_4I.js +0 -18
  237. package/dist/demo/DemoButton-CGUyR9eM.js +0 -178
  238. package/dist/demo/DemoButton-CGUyR9eM.js.map +0 -1
  239. package/dist/demo/DemoDataTable-QFG-xXSx.js +0 -358
  240. package/dist/demo/DemoDataTable-QFG-xXSx.js.map +0 -1
  241. package/dist/demo/DemoLayout-Cy6xjn6P.js.map +0 -1
  242. package/dist/demo/DemoLogin-vqxgTu4P.js.map +0 -1
  243. package/dist/demo/DemoRegister-YHPvPg77.js.map +0 -1
  244. package/dist/demo/DemoResetPassword-mOW18Zlm.js.map +0 -1
  245. package/dist/demo/DemoTypeForm-C1dNkahD.js.map +0 -1
  246. package/dist/demo/DemoVerifyEmail-D9EcXZ38.js +0 -30
  247. package/dist/demo/DemoVerifyEmail-D9EcXZ38.js.map +0 -1
  248. package/dist/demo/Login-CoYf_P_F.js +0 -219
  249. package/dist/demo/Login-CoYf_P_F.js.map +0 -1
  250. package/dist/demo/Profile-BE_Y3co2.js.map +0 -1
  251. package/dist/demo/Register-fXHmBpr3.js.map +0 -1
  252. package/dist/demo/ResetPassword-CAPj8MO3.js.map +0 -1
  253. package/dist/demo/Showcase-BtEU0pY9.js.map +0 -1
  254. package/dist/demo/VerifyEmail-DFmdCdYs.js.map +0 -1
  255. package/dist/demo/core-B7LNjM78.js.map +0 -1
  256. package/dist/demo/rolldown-runtime-CjeV3_4I.js +0 -18
  257. package/src/demo/styles.css +0 -0
@@ -1,19 +1,13 @@
1
1
  import * as alepha from "alepha";
2
- import { Alepha, Static } from "alepha";
2
+ import { Alepha, Async, Static } from "alepha";
3
3
  import { BaseInputField, FormModel } from "alepha/react/form";
4
- import "alepha/react/head";
5
- import "alepha/server/cookies";
6
4
  import { AnchorProps, AutocompleteProps, ButtonProps, ColorInputProps, FileInputProps, MenuProps, MenuTargetProps, MultiSelectProps, NumberInputProps, PasswordInputProps, SegmentedControlProps, SelectProps, SliderProps, SwitchProps, TagsInputProps, TextInputProps, TextareaProps, ThemeIconProps, TooltipProps } from "@mantine/core";
7
- import "@mantine/modals";
8
5
  import * as react_jsx_runtime0 from "react/jsx-runtime";
9
6
  import { ComponentType, ReactElement, ReactNode } from "react";
10
- import "@mantine/notifications";
11
7
  import * as alepha_react_router0 from "alepha/react/router";
12
8
  import { RouterPushOptions, UseActiveOptions } from "alepha/react/router";
13
- import "@mantine/nprogress";
14
9
  import { UseActionReturn } from "alepha/react";
15
10
  import { DateInputProps, DateTimePickerProps, TimeInputProps } from "@mantine/dates";
16
- import "alepha/datetime";
17
11
  import { ReactAuth } from "alepha/react/auth";
18
12
  import * as alepha_server_links0 from "alepha/server/links";
19
13
  import { RealmConfig, RealmController } from "alepha/api/users";
@@ -36,17 +30,13 @@ declare class AuthRouter {
36
30
  displayName?: string | undefined;
37
31
  logoUrl?: string | undefined;
38
32
  registrationAllowed: boolean;
39
- emailEnabled: boolean;
40
- emailRequired: boolean;
41
- usernameEnabled: boolean;
42
- usernameRequired: boolean;
33
+ email: "required" | "none" | "optional";
34
+ username: "required" | "none" | "optional";
43
35
  usernameRegExp: string;
44
- phoneEnabled: boolean;
45
- phoneRequired: boolean;
36
+ phoneNumber: "required" | "none" | "optional";
46
37
  verifyEmailRequired: boolean;
47
38
  verifyPhoneRequired: boolean;
48
- firstNameLastNameEnabled: boolean;
49
- firstNameLastNameRequired: boolean;
39
+ firstNameLastName: "required" | "none" | "optional";
50
40
  resetPasswordAllowed: boolean;
51
41
  adminEmails: string[];
52
42
  adminUsernames: string[];
@@ -77,17 +67,13 @@ declare class AuthRouter {
77
67
  displayName?: string | undefined;
78
68
  logoUrl?: string | undefined;
79
69
  registrationAllowed: boolean;
80
- emailEnabled: boolean;
81
- emailRequired: boolean;
82
- usernameEnabled: boolean;
83
- usernameRequired: boolean;
70
+ email: "required" | "none" | "optional";
71
+ username: "required" | "none" | "optional";
84
72
  usernameRegExp: string;
85
- phoneEnabled: boolean;
86
- phoneRequired: boolean;
73
+ phoneNumber: "required" | "none" | "optional";
87
74
  verifyEmailRequired: boolean;
88
75
  verifyPhoneRequired: boolean;
89
- firstNameLastNameEnabled: boolean;
90
- firstNameLastNameRequired: boolean;
76
+ firstNameLastName: "required" | "none" | "optional";
91
77
  resetPasswordAllowed: boolean;
92
78
  adminEmails: string[];
93
79
  adminUsernames: string[];
@@ -118,17 +104,13 @@ declare class AuthRouter {
118
104
  displayName?: string | undefined;
119
105
  logoUrl?: string | undefined;
120
106
  registrationAllowed: boolean;
121
- emailEnabled: boolean;
122
- emailRequired: boolean;
123
- usernameEnabled: boolean;
124
- usernameRequired: boolean;
107
+ email: "required" | "none" | "optional";
108
+ username: "required" | "none" | "optional";
125
109
  usernameRegExp: string;
126
- phoneEnabled: boolean;
127
- phoneRequired: boolean;
110
+ phoneNumber: "required" | "none" | "optional";
128
111
  verifyEmailRequired: boolean;
129
112
  verifyPhoneRequired: boolean;
130
- firstNameLastNameEnabled: boolean;
131
- firstNameLastNameRequired: boolean;
113
+ firstNameLastName: "required" | "none" | "optional";
132
114
  resetPasswordAllowed: boolean;
133
115
  adminEmails: string[];
134
116
  adminUsernames: string[];
@@ -161,17 +143,13 @@ declare class AuthRouter {
161
143
  displayName?: string | undefined;
162
144
  logoUrl?: string | undefined;
163
145
  registrationAllowed: boolean;
164
- emailEnabled: boolean;
165
- emailRequired: boolean;
166
- usernameEnabled: boolean;
167
- usernameRequired: boolean;
146
+ email: "required" | "none" | "optional";
147
+ username: "required" | "none" | "optional";
168
148
  usernameRegExp: string;
169
- phoneEnabled: boolean;
170
- phoneRequired: boolean;
149
+ phoneNumber: "required" | "none" | "optional";
171
150
  verifyEmailRequired: boolean;
172
151
  verifyPhoneRequired: boolean;
173
- firstNameLastNameEnabled: boolean;
174
- firstNameLastNameRequired: boolean;
152
+ firstNameLastName: "required" | "none" | "optional";
175
153
  resetPasswordAllowed: boolean;
176
154
  adminEmails: string[];
177
155
  adminUsernames: string[];
@@ -284,6 +262,9 @@ interface ActionMenuConfig {
284
262
  }
285
263
  interface ActionCommonProps extends ButtonProps {
286
264
  children?: ReactNode;
265
+ /**
266
+ * If set, the button will show only the icon on smaller screens and reveal the text from the specified breakpoint and up.
267
+ */
287
268
  textVisibleFrom?: "xs" | "sm" | "md" | "lg" | "xl";
288
269
  /**
289
270
  * Tooltip to display on hover. Can be a string for simple tooltips
@@ -309,6 +290,9 @@ interface ActionCommonProps extends ButtonProps {
309
290
  * If no children are provided, the button will be styled as an icon-only button.
310
291
  */
311
292
  icon?: ReactNode | ComponentType;
293
+ /**
294
+ * Size of the icon. Can be a number (pixels) or a string (e.g., "1em", "20px").
295
+ */
312
296
  iconSize?: number | string;
313
297
  /**
314
298
  * Additional props to pass to the ThemeIcon wrapping the icon.
@@ -318,6 +302,10 @@ interface ActionCommonProps extends ButtonProps {
318
302
  * Visual intent of the action button.
319
303
  */
320
304
  intent?: "primary" | "success" | "danger" | "warning" | "info" | "none";
305
+ /**
306
+ * Active state styling for navigation actions. When set, the button will apply active styles based on the current route.
307
+ */
308
+ variant?: ButtonProps["variant"] | "minimal";
321
309
  }
322
310
  type ActionProps = ActionCommonProps & (ActionNavigationButtonProps | ActionClickButtonProps | ActionSubmitButtonProps | ActionHookButtonProps | {});
323
311
  interface ActionSubmitButtonProps extends ButtonProps {
@@ -346,7 +334,7 @@ interface ActionNavigationButtonProps extends ButtonProps {
346
334
  //#region ../../src/core/form/utils/parseInput.d.ts
347
335
  interface GenericControlProps {
348
336
  input: BaseInputField;
349
- title?: string;
337
+ label?: string;
350
338
  description?: string;
351
339
  icon?: ReactElement | ((props: {
352
340
  size: number;
@@ -433,12 +421,51 @@ type SelectValueLabel = string | {
433
421
  icon?: string;
434
422
  };
435
423
  interface ControlSelectProps extends GenericControlProps {
436
- select?: boolean | SelectProps;
437
- multi?: boolean | MultiSelectProps;
438
- tags?: boolean | TagsInputProps;
439
- autocomplete?: boolean | AutocompleteProps;
440
- segmented?: boolean | Partial<SegmentedControlProps>;
441
- loader?: () => Promise<SelectValueLabel[]>;
424
+ /**
425
+ * If true, allows creating new values not present in the options list.
426
+ * For single values, Select becomes an Autocomplete.
427
+ * For arrays, MultiSelect becomes a TagsInput.
428
+ */
429
+ creatable?: boolean;
430
+ /**
431
+ * Configure select with optional SelectProps.
432
+ */
433
+ selectProps?: boolean | SelectProps;
434
+ /**
435
+ * Configure select as multi-select (for array of enums) with optional MultiSelectProps.
436
+ */
437
+ multiSelectProps?: boolean | MultiSelectProps;
438
+ /**
439
+ * If true, renders a SegmentedControl instead of Select/MultiSelect.
440
+ */
441
+ segmentedProps?: boolean | Partial<SegmentedControlProps>;
442
+ /**
443
+ * Props passed to the Autocomplete component when creatable is true and the field is single-value.
444
+ */
445
+ autocompleteProps?: Partial<AutocompleteProps>;
446
+ /**
447
+ * Props passed to the TagsInput component when creatable is true and the field is array-value.
448
+ */
449
+ tagsInputProps?: Partial<TagsInputProps>;
450
+ /**
451
+ * Async loader for select options.
452
+ *
453
+ * @param search - Search text (empty string on initial load)
454
+ * @param resolve - Optional array of values to resolve labels for (used for default values in long mode)
455
+ */
456
+ loader?: (search: string, resolve?: string[]) => Async<SelectValueLabel[]>;
457
+ /**
458
+ * Threshold to distinguish short (client-filtered) from long (server-filtered) lists.
459
+ * If initial load returns <= threshold items, mode is "short" (cached, client-filtered).
460
+ * If > threshold, mode is "long" (debounced server search).
461
+ * @default 100
462
+ */
463
+ loaderThreshold?: number;
464
+ /**
465
+ * Debounce delay in ms for server search in long mode.
466
+ * @default 300
467
+ */
468
+ loaderDebounce?: number;
442
469
  }
443
470
  //#endregion
444
471
  //#region ../../src/core/form/components/Control.d.ts
@@ -462,7 +489,7 @@ interface ControlProps extends GenericControlProps {
462
489
  segmented?: boolean;
463
490
  }
464
491
  type CustomControlProps = {
465
- defaultValue: any;
492
+ value: any;
466
493
  onChange: (value: any) => void;
467
494
  };
468
495
  //#endregion
@@ -540,38 +567,50 @@ interface UserButtonProps extends Omit<ActionProps, "menu" | "icon" | "onClick">
540
567
  * Menu configuration overrides
541
568
  */
542
569
  menuConfig?: Partial<Omit<ActionMenuConfig, "items">>;
543
- /**
544
- * Whether to show a divider before logout (default: true when menuItems provided)
545
- */
546
- showLogoutDivider?: boolean;
547
570
  /**
548
571
  * Custom icon to use instead of user avatar (default: IconUser)
549
572
  */
550
573
  icon?: ReactNode;
574
+ /**
575
+ * If true, the profile link will not be shown in the menu even if a userProfile page exists and the user is authenticated.
576
+ */
577
+ skipProfile?: boolean;
551
578
  }
552
579
  declare const UserButton: (props: UserButtonProps) => react_jsx_runtime0.JSX.Element;
553
580
  //#endregion
554
581
  //#region ../../src/auth/components/Login.d.ts
555
582
  interface LoginProps {
556
583
  realmConfig: RealmConfig;
584
+ registerPath?: string;
585
+ resetPasswordPath?: string;
586
+ variant?: "card" | "split";
587
+ image?: string;
557
588
  }
558
589
  declare const Login: (props: LoginProps) => react_jsx_runtime0.JSX.Element;
559
590
  //#endregion
560
591
  //#region ../../src/auth/components/Register.d.ts
561
592
  interface RegisterProps {
562
593
  realmConfig: RealmConfig;
594
+ loginPath?: string;
595
+ variant?: "card" | "split";
596
+ image?: string;
563
597
  }
564
598
  declare const Register: (props: RegisterProps) => react_jsx_runtime0.JSX.Element;
565
599
  //#endregion
566
600
  //#region ../../src/auth/components/ResetPassword.d.ts
567
601
  interface ResetPasswordProps {
568
602
  realmConfig: RealmConfig;
603
+ loginPath?: string;
569
604
  }
570
605
  declare const ResetPassword: (props: ResetPasswordProps) => react_jsx_runtime0.JSX.Element;
571
606
  //#endregion
572
607
  //#region ../../src/auth/components/VerifyEmail.d.ts
573
- type VerifyEmailProps = {};
574
- declare const VerifyEmail: (_props: VerifyEmailProps) => react_jsx_runtime0.JSX.Element;
608
+ type VerifyEmailStep = "verifying" | "success" | "error";
609
+ interface VerifyEmailProps {
610
+ loginPath?: string;
611
+ step?: VerifyEmailStep;
612
+ }
613
+ declare const VerifyEmail: (props: VerifyEmailProps) => react_jsx_runtime0.JSX.Element;
575
614
  //#endregion
576
615
  //#region ../../src/auth/primitives/$uiAuth.d.ts
577
616
  /**
@@ -594,5 +633,5 @@ declare const $uiAuth: () => AuthRouter;
594
633
  */
595
634
  declare const AlephaUIAuth: alepha.Service<alepha.Module>;
596
635
  //#endregion
597
- export { $uiAuth, AlephaUIAuth, AuthRouter, Login, Register, ResetPassword, UserButton, type UserButtonProps, VerifyEmail };
636
+ export { $uiAuth, AlephaUIAuth, AuthRouter, Login, Register, ResetPassword, UserButton, type UserButtonProps, VerifyEmail, type VerifyEmailStep };
598
637
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/auth/AuthRouter.ts","../../src/core/atoms/alephaSidebarAtom.ts","../../src/core/atoms/alephaThemeAtom.ts","../../src/core/atoms/alephaThemeOverridesAtom.ts","../../src/core/components/buttons/ActionButton.tsx","../../src/core/form/utils/parseInput.ts","../../src/core/form/components/ControlArray.tsx","../../src/core/form/components/ControlNumber.tsx","../../src/core/form/components/ControlObject.tsx","../../src/core/form/components/ControlSelect.tsx","../../src/core/form/components/Control.tsx","../../src/core/form/index.ts","../../src/core/index.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/components/Login.tsx","../../src/auth/components/Register.tsx","../../src/auth/components/ResetPassword.tsx","../../src/auth/components/VerifyEmail.tsx","../../src/auth/primitives/$uiAuth.ts","../../src/auth/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;cAwBa,UAAA;EAAA,mBACQ,WAAA,EAAW,oBAAA,CAAA,iBAAA,CAAA,eAAA;EAAA,mBACX,IAAA,EAAI,SAAA;EAEvB,UAAA,EAAU,oBAAA,CAAA,aAAA,CAFa,oBAAA,CAEb,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAaV,KAAA,uBAAK,aAAA;;0BAbK,MAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCV,QAAA,uBAAQ,aAAA;;0BAnBH,MAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCL,aAAA,uBAAa,aAAA;;0BAnBL,MAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCR,WAAA,uBAAW,aAAA;;8BAnBE,MAAA,CAAA,OAAA;;;;EAiCb,MAAA,EAAM,oBAAA,CAAA,aAAA,CAdK,oBAAA,CAcL,gBAAA,MAAA,oBAAA,CAAA,mBAAA;EAYN,OAAA,EAAO,oBAAA,CAAA,aAAA,CAZD,oBAAA,CAYC,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAAA,UAUS,eAAA,CAAgB,SAAA,YAAkB,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCpIvC,iBAAA,EAAiB,MAAA,CAAA,IAAA,QAAA,OAAA;;;;UA4B5B,MAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;cC5BW,eAAA,EAAe,MAAA,CAAA,IAAA,QAAA,OAAA;SAQ1B,MAAA,CAAA,QAAA;AAAA;;;cCRW,wBAAA,EAAwB,MAAA,CAAA,IAAA,QAAA,OAAA;iCAUnC,MAAA,CAAA,OAAA;;;;;;;;UCqBe,cAAA;;;;EAIf,IAAA;;;;EAKA,KAAA,YAAiB,SAAA;;;;EAKjB,IAAA,GAAO,SAAA;;;;EAKP,OAAA;EJ5BqB;;;EIiCrB,IAAA;EJ/BuB;;;EIoCvB,KAAA;EJlCU;;;EIuCV,QAAA,GAAW,cAAA;;;;EAKX,MAAA;AAAA;AAAA,UAGe,gBAAA;;;;EAIf,KAAA,EAAO,cAAA;EJnBC;;;EIwBR,QAAA;;;;EAaA,KAAA;;;;EAKA,MAAA;EAEA,EAAA;EAEA,WAAA,GAAc,eAAA;EAEd,SAAA,GAAY,SAAA;AAAA;AAAA,UAGG,iBAAA,SAA0B,WAAA;EACzC,QAAA,GAAW,SAAA;EAEX,eAAA;EJUO;;;;EIJP,OAAA,qBAA4B,YAAA;EJ/FE;;;EIoG9B,IAAA,GAAO,gBAAA;EJjGP;;;;;;EIyGA,OAAA;IAA+B,KAAA;IAAgB,OAAA;EAAA;;;;;EAM/C,IAAA,GAAO,SAAA,GAAY,aAAA;EAEnB,QAAA;;;;EAKA,cAAA,GAAiB,cAAA;;;;EAKjB,MAAA;AAAA;AAAA,KAGU,WAAA,GAAc,iBAAA,IAEpB,2BAAA,GACA,sBAAA,GACA,uBAAA,GACA,qBAAA;AAAA,UA8PW,uBAAA,SAAgC,WAAA;EAC/C,IAAA,EAAM,SAAA;EACN,IAAA;AAAA;AAAA,UAqCe,qBAAA,SAA8B,WAAA;EAC7C,MAAA,EAAQ,eAAA;AAAA;AAAA,UAyCO,sBAAA,SAA+B,WAAA;EAC9C,OAAA,GAAU,CAAA;EACV,cAAA;AAAA;AAAA,UA+Ce,2BAAA,SAAoC,WAAA;EACnD,IAAA;EACA,MAAA,GAAS,OAAA,CAAQ,gBAAA;EACjB,eAAA,GAAkB,iBAAA;EAClB,eAAA;EACA,aAAA,GAAgB,WAAA;EAChB,WAAA,GAAc,WAAA;EACd,MAAA;EACA,WAAA,GAAc,WAAA;EACd,MAAA;AAAA;;;UChce,mBAAA;EACf,KAAA,EAAO,cAAA;EACP,KAAA;EACA,WAAA;EACA,IAAA,GAAO,YAAA,KAAiB,KAAA;IAAS,IAAA;EAAA,MAAmB,SAAA;EACpD,IAAA;AAAA;;;UCpFe,iBAAA,SAA0B,mBAAA;;;;;EAKzC,GAAA;;;;;EAMA,GAAA;;;;;EAMA,QAAA;;;;ANlBF;EMwBE,OAAA;;;;;;;EAQA,OAAA;EN5BU;;;;EMkCV,YAAA,GAAe,MAAA,SAAe,OAAA,CAAQ,IAAA,CAAK,YAAA;;;;EAK3C,gBAAA,GAAmB,OAAA,CAAQ,IAAA,CAAK,YAAA;;;;;EAMhC,QAAA;AAAA;;;UC7De,kBAAA,SAA2B,mBAAA;EAC1C,gBAAA,GAAmB,OAAA,CAAQ,gBAAA;EAC3B,WAAA,GAAc,OAAA,CAAQ,WAAA;AAAA;;;UCRP,kBAAA,SAA2B,mBAAA;;;;;EAK1C,OAAA;;;;;;;EAQA,OAAA;;;;;EAMA,YAAA,GAAe,MAAA,SAAe,OAAA,CAAQ,IAAA,CAAK,YAAA;AAAA;;;KCPjC,gBAAA;EAEN,KAAA;EAAe,KAAA;EAAe,IAAA;AAAA;AAAA,UAEnB,kBAAA,SAA2B,mBAAA;EAC1C,MAAA,aAAmB,WAAA;EACnB,KAAA,aAAkB,gBAAA;EAClB,IAAA,aAAiB,cAAA;EACjB,YAAA,aAAyB,iBAAA;EACzB,SAAA,aAAsB,OAAA,CAAQ,qBAAA;EAE9B,MAAA,SAAe,OAAA,CAAQ,gBAAA;AAAA;;;UCER,YAAA,SAAqB,mBAAA;EACpC,IAAA,GAAO,cAAA;EACP,IAAA,aAAiB,aAAA;EACjB,MAAA,aAAmB,OAAA,CAAQ,kBAAA;EAC3B,QAAA,aAAqB,kBAAA;EACrB,MAAA,aAAmB,WAAA;EACnB,MAAA,aAAmB,OAAA,CAAQ,kBAAA;EAC3B,IAAA,aAAiB,cAAA;EACjB,KAAA,aAAkB,eAAA;EAClB,IAAA,aAAiB,cAAA;EACjB,QAAA,aAAqB,mBAAA;EACrB,IAAA,aAAiB,cAAA;EACjB,KAAA;EACA,MAAA,aAAmB,OAAA,CAAQ,IAAA,CAAK,kBAAA;EAChC,KAAA,aAAkB,OAAA,CAAQ,IAAA,CAAK,iBAAA;EAC/B,MAAA,GAAS,aAAA,CAAc,kBAAA;EAEvB,MAAA;EACA,SAAA;AAAA;AAAA,KA+VU,kBAAA;EACV,YAAA;EACA,QAAA,GAAW,KAAA;AAAA;;;;YC/XD,cAAA;IACR,QAAA,GAAW,IAAA,CAAK,YAAA;EAAA;AAAA;;;;YCyHR,KAAA;IAAA,CACP,iBAAA,CAAkB,GAAA,IAAO,MAAA,QAAc,iBAAA,CAAkB,MAAA;IAAA,CACzD,eAAA,CAAgB,GAAA,IAAO,MAAA,QAAc,eAAA,CAAgB,MAAA;IAAA,CACrD,wBAAA,CAAyB,GAAA,IAAO,MAAA,QACxB,wBAAA,CAAyB,MAAA;EAAA;AAAA;AAAA;EAAA,UAM1B,oBAAA;IZ9GL;;;;;;;;IYuHH,KAAA;;;;IAKA,WAAA;;;;IAKA,IAAA,GAAO,SAAA,GAAY,aAAA;EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;UCrJN,eAAA,SACP,IAAA,CAAK,WAAA;;;;EAIb,SAAA,GAAY,cAAA;;;;EAKZ,WAAA;;;;EAKA,UAAA;;;;EAKA,UAAA,GAAa,OAAA,CAAQ,IAAA,CAAK,gBAAA;;;AbjB5B;EasBE,iBAAA;;;;EAKA,IAAA,GAAO,SAAA;AAAA;AAAA,cAGH,UAAA,GAAc,KAAA,EAAO,eAAA,KAAe,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UCtCzB,UAAA;EACf,WAAA,EAAa,WAAA;AAAA;AAAA,cAGT,KAAA,GAAS,KAAA,EAAO,UAAA,KAAU,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UCMf,aAAA;EACf,WAAA,EAAa,WAAA;AAAA;AAAA,cAcT,QAAA,GAAY,KAAA,EAAO,aAAA,KAAa,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UCjBrB,kBAAA;EACf,WAAA,EAAa,WAAA;AAAA;AAAA,cAYT,aAAA,GAAiB,KAAA,EAAO,kBAAA,KAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;KC1BpC,gBAAA;AAAA,cAIN,WAAA,GAAe,MAAA,EAAQ,gBAAA,KAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;;;;cCThC,OAAA,QAAO,UAAA;;;;;;;;;;;;;;;cC0BP,YAAA,EAAY,MAAA,CAAA,OAAA,CAGvB,MAAA,CAHuB,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/auth/AuthRouter.ts","../../src/core/atoms/alephaSidebarAtom.ts","../../src/core/atoms/alephaThemeAtom.ts","../../src/core/atoms/alephaThemeOverridesAtom.ts","../../src/core/components/buttons/ActionButton.tsx","../../src/core/form/utils/parseInput.ts","../../src/core/form/components/ControlArray.tsx","../../src/core/form/components/ControlNumber.tsx","../../src/core/form/components/ControlObject.tsx","../../src/core/form/components/ControlSelect.tsx","../../src/core/form/components/Control.tsx","../../src/core/form/index.ts","../../src/core/index.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/components/Login.tsx","../../src/auth/components/Register.tsx","../../src/auth/components/ResetPassword.tsx","../../src/auth/components/VerifyEmail.tsx","../../src/auth/primitives/$uiAuth.ts","../../src/auth/index.ts"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { a as ui, i as ActionButton, t as AlephaUI } from "./core-DyfeVr5c.js";
2
- import "./IconGoogle-Ch1m3Uzl.js";
3
- import { t as Login } from "./Login-C7jIqf00.js";
4
- import { t as Register } from "./Register-2gx8qll-.js";
5
- import { t as ResetPassword } from "./ResetPassword-DBxt9hKk.js";
6
- import { t as VerifyEmail } from "./VerifyEmail-Z80Ubajk.js";
1
+ import { a as ui, i as ActionButton, t as AlephaUI } from "./core-C6D3pazL.js";
2
+ import "./IconGoogle-8Nkx6yax.js";
3
+ import { t as Login } from "./Login-DJyweoPS.js";
4
+ import { t as Register } from "./Register-CSqzzitW.js";
5
+ import { t as ResetPassword } from "./ResetPassword-B61QPlQi.js";
6
+ import { t as VerifyEmail } from "./VerifyEmail-CqBJ11id.js";
7
7
  import { $context, $inject, $module, AlephaError, t } from "alepha";
8
8
  import { $dictionary, AlephaReactI18n } from "alepha/react/i18n";
9
9
  import { Avatar } from "@mantine/core";
@@ -13,7 +13,6 @@ import { $page, ReactPageProvider, Redirection, useRouter } from "alepha/react/r
13
13
  import { useClient, useInject } from "alepha/react";
14
14
  import { AlephaReactAuth, ReactAuth, useAuth } from "alepha/react/auth";
15
15
  import { $client } from "alepha/server/links";
16
-
17
16
  //#region ../../src/auth/AuthI18n.ts
18
17
  var AuthI18n = class {
19
18
  en = $dictionary({
@@ -130,7 +129,6 @@ var AuthI18n = class {
130
129
  verifyEmailBackToSignIn: "Retour à la connexion"
131
130
  } }) });
132
131
  };
133
-
134
132
  //#endregion
135
133
  //#region ../../src/auth/AuthRouter.ts
136
134
  /**
@@ -146,7 +144,7 @@ var AuthRouter = class {
146
144
  authLayout = $page({
147
145
  label: "Auth",
148
146
  path: "/auth",
149
- lazy: () => import("./AuthLayout-C161NeF6.js"),
147
+ lazy: () => import("./AuthLayout-CfRKcTqP.js"),
150
148
  children: () => [
151
149
  this.login,
152
150
  this.register,
@@ -161,7 +159,7 @@ var AuthRouter = class {
161
159
  description: "Sign in to your account",
162
160
  path: "/login",
163
161
  schema: { query: realmQuerySchema },
164
- lazy: () => import("./Login-C7jIqf00.js").then((n) => n.n),
162
+ lazy: () => import("./Login-DJyweoPS.js").then((n) => n.n),
165
163
  loader: async ({ query, user }) => {
166
164
  if (user) throw new Redirection(query.r || "/");
167
165
  return { realmConfig: await this.loadRealmConfig(query.realm) };
@@ -173,7 +171,7 @@ var AuthRouter = class {
173
171
  description: "Create a new account",
174
172
  path: "/register",
175
173
  schema: { query: realmQuerySchema },
176
- lazy: () => import("./Register-2gx8qll-.js").then((n) => n.n),
174
+ lazy: () => import("./Register-CSqzzitW.js").then((n) => n.n),
177
175
  loader: async ({ query, user }) => {
178
176
  if (user) throw new Redirection(query.r || "/");
179
177
  return { realmConfig: await this.loadRealmConfig(query.realm) };
@@ -185,7 +183,7 @@ var AuthRouter = class {
185
183
  description: "Reset your account password",
186
184
  path: "/reset-password",
187
185
  schema: { query: realmQuerySchema },
188
- lazy: () => import("./ResetPassword-DBxt9hKk.js").then((n) => n.n),
186
+ lazy: () => import("./ResetPassword-B61QPlQi.js").then((n) => n.n),
189
187
  loader: async ({ query, user }) => {
190
188
  if (user) throw new Redirection(query.r || "/");
191
189
  return { realmConfig: await this.loadRealmConfig(query.realm) };
@@ -200,7 +198,7 @@ var AuthRouter = class {
200
198
  email: t.optional(t.string()),
201
199
  token: t.optional(t.string())
202
200
  }) },
203
- lazy: () => import("./VerifyEmail-Z80Ubajk.js").then((n) => n.n)
201
+ lazy: () => import("./VerifyEmail-CqBJ11id.js").then((n) => n.n)
204
202
  });
205
203
  logout = $page({
206
204
  icon: IconLogout2,
@@ -220,7 +218,7 @@ var AuthRouter = class {
220
218
  description: "View your profile",
221
219
  path: "/profile",
222
220
  can: () => !!this.auth.user,
223
- lazy: () => import("./Profile-BMpXJ0oi.js")
221
+ lazy: () => import("./Profile-Cy93pNTw.js")
224
222
  });
225
223
  async loadRealmConfig(realmName) {
226
224
  try {
@@ -231,11 +229,10 @@ var AuthRouter = class {
231
229
  }
232
230
  }
233
231
  };
234
-
235
232
  //#endregion
236
233
  //#region ../../src/auth/components/buttons/UserButton.tsx
237
234
  const UserButton = (props) => {
238
- const { menuItems = [], logoutLabel = "Sign out", loginLabel, menuConfig, showLogoutDivider = menuItems.length > 0, icon, children, ...buttonProps } = props;
235
+ const { menuItems = [], logoutLabel = "Sign out", loginLabel, menuConfig, icon, skipProfile = false, children, ...buttonProps } = props;
239
236
  buttonProps.variant ??= "default";
240
237
  const adminUserCtrl = useClient();
241
238
  const pages = useInject(ReactPageProvider);
@@ -256,21 +253,21 @@ const UserButton = (props) => {
256
253
  type: "label",
257
254
  label: auth.user.email
258
255
  });
259
- if (userPage && isConnected) items.push({
256
+ if (userPage && isConnected && !skipProfile) items.push({
260
257
  label: "Profile",
261
- icon: /* @__PURE__ */ jsx(IconUser, { size: ui.sizes.icon.md }),
258
+ icon: /* @__PURE__ */ jsx(IconUser, { size: ui.sizes.icon.sm }),
262
259
  href: authRouter.path("userProfile")
263
260
  });
264
261
  if (adminPage && isAdmin) items.push({
265
262
  label: "Admin",
266
- icon: /* @__PURE__ */ jsx(IconSettings, { size: ui.sizes.icon.md }),
263
+ icon: /* @__PURE__ */ jsx(IconSettings, { size: ui.sizes.icon.sm }),
267
264
  href: authRouter.path("adminLayout")
268
265
  });
269
266
  items.push(...menuItems);
270
- if (showLogoutDivider && items.length > 0) items.push({ type: "divider" });
267
+ if (items.length > 0) items.push({ type: "divider" });
271
268
  items.push({
272
269
  label: logoutLabel,
273
- icon: /* @__PURE__ */ jsx(IconLogout, { size: ui.sizes.icon.md }),
270
+ icon: /* @__PURE__ */ jsx(IconLogout, { size: ui.sizes.icon.sm }),
274
271
  color: "red",
275
272
  onClick: () => auth.logout()
276
273
  });
@@ -278,21 +275,24 @@ const UserButton = (props) => {
278
275
  return /* @__PURE__ */ jsx(ActionButton, {
279
276
  ...buttonProps,
280
277
  icon: hasAvatar ? void 0 : icon === null ? void 0 : icon ?? IconUser,
281
- leftSection: hasAvatar ? /* @__PURE__ */ jsx(Avatar, {
282
- src: `/api/files/${auth.user.picture}`,
283
- size: 24,
284
- radius: "xl"
285
- }) : void 0,
278
+ px: 8,
286
279
  menu: {
287
- position: "bottom-end",
280
+ menuProps: {
281
+ withArrow: true,
282
+ arrowSize: 12
283
+ },
284
+ position: "bottom",
288
285
  width: 200,
289
286
  ...menuConfig,
290
287
  items
291
288
  },
292
- children
289
+ children: hasAvatar ? /* @__PURE__ */ jsx(Avatar, {
290
+ src: `/api/files/${auth.user.picture}`,
291
+ size: 24,
292
+ radius: "xl"
293
+ }) : void 0
293
294
  });
294
295
  };
295
-
296
296
  //#endregion
297
297
  //#region ../../src/auth/primitives/$uiAuth.ts
298
298
  /**
@@ -302,7 +302,6 @@ const $uiAuth = () => {
302
302
  const { alepha } = $context();
303
303
  return alepha.inject(AuthRouter);
304
304
  };
305
-
306
305
  //#endregion
307
306
  //#region ../../src/auth/index.ts
308
307
  /**
@@ -327,7 +326,7 @@ const AlephaUIAuth = $module({
327
326
  AuthI18n
328
327
  ]
329
328
  });
330
-
331
329
  //#endregion
332
330
  export { $uiAuth, AlephaUIAuth, AuthRouter, Login, Register, ResetPassword, UserButton, VerifyEmail };
331
+
333
332
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/auth/AuthI18n.ts","../../src/auth/AuthRouter.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/primitives/$uiAuth.ts","../../src/auth/index.ts"],"sourcesContent":["import { $dictionary } from \"alepha/react/i18n\";\n\nexport class AuthI18n {\n en = $dictionary({\n name: \"alepha.ui.auth.en\",\n lazy: () => ({\n default: {\n loginSignIn: \"Sign in\",\n loginContinueWith: \"Continue with $1\",\n loginOr: \"OR\",\n loginCancel: \"Cancel\",\n loginForgotPassword: \"Forgot password?\",\n loginNoAccount: \"Don't have an account?\",\n loginSignUp: \"Sign up\",\n loginUsername: \"Username\",\n loginEmail: \"Email\",\n loginPhone: \"Phone number\",\n loginPassword: \"Password\",\n registerCreateAccount: \"Create account\",\n registerContinueWith: \"Continue with $1\",\n registerOr: \"OR\",\n registerCancel: \"Cancel\",\n registerHaveAccount: \"Already have an account?\",\n registerSignIn: \"Sign in\",\n registerUsername: \"Username\",\n registerEmail: \"Email\",\n registerPhone: \"Phone number\",\n registerPassword: \"Password\",\n registerConfirmPassword: \"Confirm password\",\n registerDisabled:\n \"Registration is not available. Please contact your administrator.\",\n registerBackToSignIn: \"Back to sign in\",\n registerVerifyTitle: \"Verify your account\",\n registerVerifyDescription:\n \"Please enter the verification code(s) sent to you.\",\n registerEmailCode: \"Email verification code\",\n registerPhoneCode: \"Phone verification code\",\n registerVerifySubmit: \"Complete Registration\",\n registerVerifyBack: \"Back to registration\",\n resetPasswordTitle: \"Reset password\",\n resetPasswordEmail: \"Email\",\n resetPasswordEnterEmail:\n \"Enter your email address to reset your password\",\n resetPasswordSendCode: \"Send verification code\",\n resetPasswordCodeSent: \"We've sent a verification code to your email.\",\n resetPasswordEnterCode: \"Enter the 6-digit code\",\n resetPasswordResendCode: \"Resend code\",\n resetPasswordEnterNewPassword: \"Create your new password\",\n resetPasswordNewPassword: \"New password\",\n resetPasswordConfirmPassword: \"Confirm password\",\n resetPasswordSetNewPassword: \"Set new password\",\n resetPasswordSuccess: \"Your password has been reset successfully.\",\n resetPasswordBackToSignIn: \"Back to sign in\",\n resetPasswordCancel: \"Cancel\",\n resetPasswordDisabled:\n \"Password reset is not available. Please contact your administrator.\",\n verifyEmailTitle: \"Email Verification\",\n verifyEmailVerifying: \"Verifying your email...\",\n verifyEmailPleaseWait:\n \"Please wait while we verify your email address.\",\n verifyEmailSuccess: \"Your email has been verified successfully.\",\n verifyEmailFailed:\n \"Failed to verify your email. The link may have expired or is invalid.\",\n verifyEmailMissingParams:\n \"Invalid verification link. Email and token are required.\",\n verifyEmailSignIn: \"Sign in to your account\",\n verifyEmailBackToSignIn: \"Back to sign in\",\n },\n }),\n });\n\n fr = $dictionary({\n lazy: () => ({\n default: {\n loginSignIn: \"Se connecter\",\n loginContinueWith: \"Continuer avec $1\",\n loginOr: \"OU\",\n loginCancel: \"Annuler\",\n loginForgotPassword: \"Mot de passe oublié ?\",\n loginNoAccount: \"Vous n'avez pas de compte ?\",\n loginSignUp: \"S'inscrire\",\n loginUsername: \"Nom d'utilisateur\",\n loginEmail: \"E-mail\",\n loginPhone: \"Numéro de téléphone\",\n loginPassword: \"Mot de passe\",\n registerCreateAccount: \"Créer un compte\",\n registerContinueWith: \"Continuer avec $1\",\n registerOr: \"OU\",\n registerCancel: \"Annuler\",\n registerHaveAccount: \"Vous avez déjà un compte ?\",\n registerSignIn: \"Se connecter\",\n registerUsername: \"Nom d'utilisateur\",\n registerEmail: \"E-mail\",\n registerPhone: \"Numéro de téléphone\",\n registerPassword: \"Mot de passe\",\n registerConfirmPassword: \"Confirmer le mot de passe\",\n registerDisabled:\n \"L'inscription n'est pas disponible. Veuillez contacter votre administrateur.\",\n registerBackToSignIn: \"Retour à la connexion\",\n registerVerifyTitle: \"Vérifiez votre compte\",\n registerVerifyDescription:\n \"Veuillez entrer le(s) code(s) de vérification qui vous ont été envoyés.\",\n registerEmailCode: \"Code de vérification par e-mail\",\n registerPhoneCode: \"Code de vérification par téléphone\",\n registerVerifySubmit: \"Terminer l'inscription\",\n registerVerifyBack: \"Retour à l'inscription\",\n resetPasswordTitle: \"Réinitialiser le mot de passe\",\n resetPasswordEmail: \"E-mail\",\n resetPasswordEnterEmail:\n \"Entrez votre adresse e-mail pour réinitialiser votre mot de passe\",\n resetPasswordSendCode: \"Envoyer le code de vérification\",\n resetPasswordCodeSent:\n \"Nous avons envoyé un code de vérification à votre e-mail.\",\n resetPasswordEnterCode: \"Entrez le code à 6 chiffres\",\n resetPasswordResendCode: \"Renvoyer le code\",\n resetPasswordEnterNewPassword: \"Créez votre nouveau mot de passe\",\n resetPasswordNewPassword: \"Nouveau mot de passe\",\n resetPasswordConfirmPassword: \"Confirmer le mot de passe\",\n resetPasswordSetNewPassword: \"Définir le nouveau mot de passe\",\n resetPasswordSuccess:\n \"Votre mot de passe a été réinitialisé avec succès.\",\n resetPasswordBackToSignIn: \"Retour à la connexion\",\n resetPasswordCancel: \"Annuler\",\n resetPasswordDisabled:\n \"La réinitialisation du mot de passe n'est pas disponible. Veuillez contacter votre administrateur.\",\n verifyEmailTitle: \"Vérification de l'e-mail\",\n verifyEmailVerifying: \"Vérification de votre e-mail...\",\n verifyEmailPleaseWait:\n \"Veuillez patienter pendant que nous vérifions votre adresse e-mail.\",\n verifyEmailSuccess: \"Votre e-mail a été vérifié avec succès.\",\n verifyEmailFailed:\n \"Échec de la vérification de votre e-mail. Le lien a peut-être expiré ou est invalide.\",\n verifyEmailMissingParams:\n \"Lien de vérification invalide. L'e-mail et le jeton sont requis.\",\n verifyEmailSignIn: \"Se connecter à votre compte\",\n verifyEmailBackToSignIn: \"Retour à la connexion\",\n },\n }),\n });\n}\n","import {\n IconLogin2,\n IconLogout2,\n IconMailCheck,\n IconPasswordUser,\n IconUser,\n IconUserPlus,\n} from \"@tabler/icons-react\";\nimport { $inject, AlephaError, t } from \"alepha\";\nimport type { RealmController } from \"alepha/api/users\";\nimport { ReactAuth } from \"alepha/react/auth\";\nimport { $page, Redirection } from \"alepha/react/router\";\nimport { $client } from \"alepha/server/links\";\n\n/**\n * Schema for realm query parameter used across auth pages.\n */\nconst realmQuerySchema = t.object({\n r: t.optional(t.string({ description: \"Redirect URL after authentication\" })),\n realm: t.optional(\n t.string({ description: \"User realm name for multi-tenant auth\" }),\n ),\n});\n\nexport class AuthRouter {\n protected readonly realmClient = $client<RealmController>();\n protected readonly auth = $inject(ReactAuth);\n\n authLayout = $page({\n label: \"Auth\",\n path: \"/auth\",\n lazy: () => import(\"./components/AuthLayout.tsx\"),\n children: () => [\n this.login,\n this.register,\n this.resetPassword,\n this.verifyEmail,\n this.profile,\n ],\n });\n\n login = $page({\n icon: IconLogin2,\n label: \"Sign In\",\n description: \"Sign in to your account\",\n path: \"/login\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/Login.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n register = $page({\n icon: IconUserPlus,\n label: \"Register\",\n description: \"Create a new account\",\n path: \"/register\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/Register.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n resetPassword = $page({\n icon: IconPasswordUser,\n label: \"Reset Password\",\n description: \"Reset your account password\",\n path: \"/reset-password\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/ResetPassword.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n verifyEmail = $page({\n icon: IconMailCheck,\n label: \"Verify Email\",\n description: \"Verify your email address\",\n path: \"/verify-email\",\n schema: {\n query: t.object({\n email: t.optional(t.string()),\n token: t.optional(t.string()),\n }),\n },\n lazy: () => import(\"./components/VerifyEmail.tsx\"),\n });\n\n logout = $page({\n icon: IconLogout2,\n label: \"Sign Out\",\n description: \"Sign out of your account\",\n path: \"/logout\",\n component: () => null,\n loader: () => {\n this.auth.logout();\n return {};\n },\n });\n\n profile = $page({\n name: \"userProfile\",\n icon: IconUser,\n label: \"Profile\",\n description: \"View your profile\",\n path: \"/profile\",\n can: () => !!this.auth.user,\n lazy: () => import(\"./components/Profile.tsx\"),\n });\n\n protected async loadRealmConfig(realmName?: string) {\n try {\n return await this.realmClient.getRealmConfig({\n query: { realmName },\n });\n } catch (e) {\n if (e instanceof AlephaError) {\n throw new AlephaError(\n \"Missing Realm Configuration - Did you forget to add '$realm()' to your application?\",\n e,\n );\n }\n throw e;\n }\n }\n}\n","import {\n ActionButton,\n type ActionMenuConfig,\n type ActionMenuItem,\n type ActionProps,\n ui,\n} from \"@alepha/ui\";\nimport { Avatar } from \"@mantine/core\";\nimport {\n IconLogin2,\n IconLogout,\n IconSettings,\n IconUser,\n} from \"@tabler/icons-react\";\nimport type { AdminUserController } from \"alepha/api/users\";\nimport { useClient, useInject } from \"alepha/react\";\nimport { useAuth } from \"alepha/react/auth\";\nimport { ReactPageProvider, useRouter } from \"alepha/react/router\";\nimport type { ReactNode } from \"react\";\nimport type { AuthRouter } from \"../../AuthRouter.ts\";\n\nexport interface UserButtonProps\n extends Omit<ActionProps, \"menu\" | \"icon\" | \"onClick\"> {\n /**\n * Additional menu items to display before the logout option\n */\n menuItems?: ActionMenuItem[];\n\n /**\n * Custom logout label (default: \"Sign out\")\n */\n logoutLabel?: string;\n\n /**\n * Custom label for the login button when user is not authenticated\n */\n loginLabel?: string;\n\n /**\n * Menu configuration overrides\n */\n menuConfig?: Partial<Omit<ActionMenuConfig, \"items\">>;\n\n /**\n * Whether to show a divider before logout (default: true when menuItems provided)\n */\n showLogoutDivider?: boolean;\n\n /**\n * Custom icon to use instead of user avatar (default: IconUser)\n */\n icon?: ReactNode;\n}\n\nconst UserButton = (props: UserButtonProps) => {\n const {\n menuItems = [],\n logoutLabel = \"Sign out\",\n loginLabel,\n menuConfig,\n showLogoutDivider = menuItems.length > 0,\n icon,\n children,\n ...buttonProps\n } = props;\n\n buttonProps.variant ??= \"default\";\n\n const adminUserCtrl = useClient<AdminUserController>();\n const pages = useInject(ReactPageProvider);\n\n const auth = useAuth<{\n username?: string;\n email?: string;\n picture?: string;\n }>();\n\n const isConnected = !!auth.user;\n const isAdmin = isConnected && adminUserCtrl.findUsers.can();\n const userPage = pages.getPages().find((it) => it.name === \"userProfile\");\n const adminPage = pages.getPages().find((it) => it.name === \"adminLayout\");\n const authRouter = useRouter<AuthRouter>();\n\n if (!auth.user) {\n return (\n <ActionButton\n {...buttonProps}\n icon={icon === null ? undefined : (icon ?? IconLogin2)}\n href={authRouter.path(\"login\")}\n >\n {loginLabel ?? children}\n </ActionButton>\n );\n }\n\n const items: ActionMenuItem[] = [];\n\n // Add user info label if available\n if (auth.user.email && auth.user.username) {\n items.push({\n type: \"label\",\n label: auth.user.email,\n });\n }\n\n // Add profile page link if available\n if (userPage && isConnected) {\n items.push({\n label: \"Profile\",\n icon: <IconUser size={ui.sizes.icon.md} />,\n href: authRouter.path(\"userProfile\"),\n });\n }\n\n // Add admin page link if available and user is admin\n if (adminPage && isAdmin) {\n items.push({\n label: \"Admin\",\n icon: <IconSettings size={ui.sizes.icon.md} />,\n href: authRouter.path(\"adminLayout\"),\n });\n }\n\n // Add custom menu items\n items.push(...menuItems);\n\n // Add divider before logout if needed\n if (showLogoutDivider && items.length > 0) {\n items.push({ type: \"divider\" });\n }\n\n // Add logout item\n items.push({\n label: logoutLabel,\n icon: <IconLogout size={ui.sizes.icon.md} />,\n color: \"red\",\n onClick: () => auth.logout(),\n });\n\n // Use leftSection for Avatar (JSX element), icon prop for component types\n const hasAvatar = icon === undefined && auth.user.picture;\n\n return (\n <ActionButton\n {...buttonProps}\n icon={\n hasAvatar ? undefined : icon === null ? undefined : (icon ?? IconUser)\n }\n leftSection={\n hasAvatar ? (\n <Avatar\n src={`/api/files/${auth.user.picture}`}\n size={24}\n radius=\"xl\"\n />\n ) : undefined\n }\n menu={{\n position: \"bottom-end\",\n width: 200,\n ...menuConfig,\n items,\n }}\n >\n {children}\n </ActionButton>\n );\n};\n\nexport default UserButton;\n","import { $context } from \"alepha\";\nimport { AuthRouter } from \"../AuthRouter.ts\";\n\n/**\n * Register Auth UI components and get the AuthRouter instance.\n */\nexport const $uiAuth = () => {\n const { alepha } = $context();\n return alepha.inject(AuthRouter);\n};\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $module } from \"alepha\";\nimport { AlephaReactAuth } from \"alepha/react/auth\";\nimport { AlephaReactI18n } from \"alepha/react/i18n\";\nimport { AuthI18n } from \"./AuthI18n.ts\";\nimport { AuthRouter } from \"./AuthRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./AuthRouter.ts\";\nexport type { UserButtonProps } from \"./components/buttons/UserButton.tsx\";\nexport { default as UserButton } from \"./components/buttons/UserButton.tsx\";\nexport { default as Login } from \"./components/Login.tsx\";\nexport { default as Register } from \"./components/Register.tsx\";\nexport { default as ResetPassword } from \"./components/ResetPassword.tsx\";\nexport { default as VerifyEmail } from \"./components/VerifyEmail.tsx\";\nexport * from \"./primitives/$uiAuth.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Authentication UI components.\n *\n * **Features:**\n * - Login page component\n * - Register page component\n * - Reset password page component\n * - Email verification page component\n * - UserButton for user menu\n *\n * @module alepha.ui.auth\n */\nexport const AlephaUIAuth = $module({\n name: \"alepha.ui.auth\",\n services: [AlephaUI, AlephaReactAuth, AlephaReactI18n, AuthRouter, AuthI18n],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/auth/AuthI18n.ts","../../src/auth/AuthRouter.ts","../../src/auth/components/buttons/UserButton.tsx","../../src/auth/primitives/$uiAuth.ts","../../src/auth/index.ts"],"sourcesContent":["import { $dictionary } from \"alepha/react/i18n\";\n\nexport class AuthI18n {\n en = $dictionary({\n name: \"alepha.ui.auth.en\",\n lazy: () => ({\n default: {\n loginSignIn: \"Sign in\",\n loginContinueWith: \"Continue with $1\",\n loginOr: \"OR\",\n loginCancel: \"Cancel\",\n loginForgotPassword: \"Forgot password?\",\n loginNoAccount: \"Don't have an account?\",\n loginSignUp: \"Sign up\",\n loginUsername: \"Username\",\n loginEmail: \"Email\",\n loginPhone: \"Phone number\",\n loginPassword: \"Password\",\n registerCreateAccount: \"Create account\",\n registerContinueWith: \"Continue with $1\",\n registerOr: \"OR\",\n registerCancel: \"Cancel\",\n registerHaveAccount: \"Already have an account?\",\n registerSignIn: \"Sign in\",\n registerUsername: \"Username\",\n registerEmail: \"Email\",\n registerPhone: \"Phone number\",\n registerPassword: \"Password\",\n registerConfirmPassword: \"Confirm password\",\n registerDisabled:\n \"Registration is not available. Please contact your administrator.\",\n registerBackToSignIn: \"Back to sign in\",\n registerVerifyTitle: \"Verify your account\",\n registerVerifyDescription:\n \"Please enter the verification code(s) sent to you.\",\n registerEmailCode: \"Email verification code\",\n registerPhoneCode: \"Phone verification code\",\n registerVerifySubmit: \"Complete Registration\",\n registerVerifyBack: \"Back to registration\",\n resetPasswordTitle: \"Reset password\",\n resetPasswordEmail: \"Email\",\n resetPasswordEnterEmail:\n \"Enter your email address to reset your password\",\n resetPasswordSendCode: \"Send verification code\",\n resetPasswordCodeSent: \"We've sent a verification code to your email.\",\n resetPasswordEnterCode: \"Enter the 6-digit code\",\n resetPasswordResendCode: \"Resend code\",\n resetPasswordEnterNewPassword: \"Create your new password\",\n resetPasswordNewPassword: \"New password\",\n resetPasswordConfirmPassword: \"Confirm password\",\n resetPasswordSetNewPassword: \"Set new password\",\n resetPasswordSuccess: \"Your password has been reset successfully.\",\n resetPasswordBackToSignIn: \"Back to sign in\",\n resetPasswordCancel: \"Cancel\",\n resetPasswordDisabled:\n \"Password reset is not available. Please contact your administrator.\",\n verifyEmailTitle: \"Email Verification\",\n verifyEmailVerifying: \"Verifying your email...\",\n verifyEmailPleaseWait:\n \"Please wait while we verify your email address.\",\n verifyEmailSuccess: \"Your email has been verified successfully.\",\n verifyEmailFailed:\n \"Failed to verify your email. The link may have expired or is invalid.\",\n verifyEmailMissingParams:\n \"Invalid verification link. Email and token are required.\",\n verifyEmailSignIn: \"Sign in to your account\",\n verifyEmailBackToSignIn: \"Back to sign in\",\n },\n }),\n });\n\n fr = $dictionary({\n lazy: () => ({\n default: {\n loginSignIn: \"Se connecter\",\n loginContinueWith: \"Continuer avec $1\",\n loginOr: \"OU\",\n loginCancel: \"Annuler\",\n loginForgotPassword: \"Mot de passe oublié ?\",\n loginNoAccount: \"Vous n'avez pas de compte ?\",\n loginSignUp: \"S'inscrire\",\n loginUsername: \"Nom d'utilisateur\",\n loginEmail: \"E-mail\",\n loginPhone: \"Numéro de téléphone\",\n loginPassword: \"Mot de passe\",\n registerCreateAccount: \"Créer un compte\",\n registerContinueWith: \"Continuer avec $1\",\n registerOr: \"OU\",\n registerCancel: \"Annuler\",\n registerHaveAccount: \"Vous avez déjà un compte ?\",\n registerSignIn: \"Se connecter\",\n registerUsername: \"Nom d'utilisateur\",\n registerEmail: \"E-mail\",\n registerPhone: \"Numéro de téléphone\",\n registerPassword: \"Mot de passe\",\n registerConfirmPassword: \"Confirmer le mot de passe\",\n registerDisabled:\n \"L'inscription n'est pas disponible. Veuillez contacter votre administrateur.\",\n registerBackToSignIn: \"Retour à la connexion\",\n registerVerifyTitle: \"Vérifiez votre compte\",\n registerVerifyDescription:\n \"Veuillez entrer le(s) code(s) de vérification qui vous ont été envoyés.\",\n registerEmailCode: \"Code de vérification par e-mail\",\n registerPhoneCode: \"Code de vérification par téléphone\",\n registerVerifySubmit: \"Terminer l'inscription\",\n registerVerifyBack: \"Retour à l'inscription\",\n resetPasswordTitle: \"Réinitialiser le mot de passe\",\n resetPasswordEmail: \"E-mail\",\n resetPasswordEnterEmail:\n \"Entrez votre adresse e-mail pour réinitialiser votre mot de passe\",\n resetPasswordSendCode: \"Envoyer le code de vérification\",\n resetPasswordCodeSent:\n \"Nous avons envoyé un code de vérification à votre e-mail.\",\n resetPasswordEnterCode: \"Entrez le code à 6 chiffres\",\n resetPasswordResendCode: \"Renvoyer le code\",\n resetPasswordEnterNewPassword: \"Créez votre nouveau mot de passe\",\n resetPasswordNewPassword: \"Nouveau mot de passe\",\n resetPasswordConfirmPassword: \"Confirmer le mot de passe\",\n resetPasswordSetNewPassword: \"Définir le nouveau mot de passe\",\n resetPasswordSuccess:\n \"Votre mot de passe a été réinitialisé avec succès.\",\n resetPasswordBackToSignIn: \"Retour à la connexion\",\n resetPasswordCancel: \"Annuler\",\n resetPasswordDisabled:\n \"La réinitialisation du mot de passe n'est pas disponible. Veuillez contacter votre administrateur.\",\n verifyEmailTitle: \"Vérification de l'e-mail\",\n verifyEmailVerifying: \"Vérification de votre e-mail...\",\n verifyEmailPleaseWait:\n \"Veuillez patienter pendant que nous vérifions votre adresse e-mail.\",\n verifyEmailSuccess: \"Votre e-mail a été vérifié avec succès.\",\n verifyEmailFailed:\n \"Échec de la vérification de votre e-mail. Le lien a peut-être expiré ou est invalide.\",\n verifyEmailMissingParams:\n \"Lien de vérification invalide. L'e-mail et le jeton sont requis.\",\n verifyEmailSignIn: \"Se connecter à votre compte\",\n verifyEmailBackToSignIn: \"Retour à la connexion\",\n },\n }),\n });\n}\n","import {\n IconLogin2,\n IconLogout2,\n IconMailCheck,\n IconPasswordUser,\n IconUser,\n IconUserPlus,\n} from \"@tabler/icons-react\";\nimport { $inject, AlephaError, t } from \"alepha\";\nimport type { RealmController } from \"alepha/api/users\";\nimport { ReactAuth } from \"alepha/react/auth\";\nimport { $page, Redirection } from \"alepha/react/router\";\nimport { $client } from \"alepha/server/links\";\n\n/**\n * Schema for realm query parameter used across auth pages.\n */\nconst realmQuerySchema = t.object({\n r: t.optional(t.string({ description: \"Redirect URL after authentication\" })),\n realm: t.optional(\n t.string({ description: \"User realm name for multi-tenant auth\" }),\n ),\n});\n\nexport class AuthRouter {\n protected readonly realmClient = $client<RealmController>();\n protected readonly auth = $inject(ReactAuth);\n\n authLayout = $page({\n label: \"Auth\",\n path: \"/auth\",\n lazy: () => import(\"./components/AuthLayout.tsx\"),\n children: () => [\n this.login,\n this.register,\n this.resetPassword,\n this.verifyEmail,\n this.profile,\n ],\n });\n\n login = $page({\n icon: IconLogin2,\n label: \"Sign In\",\n description: \"Sign in to your account\",\n path: \"/login\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/Login.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n register = $page({\n icon: IconUserPlus,\n label: \"Register\",\n description: \"Create a new account\",\n path: \"/register\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/Register.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n resetPassword = $page({\n icon: IconPasswordUser,\n label: \"Reset Password\",\n description: \"Reset your account password\",\n path: \"/reset-password\",\n schema: {\n query: realmQuerySchema,\n },\n lazy: () => import(\"./components/ResetPassword.tsx\"),\n loader: async ({ query, user }) => {\n if (user) {\n throw new Redirection(query.r || \"/\");\n }\n return {\n realmConfig: await this.loadRealmConfig(query.realm),\n };\n },\n });\n\n verifyEmail = $page({\n icon: IconMailCheck,\n label: \"Verify Email\",\n description: \"Verify your email address\",\n path: \"/verify-email\",\n schema: {\n query: t.object({\n email: t.optional(t.string()),\n token: t.optional(t.string()),\n }),\n },\n lazy: () => import(\"./components/VerifyEmail.tsx\"),\n });\n\n logout = $page({\n icon: IconLogout2,\n label: \"Sign Out\",\n description: \"Sign out of your account\",\n path: \"/logout\",\n component: () => null,\n loader: () => {\n this.auth.logout();\n return {};\n },\n });\n\n profile = $page({\n name: \"userProfile\",\n icon: IconUser,\n label: \"Profile\",\n description: \"View your profile\",\n path: \"/profile\",\n can: () => !!this.auth.user,\n lazy: () => import(\"./components/Profile.tsx\"),\n });\n\n protected async loadRealmConfig(realmName?: string) {\n try {\n return await this.realmClient.getRealmConfig({\n query: { realmName },\n });\n } catch (e) {\n if (e instanceof AlephaError) {\n throw new AlephaError(\n \"Missing Realm Configuration - Did you forget to add '$realm()' to your application?\",\n e,\n );\n }\n throw e;\n }\n }\n}\n","import {\n ActionButton,\n type ActionMenuConfig,\n type ActionMenuItem,\n type ActionProps,\n ui,\n} from \"@alepha/ui\";\nimport { Avatar } from \"@mantine/core\";\nimport {\n IconLogin2,\n IconLogout,\n IconSettings,\n IconUser,\n} from \"@tabler/icons-react\";\nimport type { AdminUserController } from \"alepha/api/users\";\nimport { useClient, useInject } from \"alepha/react\";\nimport { useAuth } from \"alepha/react/auth\";\nimport { ReactPageProvider, useRouter } from \"alepha/react/router\";\nimport type { ReactNode } from \"react\";\nimport type { AuthRouter } from \"../../AuthRouter.ts\";\n\nexport interface UserButtonProps\n extends Omit<ActionProps, \"menu\" | \"icon\" | \"onClick\"> {\n /**\n * Additional menu items to display before the logout option\n */\n menuItems?: ActionMenuItem[];\n\n /**\n * Custom logout label (default: \"Sign out\")\n */\n logoutLabel?: string;\n\n /**\n * Custom label for the login button when user is not authenticated\n */\n loginLabel?: string;\n\n /**\n * Menu configuration overrides\n */\n menuConfig?: Partial<Omit<ActionMenuConfig, \"items\">>;\n\n /**\n * Custom icon to use instead of user avatar (default: IconUser)\n */\n icon?: ReactNode;\n\n /**\n * If true, the profile link will not be shown in the menu even if a userProfile page exists and the user is authenticated.\n */\n skipProfile?: boolean;\n}\n\nconst UserButton = (props: UserButtonProps) => {\n const {\n menuItems = [],\n logoutLabel = \"Sign out\",\n loginLabel,\n menuConfig,\n icon,\n skipProfile = false,\n children,\n ...buttonProps\n } = props;\n\n buttonProps.variant ??= \"default\";\n\n const adminUserCtrl = useClient<AdminUserController>();\n const pages = useInject(ReactPageProvider);\n\n const auth = useAuth<{\n username?: string;\n email?: string;\n picture?: string;\n }>();\n\n const isConnected = !!auth.user;\n const isAdmin = isConnected && adminUserCtrl.findUsers.can();\n const userPage = pages.getPages().find((it) => it.name === \"userProfile\");\n const adminPage = pages.getPages().find((it) => it.name === \"adminLayout\");\n const authRouter = useRouter<AuthRouter>();\n\n if (!auth.user) {\n return (\n <ActionButton\n {...buttonProps}\n icon={icon === null ? undefined : (icon ?? IconLogin2)}\n href={authRouter.path(\"login\")}\n >\n {loginLabel ?? children}\n </ActionButton>\n );\n }\n\n const items: ActionMenuItem[] = [];\n\n // Add user info label if available\n if (auth.user.email && auth.user.username) {\n items.push({\n type: \"label\",\n label: auth.user.email,\n });\n }\n\n // Add profile page link if available\n if (userPage && isConnected && !skipProfile) {\n items.push({\n label: \"Profile\",\n icon: <IconUser size={ui.sizes.icon.sm} />,\n href: authRouter.path(\"userProfile\"),\n });\n }\n\n // Add admin page link if available and user is admin\n if (adminPage && isAdmin) {\n items.push({\n label: \"Admin\",\n icon: <IconSettings size={ui.sizes.icon.sm} />,\n href: authRouter.path(\"adminLayout\"),\n });\n }\n\n // Add custom menu items\n items.push(...menuItems);\n\n // Add divider before logout if needed\n if (items.length > 0) {\n items.push({ type: \"divider\" });\n }\n\n // Add logout item\n items.push({\n label: logoutLabel,\n icon: <IconLogout size={ui.sizes.icon.sm} />,\n color: \"red\",\n onClick: () => auth.logout(),\n });\n\n // Use leftSection for Avatar (JSX element), icon prop for component types\n const hasAvatar = icon === undefined && auth.user.picture;\n\n return (\n <ActionButton\n {...buttonProps}\n icon={\n hasAvatar ? undefined : icon === null ? undefined : (icon ?? IconUser)\n }\n px={8}\n menu={{\n menuProps: {\n withArrow: true,\n arrowSize: 12,\n },\n position: \"bottom\",\n width: 200,\n ...menuConfig,\n items,\n }}\n >\n {hasAvatar ? (\n <Avatar src={`/api/files/${auth.user.picture}`} size={24} radius=\"xl\" />\n ) : undefined}\n </ActionButton>\n );\n};\n\nexport default UserButton;\n","import { $context } from \"alepha\";\nimport { AuthRouter } from \"../AuthRouter.ts\";\n\n/**\n * Register Auth UI components and get the AuthRouter instance.\n */\nexport const $uiAuth = () => {\n const { alepha } = $context();\n return alepha.inject(AuthRouter);\n};\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $module } from \"alepha\";\nimport { AlephaReactAuth } from \"alepha/react/auth\";\nimport { AlephaReactI18n } from \"alepha/react/i18n\";\nimport { AuthI18n } from \"./AuthI18n.ts\";\nimport { AuthRouter } from \"./AuthRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./AuthRouter.ts\";\nexport type { UserButtonProps } from \"./components/buttons/UserButton.tsx\";\nexport { default as UserButton } from \"./components/buttons/UserButton.tsx\";\nexport { default as Login } from \"./components/Login.tsx\";\nexport { default as Register } from \"./components/Register.tsx\";\nexport { default as ResetPassword } from \"./components/ResetPassword.tsx\";\nexport type { VerifyEmailStep } from \"./components/VerifyEmail.tsx\";\nexport { default as VerifyEmail } from \"./components/VerifyEmail.tsx\";\nexport * from \"./primitives/$uiAuth.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Authentication UI components.\n *\n * **Features:**\n * - Login page component\n * - Register page component\n * - Reset password page component\n * - Email verification page component\n * - UserButton for user menu\n *\n * @module alepha.ui.auth\n */\nexport const AlephaUIAuth = $module({\n name: \"alepha.ui.auth\",\n services: [AlephaUI, AlephaReactAuth, AlephaReactI18n, AuthRouter, AuthI18n],\n});\n"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ //#endregion
13
+ export { __exportAll as t };