@alepha/ui 0.18.1 → 0.18.3

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 (280) hide show
  1. package/dist/admin/{AdminApiKeys-C-6_Q-lH.js → AdminApiKeys-Dy_k-4Vd.js} +17 -38
  2. package/dist/admin/AdminApiKeys-Dy_k-4Vd.js.map +1 -0
  3. package/dist/admin/{AdminAudits-Bgbf04hO.js → AdminAudits-CKiFMSSU.js} +23 -19
  4. package/dist/admin/AdminAudits-CKiFMSSU.js.map +1 -0
  5. package/dist/admin/AdminDashboard-PhC_dZqo.js +67 -0
  6. package/dist/admin/AdminDashboard-PhC_dZqo.js.map +1 -0
  7. package/dist/admin/{AdminFiles-B9a7G3cY.js → AdminFiles-DFTjijGp.js} +3 -7
  8. package/dist/admin/AdminFiles-DFTjijGp.js.map +1 -0
  9. package/dist/admin/{AdminJobDashboard-DaTwf5OY.js → AdminJobDashboard-BL8gGPDp.js} +2 -2
  10. package/dist/admin/{AdminJobDashboard-DaTwf5OY.js.map → AdminJobDashboard-BL8gGPDp.js.map} +1 -1
  11. package/dist/admin/{AdminJobExecutions-B9cek5dl.js → AdminJobExecutions-D9E-CS-U.js} +24 -36
  12. package/dist/admin/AdminJobExecutions-D9E-CS-U.js.map +1 -0
  13. package/dist/admin/{AdminJobRegistry-DFgV3oqx.js → AdminJobRegistry-Ci9ue1zC.js} +10 -18
  14. package/dist/admin/AdminJobRegistry-Ci9ue1zC.js.map +1 -0
  15. package/dist/admin/AdminLayout-I6TlUMPc.js +61 -0
  16. package/dist/admin/AdminLayout-I6TlUMPc.js.map +1 -0
  17. package/dist/admin/AdminNotifications-ZPHCYrv7.js +542 -0
  18. package/dist/admin/AdminNotifications-ZPHCYrv7.js.map +1 -0
  19. package/dist/admin/{AdminParameters-DHw9ATgl.js → AdminParameters-CqgvhRsb.js} +120 -105
  20. package/dist/admin/AdminParameters-CqgvhRsb.js.map +1 -0
  21. package/dist/admin/{AdminSessions-BhGJPI3z.js → AdminSessions-Bz5NRuoW.js} +48 -53
  22. package/dist/admin/AdminSessions-Bz5NRuoW.js.map +1 -0
  23. package/dist/admin/{AdminUserLayout-BdC4Te8m.js → AdminUserLayout-lXT6I0Qq.js} +14 -8
  24. package/dist/admin/AdminUserLayout-lXT6I0Qq.js.map +1 -0
  25. package/dist/admin/{AdminUserProfile-DAt23fqY.js → AdminUserProfile-vFBLoJ3h.js} +3 -3
  26. package/dist/admin/{AdminUserProfile-DAt23fqY.js.map → AdminUserProfile-vFBLoJ3h.js.map} +1 -1
  27. package/dist/admin/{AdminUserSessions-1uzcx02z.js → AdminUserSessions-CT_YDim0.js} +33 -35
  28. package/dist/admin/AdminUserSessions-CT_YDim0.js.map +1 -0
  29. package/dist/admin/AdminUsers-D1UfGya9.js +206 -0
  30. package/dist/admin/AdminUsers-D1UfGya9.js.map +1 -0
  31. package/dist/admin/{AuthLayout-DFJvCvzw.js → AuthLayout-_frhdgOO.js} +2 -2
  32. package/dist/admin/{AuthLayout-DFJvCvzw.js.map → AuthLayout-_frhdgOO.js.map} +1 -1
  33. package/dist/admin/{IconGoogle-CSQLPYwX.js → IconGoogle-Ch1m3Uzl.js} +1 -1
  34. package/dist/admin/{IconGoogle-CSQLPYwX.js.map → IconGoogle-Ch1m3Uzl.js.map} +1 -1
  35. package/dist/admin/Login-xtNmQtGh.js +275 -0
  36. package/dist/admin/Login-xtNmQtGh.js.map +1 -0
  37. package/dist/{auth/Profile-BMX_Ar_s.js → admin/Profile-_AtPUwAP.js} +31 -27
  38. package/dist/admin/Profile-_AtPUwAP.js.map +1 -0
  39. package/dist/admin/{Register-Cs10l8vX.js → Register-JcCjHUUn.js} +199 -143
  40. package/dist/admin/Register-JcCjHUUn.js.map +1 -0
  41. package/dist/admin/{ResetPassword-BwDdfkGH.js → ResetPassword-CwGBPLJO.js} +7 -7
  42. package/dist/admin/ResetPassword-CwGBPLJO.js.map +1 -0
  43. package/dist/admin/{VerifyEmail-DfXHAiQl.js → VerifyEmail-hNxWejWf.js} +23 -8
  44. package/dist/admin/VerifyEmail-hNxWejWf.js.map +1 -0
  45. package/dist/admin/{core-2xoLiT0o.js → core-CYaRQ8O-.js} +2082 -688
  46. package/dist/admin/core-CYaRQ8O-.js.map +1 -0
  47. package/dist/admin/index.d.ts +112 -48
  48. package/dist/admin/index.d.ts.map +1 -1
  49. package/dist/admin/index.js +467 -69
  50. package/dist/admin/index.js.map +1 -1
  51. package/dist/auth/{AuthLayout-CAE1pX9s.js → AuthLayout-AvLlcLjS.js} +2 -2
  52. package/dist/auth/{AuthLayout-CAE1pX9s.js.map → AuthLayout-AvLlcLjS.js.map} +1 -1
  53. package/dist/auth/Login-BA1E8IZl.js +275 -0
  54. package/dist/auth/Login-BA1E8IZl.js.map +1 -0
  55. package/dist/{admin/Profile-B-c9pCPf.js → auth/Profile-YcWdeuFz.js} +31 -27
  56. package/dist/auth/Profile-YcWdeuFz.js.map +1 -0
  57. package/dist/auth/{Register-6hi_cpfF.js → Register-CPhEO5MG.js} +198 -142
  58. package/dist/auth/Register-CPhEO5MG.js.map +1 -0
  59. package/dist/{demo/ResetPassword-DWN0lzr5.js → auth/ResetPassword-DCtGcneA.js} +7 -7
  60. package/dist/auth/ResetPassword-DCtGcneA.js.map +1 -0
  61. package/dist/{demo/VerifyEmail-DZWL72K4.js → auth/VerifyEmail-DkH7NBfn.js} +23 -8
  62. package/dist/auth/VerifyEmail-DkH7NBfn.js.map +1 -0
  63. package/dist/auth/{core-niW0sFLv.js → core-D5jIAVF2.js} +1385 -329
  64. package/dist/auth/core-D5jIAVF2.js.map +1 -0
  65. package/dist/auth/index.d.ts +105 -49
  66. package/dist/auth/index.d.ts.map +1 -1
  67. package/dist/auth/index.js +29 -26
  68. package/dist/auth/index.js.map +1 -1
  69. package/dist/core/index.d.ts +210 -74
  70. package/dist/core/index.d.ts.map +1 -1
  71. package/dist/core/index.js +2247 -834
  72. package/dist/core/index.js.map +1 -1
  73. package/dist/demo/{AuthLayout-jLa0aKsI.js → AuthLayout-Brri4A-L.js} +2 -2
  74. package/dist/demo/{AuthLayout-jLa0aKsI.js.map → AuthLayout-Brri4A-L.js.map} +1 -1
  75. package/dist/demo/DemoButton-wiCxZZ_L.js +182 -0
  76. package/dist/demo/DemoButton-wiCxZZ_L.js.map +1 -0
  77. package/dist/demo/DemoControlSelect-D7ILObVg.js +305 -0
  78. package/dist/demo/DemoControlSelect-D7ILObVg.js.map +1 -0
  79. package/dist/demo/DemoDataTable-DZ5Y8pFX.js +362 -0
  80. package/dist/demo/DemoDataTable-DZ5Y8pFX.js.map +1 -0
  81. package/dist/demo/{DemoDialog-4ItHLf9t.js → DemoDialog-CUWdLHim.js} +2 -2
  82. package/dist/demo/{DemoDialog-4ItHLf9t.js.map → DemoDialog-CUWdLHim.js.map} +1 -1
  83. package/dist/demo/{DemoFlex-EtVq8QfX.js → DemoFlex-a8OhMMvq.js} +3 -3
  84. package/dist/demo/{DemoFlex-EtVq8QfX.js.map → DemoFlex-a8OhMMvq.js.map} +1 -1
  85. package/dist/demo/{DemoHeading-BS-vGfkI.js → DemoHeading-C13OVDfS.js} +3 -3
  86. package/dist/demo/{DemoHeading-BS-vGfkI.js.map → DemoHeading-C13OVDfS.js.map} +1 -1
  87. package/dist/demo/{DemoHome-Clbn8AmS.js → DemoHome-D_De3UiT.js} +2 -2
  88. package/dist/demo/{DemoHome-Clbn8AmS.js.map → DemoHome-D_De3UiT.js.map} +1 -1
  89. package/dist/demo/{DemoJsonViewer-DkIX_ky2.js → DemoJsonViewer-B50s9aGM.js} +3 -3
  90. package/dist/demo/{DemoJsonViewer-DkIX_ky2.js.map → DemoJsonViewer-B50s9aGM.js.map} +1 -1
  91. package/dist/demo/{DemoLayout-C56xb5EE.js → DemoLayout-CHU8WTwO.js} +14 -5
  92. package/dist/demo/DemoLayout-CHU8WTwO.js.map +1 -0
  93. package/dist/demo/{DemoLogin-BZwpicOS.js → DemoLogin-BBlrWpml.js} +49 -32
  94. package/dist/demo/DemoLogin-BBlrWpml.js.map +1 -0
  95. package/dist/demo/{DemoRegister-C7_qc4MJ.js → DemoRegister-BuNE3_-f.js} +49 -50
  96. package/dist/demo/DemoRegister-BuNE3_-f.js.map +1 -0
  97. package/dist/demo/{DemoResetPassword-BI1Ct4Dw.js → DemoResetPassword-D_IjjjOJ.js} +12 -16
  98. package/dist/demo/DemoResetPassword-D_IjjjOJ.js.map +1 -0
  99. package/dist/demo/{DemoSidebar-CcBo4ltC.js → DemoSidebar-Giy2HRBD.js} +3 -3
  100. package/dist/demo/{DemoSidebar-CcBo4ltC.js.map → DemoSidebar-Giy2HRBD.js.map} +1 -1
  101. package/dist/demo/{DemoText-CzXuUn3g.js → DemoText-ubcw-vog.js} +3 -3
  102. package/dist/demo/{DemoText-CzXuUn3g.js.map → DemoText-ubcw-vog.js.map} +1 -1
  103. package/dist/demo/{DemoToast-BgHDhWrX.js → DemoToast-9die_dYT.js} +2 -2
  104. package/dist/demo/{DemoToast-BgHDhWrX.js.map → DemoToast-9die_dYT.js.map} +1 -1
  105. package/dist/demo/{DemoTypeForm-DDzWoMSV.js → DemoTypeForm-D_d6OVKL.js} +8 -4
  106. package/dist/demo/DemoTypeForm-D_d6OVKL.js.map +1 -0
  107. package/dist/demo/DemoVerifyEmail-B43KlF4F.js +34 -0
  108. package/dist/demo/DemoVerifyEmail-B43KlF4F.js.map +1 -0
  109. package/dist/demo/Login-C12N4oGs.js +275 -0
  110. package/dist/demo/Login-C12N4oGs.js.map +1 -0
  111. package/dist/demo/{Profile-CWqti7FB.js → Profile-DS5q4vOh.js} +31 -27
  112. package/dist/demo/Profile-DS5q4vOh.js.map +1 -0
  113. package/dist/demo/{Register-a70LPgs2.js → Register-B4hLBeEv.js} +198 -142
  114. package/dist/demo/Register-B4hLBeEv.js.map +1 -0
  115. package/dist/{auth/ResetPassword-CqfTk1FI.js → demo/ResetPassword-D8g9ha1N.js} +7 -7
  116. package/dist/demo/ResetPassword-D8g9ha1N.js.map +1 -0
  117. package/dist/demo/{Showcase-Dq3MISpd.js → Showcase-D6Fxt4X4.js} +64 -65
  118. package/dist/demo/Showcase-D6Fxt4X4.js.map +1 -0
  119. package/dist/{auth/VerifyEmail-nWiSTMjF.js → demo/VerifyEmail-BjDo0cZA.js} +23 -8
  120. package/dist/demo/VerifyEmail-BjDo0cZA.js.map +1 -0
  121. package/dist/demo/{auth-d6n3xbug.js → auth-ByVTreDl.js} +8 -8
  122. package/dist/demo/{auth-d6n3xbug.js.map → auth-ByVTreDl.js.map} +1 -1
  123. package/dist/demo/{core-RCUw1Q-a.js → core-DFgB3yU4.js} +2182 -756
  124. package/dist/demo/core-DFgB3yU4.js.map +1 -0
  125. package/dist/demo/index.d.ts +1 -0
  126. package/dist/demo/index.d.ts.map +1 -1
  127. package/dist/demo/index.js +24 -18
  128. package/dist/demo/index.js.map +1 -1
  129. package/package.json +7 -7
  130. package/src/admin/{AdminRouter.ts → AdminRouter.tsx} +150 -18
  131. package/src/admin/components/AdminDashboard.tsx +52 -0
  132. package/src/admin/components/AdminLayout.tsx +32 -40
  133. package/src/admin/components/audits/AdminAudits.tsx +22 -16
  134. package/src/admin/components/files/AdminFiles.tsx +1 -6
  135. package/src/admin/components/jobs/AdminJobExecutions.tsx +33 -39
  136. package/src/admin/components/jobs/AdminJobRegistry.tsx +9 -18
  137. package/src/admin/components/keys/AdminApiKeys.tsx +23 -41
  138. package/src/admin/components/notifications/AdminNotifications.tsx +519 -0
  139. package/src/admin/components/parameters/ParameterDetails.tsx +12 -270
  140. package/src/admin/components/parameters/ParameterDetailsConfigForm.tsx +238 -0
  141. package/src/admin/components/parameters/ParameterDetailsLoading.tsx +24 -0
  142. package/src/admin/components/parameters/ParameterHistory.tsx +10 -11
  143. package/src/admin/components/parameters/ParameterTree.tsx +28 -184
  144. package/src/admin/components/parameters/ParameterTreeNode.tsx +151 -0
  145. package/src/admin/components/sessions/AdminSessions.tsx +71 -71
  146. package/src/admin/components/shared/AdminResourceHeader.tsx +2 -25
  147. package/src/admin/components/shared/AdminResourceHeaderMenuItem.tsx +37 -0
  148. package/src/admin/components/shared/AdminResourceTabs.tsx +2 -26
  149. package/src/admin/components/shared/AdminResourceTabsItem.tsx +36 -0
  150. package/src/admin/components/users/AdminUserSessions.tsx +33 -31
  151. package/src/admin/components/users/AdminUsers.tsx +184 -72
  152. package/src/admin/index.ts +2 -2
  153. package/src/admin/primitives/$uiAdmin.ts +1 -1
  154. package/src/auth/components/Login.tsx +188 -121
  155. package/src/auth/components/Profile.tsx +1 -22
  156. package/src/auth/components/ProfileField.tsx +39 -0
  157. package/src/auth/components/Register.tsx +215 -158
  158. package/src/auth/components/ResetPassword.tsx +7 -11
  159. package/src/auth/components/VerifyEmail.tsx +35 -10
  160. package/src/auth/components/buttons/UserButton.tsx +20 -24
  161. package/src/auth/index.ts +1 -0
  162. package/src/core/atoms/alephaSidebarAtom.ts +1 -1
  163. package/src/core/atoms/alephaThemeListAtom.ts +14 -1
  164. package/src/core/atoms/alephaThemeOverridesAtom.ts +17 -0
  165. package/src/core/atoms/themes/editorial.ts +184 -0
  166. package/src/core/atoms/themes/monochrome.ts +197 -0
  167. package/src/core/atoms/themes/rosePine.ts +208 -0
  168. package/src/core/atoms/themes/softBrutalism.ts +221 -0
  169. package/src/core/atoms/themes/terminal.ts +186 -0
  170. package/src/core/components/Flex.tsx +101 -1
  171. package/src/core/components/Text.tsx +1 -1
  172. package/src/core/components/buttons/ActionButton.tsx +109 -87
  173. package/src/core/components/buttons/DarkModeButton.tsx +3 -3
  174. package/src/core/components/buttons/LanguageButton.tsx +1 -1
  175. package/src/core/components/buttons/OmnibarButton.tsx +1 -2
  176. package/src/core/components/buttons/ThemeButton.tsx +40 -11
  177. package/src/core/components/buttons/ThemeExpertModal.tsx +184 -0
  178. package/src/core/components/buttons/ToggleSidebarButton.tsx +1 -2
  179. package/src/core/components/data/DetailDrawer.tsx +102 -96
  180. package/src/core/components/data/DetailList.tsx +2 -1
  181. package/src/core/components/layout/AppBar.tsx +10 -0
  182. package/src/core/components/layout/Breadcrumb.tsx +3 -6
  183. package/src/core/components/layout/DashboardShell.tsx +28 -11
  184. package/src/core/components/layout/Sidebar.tsx +18 -235
  185. package/src/core/components/layout/SidebarCollapsedItem.tsx +91 -0
  186. package/src/core/components/layout/SidebarItem.tsx +146 -0
  187. package/src/core/components/layout/index.ts +3 -1
  188. package/src/core/constants/ui.ts +5 -5
  189. package/src/core/form/components/Control.tsx +31 -29
  190. package/src/core/form/components/ControlArray.tsx +13 -39
  191. package/src/core/form/components/ControlDate.tsx +10 -21
  192. package/src/core/form/components/ControlNumber.tsx +4 -33
  193. package/src/core/form/components/ControlQueryBuilder.tsx +12 -175
  194. package/src/core/form/components/ControlQueryBuilderHelp.tsx +165 -0
  195. package/src/core/form/components/ControlSelect.browser.spec.tsx +343 -0
  196. package/src/core/form/components/ControlSelect.tsx +294 -92
  197. package/src/core/form/components/TypeForm.browser.spec.tsx +3 -3
  198. package/src/core/form/components/TypeForm.tsx +5 -2
  199. package/src/core/form/index.ts +8 -1
  200. package/src/core/form/utils/parseInput.ts +7 -3
  201. package/src/core/hooks/useTheme.ts +26 -3
  202. package/src/core/index.ts +9 -2
  203. package/src/core/interfaces/AlephaTheme.ts +2 -0
  204. package/src/core/json/components/JsonViewer.tsx +103 -319
  205. package/src/core/json/components/JsonViewerCopyButton.tsx +46 -0
  206. package/src/core/json/components/JsonViewerRowNode.tsx +120 -0
  207. package/src/core/json/components/JsonViewerShared.ts +76 -0
  208. package/src/core/providers/ThemeProvider.ts +108 -8
  209. package/src/core/services/DialogService.tsx +24 -3
  210. package/src/core/styles.css +33 -20
  211. package/src/core/table/components/ColumnPicker.tsx +3 -3
  212. package/src/core/table/components/DataTable.tsx +233 -143
  213. package/src/core/table/components/DataTableFilters.tsx +6 -16
  214. package/src/core/table/components/DataTablePagination.tsx +58 -29
  215. package/src/core/table/components/DataTableToolbar.tsx +16 -7
  216. package/src/core/table/components/FilterPicker.tsx +3 -3
  217. package/src/core/table/index.ts +1 -0
  218. package/src/core/table/interfaces/types.ts +42 -9
  219. package/src/core/utils/icons.tsx +2 -2
  220. package/src/demo/DemoRouter.ts +8 -1
  221. package/src/demo/components/DemoLayout.tsx +12 -2
  222. package/src/demo/components/auth/DemoLogin.tsx +35 -28
  223. package/src/demo/components/auth/DemoRegister.tsx +35 -49
  224. package/src/demo/components/auth/DemoResetPassword.tsx +5 -9
  225. package/src/demo/components/auth/DemoVerifyEmail.tsx +7 -6
  226. package/src/demo/components/core/DemoButton.tsx +123 -103
  227. package/src/demo/components/core/DemoControlSelect.tsx +325 -0
  228. package/src/demo/components/core/DemoDataTable.tsx +255 -241
  229. package/src/demo/components/core/DemoTypeForm.tsx +7 -2
  230. package/src/demo/components/shared/MacWindow.tsx +5 -11
  231. package/src/demo/components/shared/Showcase.tsx +28 -42
  232. package/dist/admin/AdminApiKeys-C-6_Q-lH.js.map +0 -1
  233. package/dist/admin/AdminAudits-Bgbf04hO.js.map +0 -1
  234. package/dist/admin/AdminFiles-B9a7G3cY.js.map +0 -1
  235. package/dist/admin/AdminJobExecutions-B9cek5dl.js.map +0 -1
  236. package/dist/admin/AdminJobRegistry-DFgV3oqx.js.map +0 -1
  237. package/dist/admin/AdminLayout-DHsvWxVB.js +0 -70
  238. package/dist/admin/AdminLayout-DHsvWxVB.js.map +0 -1
  239. package/dist/admin/AdminParameters-DHw9ATgl.js.map +0 -1
  240. package/dist/admin/AdminSessions-BhGJPI3z.js.map +0 -1
  241. package/dist/admin/AdminUserLayout-BdC4Te8m.js.map +0 -1
  242. package/dist/admin/AdminUserSessions-1uzcx02z.js.map +0 -1
  243. package/dist/admin/AdminUsers-C85c3eiQ.js +0 -121
  244. package/dist/admin/AdminUsers-C85c3eiQ.js.map +0 -1
  245. package/dist/admin/Login-BGheURrg.js +0 -219
  246. package/dist/admin/Login-BGheURrg.js.map +0 -1
  247. package/dist/admin/Profile-B-c9pCPf.js.map +0 -1
  248. package/dist/admin/Register-Cs10l8vX.js.map +0 -1
  249. package/dist/admin/ResetPassword-BwDdfkGH.js.map +0 -1
  250. package/dist/admin/VerifyEmail-DfXHAiQl.js.map +0 -1
  251. package/dist/admin/auth-Dr0Cf8I7.js +0 -319
  252. package/dist/admin/auth-Dr0Cf8I7.js.map +0 -1
  253. package/dist/admin/core-2xoLiT0o.js.map +0 -1
  254. package/dist/auth/Login-Denw_UGy.js +0 -219
  255. package/dist/auth/Login-Denw_UGy.js.map +0 -1
  256. package/dist/auth/Profile-BMX_Ar_s.js.map +0 -1
  257. package/dist/auth/Register-6hi_cpfF.js.map +0 -1
  258. package/dist/auth/ResetPassword-CqfTk1FI.js.map +0 -1
  259. package/dist/auth/VerifyEmail-nWiSTMjF.js.map +0 -1
  260. package/dist/auth/core-niW0sFLv.js.map +0 -1
  261. package/dist/demo/DemoButton-BmaWZVwf.js +0 -178
  262. package/dist/demo/DemoButton-BmaWZVwf.js.map +0 -1
  263. package/dist/demo/DemoDataTable-Z9xyV221.js +0 -362
  264. package/dist/demo/DemoDataTable-Z9xyV221.js.map +0 -1
  265. package/dist/demo/DemoLayout-C56xb5EE.js.map +0 -1
  266. package/dist/demo/DemoLogin-BZwpicOS.js.map +0 -1
  267. package/dist/demo/DemoRegister-C7_qc4MJ.js.map +0 -1
  268. package/dist/demo/DemoResetPassword-BI1Ct4Dw.js.map +0 -1
  269. package/dist/demo/DemoTypeForm-DDzWoMSV.js.map +0 -1
  270. package/dist/demo/DemoVerifyEmail-C_Irdnov.js +0 -30
  271. package/dist/demo/DemoVerifyEmail-C_Irdnov.js.map +0 -1
  272. package/dist/demo/Login-hSOU3jZc.js +0 -219
  273. package/dist/demo/Login-hSOU3jZc.js.map +0 -1
  274. package/dist/demo/Profile-CWqti7FB.js.map +0 -1
  275. package/dist/demo/Register-a70LPgs2.js.map +0 -1
  276. package/dist/demo/ResetPassword-DWN0lzr5.js.map +0 -1
  277. package/dist/demo/Showcase-Dq3MISpd.js.map +0 -1
  278. package/dist/demo/VerifyEmail-DZWL72K4.js.map +0 -1
  279. package/dist/demo/core-RCUw1Q-a.js.map +0 -1
  280. package/src/demo/styles.css +0 -0
@@ -1,6 +1,6 @@
1
1
  import { ActionButton, Control, capitalize } from "@alepha/ui";
2
2
  import { Card, Flex, Image, Text, Title } from "@mantine/core";
3
- import { IconLock, IconUser } from "@tabler/icons-react";
3
+ import { IconLock, IconPhoto, IconUser } from "@tabler/icons-react";
4
4
  import { AlephaError, t } from "alepha";
5
5
  import type { RealmConfig } from "alepha/api/users";
6
6
  import { useAuth } from "alepha/react/auth";
@@ -10,17 +10,20 @@ import { useRouter } from "alepha/react/router";
10
10
  import { HttpError } from "alepha/server";
11
11
  import { useMemo } from "react";
12
12
  import type { AuthI18n } from "../AuthI18n.ts";
13
- import type { AuthRouter } from "../AuthRouter.ts";
14
13
  import IconGithub from "./icons/IconGithub.tsx";
15
14
  import IconGoogle from "./icons/IconGoogle.tsx";
16
15
 
17
16
  export interface LoginProps {
18
17
  realmConfig: RealmConfig;
18
+ registerPath?: string;
19
+ resetPasswordPath?: string;
20
+ variant?: "card" | "split";
21
+ image?: string;
19
22
  }
20
23
 
21
24
  const Login = (props: LoginProps) => {
22
25
  const auth = useAuth();
23
- const router = useRouter<AuthRouter>();
26
+ const router = useRouter();
24
27
  const { tr } = useI18n<AuthI18n, "en">();
25
28
  const redirect = router.query.r || "/";
26
29
 
@@ -33,9 +36,9 @@ const Login = (props: LoginProps) => {
33
36
  // Determine what login methods are available
34
37
  const loginMethods = useMemo(() => {
35
38
  const methods = [];
36
- if (settings.usernameEnabled !== false) methods.push("username");
37
- if (settings.emailEnabled !== false) methods.push("email");
38
- if (settings.phoneEnabled === true) methods.push("phone");
39
+ if (settings.username !== "none") methods.push("username");
40
+ if (settings.email !== "none") methods.push("email");
41
+ if (settings.phoneNumber !== "none") methods.push("phone");
39
42
  return methods;
40
43
  }, [settings]);
41
44
 
@@ -113,129 +116,193 @@ const Login = (props: LoginProps) => {
113
116
 
114
117
  const showOrDivider = credentialsProvider && externalLoginMethods.length > 0;
115
118
 
116
- return (
117
- <Flex flex={1} justify={"center"} align={"center"}>
118
- <Flex direction="column" gap={"sm"} w={360}>
119
- <Card withBorder p={"lg"} bg={"var(--alepha-elevated)"}>
120
- <Flex direction="column" gap={"md"}>
121
- {/* Realm branding */}
122
- {(settings.logoUrl ||
123
- settings.displayName ||
124
- settings.description) && (
125
- <Flex direction="column" gap={"xs"} align="center" mb="xs">
126
- {settings.logoUrl && (
127
- <Image
128
- src={settings.logoUrl}
129
- alt={settings.displayName || props.realmConfig.realmName}
130
- h={48}
131
- w="auto"
132
- fit="contain"
133
- />
134
- )}
135
- {settings.displayName && (
136
- <Title order={4} ta="center">
137
- {settings.displayName}
138
- </Title>
139
- )}
140
- {settings.description && (
141
- <Text size="sm" c="dimmed" ta="center">
142
- {settings.description}
143
- </Text>
144
- )}
145
- </Flex>
146
- )}
119
+ const realmQuery = props.realmConfig.realmName
120
+ ? `?realm=${encodeURIComponent(props.realmConfig.realmName)}`
121
+ : "";
147
122
 
148
- {/* Credentials login form */}
149
- {credentialsProvider && (
150
- <>
151
- <form {...form.props}>
152
- <Flex direction="column" flex={1} gap={"md"}>
153
- <Control
154
- title={identifierTitle}
155
- input={form.input.identifier}
156
- icon={IconUser}
157
- text={{
158
- autoComplete: getAutoCompleteType(),
159
- }}
160
- />
161
- <Control
162
- title={tr("loginPassword")}
163
- input={form.input.password}
164
- icon={IconLock}
165
- password={{
166
- autoComplete: "current-password",
167
- }}
168
- />
169
- <ActionButton variant={"filled"} form={form}>
170
- {tr("loginSignIn")}
171
- </ActionButton>
172
- </Flex>
173
- </form>
174
- {settings.resetPasswordAllowed && (
175
- <Text size="sm" ta="center">
176
- <ActionButton
177
- href={router.path("resetPassword", {
178
- query: { realm: props.realmConfig.realmName },
179
- })}
180
- anchorProps={{ inherit: true }}
181
- >
182
- {tr("loginForgotPassword")}
183
- </ActionButton>
184
- </Text>
185
- )}
186
- </>
187
- )}
123
+ const formContent = (
124
+ <Flex direction="column" gap={"md"}>
125
+ {/* Realm branding */}
126
+ {(settings.logoUrl || settings.displayName || settings.description) && (
127
+ <Flex direction="column" gap={"xs"} align="center" mb="xs">
128
+ {settings.logoUrl && (
129
+ <Image
130
+ src={settings.logoUrl}
131
+ alt={settings.displayName || props.realmConfig.realmName}
132
+ h={48}
133
+ w="auto"
134
+ fit="contain"
135
+ />
136
+ )}
137
+ {settings.displayName && (
138
+ <Title order={4} ta="center">
139
+ {settings.displayName}
140
+ </Title>
141
+ )}
142
+ {settings.description && (
143
+ <Text size="sm" c="dimmed" ta="center">
144
+ {settings.description}
145
+ </Text>
146
+ )}
147
+ </Flex>
148
+ )}
188
149
 
189
- {/* OR divider - only when both credentials AND external methods exist */}
190
- {showOrDivider && (
191
- <Flex align="center" justify="center" gap={"md"}>
192
- <Flex flex={1} h={"1px"} bg={"var(--alepha-border)"} />
193
- <Text size="xs" c={"dimmed"}>
194
- {tr("loginOr")}
195
- </Text>
196
- <Flex flex={1} h={"1px"} bg={"var(--alepha-border)"} />
197
- </Flex>
198
- )}
150
+ {/* Credentials login form */}
151
+ {credentialsProvider && (
152
+ <>
153
+ <form {...form.props}>
154
+ <Flex direction="column" flex={1} gap={"md"}>
155
+ <Control
156
+ label={identifierTitle}
157
+ input={form.input.identifier}
158
+ icon={IconUser}
159
+ text={{
160
+ autoComplete: getAutoCompleteType(),
161
+ }}
162
+ />
163
+ <Control
164
+ label={tr("loginPassword")}
165
+ input={form.input.password}
166
+ icon={IconLock}
167
+ password={{
168
+ autoComplete: "current-password",
169
+ }}
170
+ />
171
+ <ActionButton variant={"filled"} form={form}>
172
+ {tr("loginSignIn")}
173
+ </ActionButton>
174
+ </Flex>
175
+ </form>
176
+ {settings.resetPasswordAllowed && (
177
+ <Text size="sm" ta="center">
178
+ <ActionButton
179
+ href={`${props.resetPasswordPath ?? "/auth/reset-password"}${realmQuery}`}
180
+ anchorProps={{ inherit: true }}
181
+ >
182
+ {tr("loginForgotPassword")}
183
+ </ActionButton>
184
+ </Text>
185
+ )}
186
+ </>
187
+ )}
199
188
 
200
- {/* External login methods */}
201
- {externalLoginMethods.length > 0 && (
202
- <Flex direction="column" gap={"sm"}>
203
- {externalLoginMethods.map((method) => (
204
- <ActionButton
205
- variant={"default"}
206
- key={method.type}
207
- leftSection={leftSection(method.name.toLowerCase())}
208
- onClick={() =>
209
- auth.login(method.name, {
210
- redirect,
211
- realm: props.realmConfig.realmName,
212
- })
213
- }
214
- >
215
- {tr("loginContinueWith", {
216
- args: [capitalize(method.name)],
217
- })}
218
- </ActionButton>
219
- ))}
220
- </Flex>
221
- )}
189
+ {/* OR divider - only when both credentials AND external methods exist */}
190
+ {showOrDivider && (
191
+ <Flex align="center" justify="center" gap={"md"}>
192
+ <Flex flex={1} h={"1px"} bg={"var(--alepha-border)"} />
193
+ <Text size="xs" c={"dimmed"}>
194
+ {tr("loginOr")}
195
+ </Text>
196
+ <Flex flex={1} h={"1px"} bg={"var(--alepha-border)"} />
197
+ </Flex>
198
+ )}
199
+
200
+ {/* External login methods */}
201
+ {externalLoginMethods.length > 0 && (
202
+ <Flex direction="column" gap={"sm"}>
203
+ {externalLoginMethods.map((method) => (
204
+ <ActionButton
205
+ variant={"default"}
206
+ key={method.type}
207
+ leftSection={leftSection(method.name.toLowerCase())}
208
+ onClick={() =>
209
+ auth.login(method.name, {
210
+ redirect,
211
+ realm: props.realmConfig.realmName,
212
+ })
213
+ }
214
+ >
215
+ {tr("loginContinueWith", {
216
+ args: [capitalize(method.name)],
217
+ })}
218
+ </ActionButton>
219
+ ))}
220
+ </Flex>
221
+ )}
222
222
 
223
- {/* Registration link */}
224
- {settings.registrationAllowed && (
225
- <Text size="sm" ta="center">
226
- {tr("loginNoAccount")}{" "}
227
- <ActionButton
228
- href={router.path("register", {
229
- query: { realm: props.realmConfig.realmName },
230
- })}
231
- anchorProps={{ inherit: true }}
223
+ {/* Registration link */}
224
+ {settings.registrationAllowed && (
225
+ <Text size="sm" ta="center">
226
+ {tr("loginNoAccount")}{" "}
227
+ <ActionButton
228
+ href={`${props.registerPath ?? "/auth/register"}${realmQuery}`}
229
+ anchorProps={{ inherit: true }}
230
+ >
231
+ {tr("loginSignUp")}
232
+ </ActionButton>
233
+ </Text>
234
+ )}
235
+ </Flex>
236
+ );
237
+
238
+ if (props.variant === "split") {
239
+ return (
240
+ <Flex flex={1} justify={"center"} align={"center"}>
241
+ <Card
242
+ withBorder
243
+ p={0}
244
+ w={720}
245
+ bg={"var(--alepha-elevated)"}
246
+ style={{ overflow: "hidden" }}
247
+ >
248
+ <Flex mih={480}>
249
+ {props.image ? (
250
+ <Flex
251
+ flex={1}
252
+ style={{
253
+ backgroundImage: `url(${props.image})`,
254
+ backgroundSize: "cover",
255
+ backgroundPosition: "center",
256
+ }}
257
+ />
258
+ ) : (
259
+ <Flex
260
+ flex={1}
261
+ justify="center"
262
+ align="center"
263
+ bg="var(--mantine-color-gray-light)"
264
+ style={{
265
+ borderRight: "1px solid var(--mantine-color-default-border)",
266
+ }}
267
+ >
268
+ <Flex
269
+ justify="center"
270
+ align="center"
271
+ w={120}
272
+ h={80}
273
+ style={{
274
+ border: "2px dashed var(--mantine-color-default-border)",
275
+ borderRadius: "var(--mantine-radius-sm)",
276
+ }}
232
277
  >
233
- {tr("loginSignUp")}
234
- </ActionButton>
235
- </Text>
278
+ <IconPhoto size={32} style={{ opacity: 0.3 }} />
279
+ </Flex>
280
+ </Flex>
236
281
  )}
282
+ <Flex
283
+ flex={1}
284
+ direction="column"
285
+ gap={"md"}
286
+ p={"xl"}
287
+ justify={"center"}
288
+ >
289
+ {formContent}
290
+ <ActionButton variant={"subtle"} href={"/"}>
291
+ {tr("loginCancel")}
292
+ </ActionButton>
293
+ </Flex>
237
294
  </Flex>
238
295
  </Card>
296
+ </Flex>
297
+ );
298
+ }
299
+
300
+ return (
301
+ <Flex flex={1} justify={"center"} align={"center"}>
302
+ <Flex direction="column" gap={"sm"} w={360}>
303
+ <Card withBorder p={"lg"} bg={"var(--alepha-elevated)"}>
304
+ {formContent}
305
+ </Card>
239
306
  <ActionButton variant={"subtle"} href={"/"}>
240
307
  {tr("loginCancel")}
241
308
  </ActionButton>
@@ -10,6 +10,7 @@ import {
10
10
  import { useAuth } from "alepha/react/auth";
11
11
  import { useRouter } from "alepha/react/router";
12
12
  import type { AuthRouter } from "../AuthRouter.ts";
13
+ import ProfileField from "./ProfileField.tsx";
13
14
 
14
15
  const Profile = () => {
15
16
  const auth = useAuth();
@@ -123,26 +124,4 @@ const Profile = () => {
123
124
  );
124
125
  };
125
126
 
126
- interface ProfileFieldProps {
127
- icon: React.ReactNode;
128
- label: string;
129
- children: React.ReactNode;
130
- }
131
-
132
- const ProfileField = ({ icon, label, children }: ProfileFieldProps) => {
133
- return (
134
- <Flex gap="sm" align="flex-start">
135
- <Flex c="dimmed" mt={2}>
136
- {icon}
137
- </Flex>
138
- <Flex direction="column" gap={2} flex={1}>
139
- <Text size="xs" c="dimmed" tt="uppercase" fw={500}>
140
- {label}
141
- </Text>
142
- <Text size="sm">{children}</Text>
143
- </Flex>
144
- </Flex>
145
- );
146
- };
147
-
148
127
  export default Profile;
@@ -0,0 +1,39 @@
1
+ import { Flex, Text } from "@mantine/core";
2
+ import type { ReactNode } from "react";
3
+
4
+ export interface ProfileFieldProps {
5
+ /**
6
+ * Icon to display
7
+ */
8
+ icon: ReactNode;
9
+
10
+ /**
11
+ * Field label
12
+ */
13
+ label: string;
14
+
15
+ /**
16
+ * Field content
17
+ */
18
+ children: ReactNode;
19
+ }
20
+
21
+ const ProfileField = (props: ProfileFieldProps) => {
22
+ const { icon, label, children } = props;
23
+
24
+ return (
25
+ <Flex gap="sm" align="flex-start">
26
+ <Flex c="dimmed" mt={2}>
27
+ {icon}
28
+ </Flex>
29
+ <Flex direction="column" gap={2} flex={1}>
30
+ <Text size="xs" c="dimmed" tt="uppercase" fw={500}>
31
+ {label}
32
+ </Text>
33
+ <Text size="sm">{children}</Text>
34
+ </Flex>
35
+ </Flex>
36
+ );
37
+ };
38
+
39
+ export default ProfileField;