@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,5 +1,10 @@
1
- import { ActionButton, type ActionProps, isComponentType } from "@alepha/ui";
2
- import { Badge, Divider, Flex } from "@mantine/core";
1
+ import {
2
+ ActionButton,
3
+ type ActionProps,
4
+ Flex,
5
+ isComponentType,
6
+ } from "@alepha/ui";
7
+ import { Badge, Divider } from "@mantine/core";
3
8
  import {
4
9
  IconClipboard,
5
10
  IconDownload,
@@ -78,7 +83,7 @@ const DataTableToolbar = <T extends object, Filters extends TObject>({
78
83
 
79
84
  const exportableColumns = useCallback(() => {
80
85
  return Object.entries(columns).filter(
81
- ([key, col]) => !col.actions && columnVisibility[key] !== false,
86
+ ([key]) => columnVisibility[key] !== false,
82
87
  );
83
88
  }, [columns, columnVisibility]);
84
89
 
@@ -130,7 +135,7 @@ const DataTableToolbar = <T extends object, Filters extends TObject>({
130
135
  };
131
136
 
132
137
  return (
133
- <Flex p="xs" style={{ borderBottom: "1px solid var(--alepha-border)" }}>
138
+ <Flex p="xs">
134
139
  <Flex gap={4} align="center">
135
140
  {filters && (
136
141
  <FilterPicker
@@ -146,7 +151,7 @@ const DataTableToolbar = <T extends object, Filters extends TObject>({
146
151
  />
147
152
  {withExport && (
148
153
  <ActionButton
149
- variant="subtle"
154
+ variant={"minimal"}
150
155
  icon={IconDownload}
151
156
  menu={{
152
157
  items: [
@@ -172,7 +177,7 @@ const DataTableToolbar = <T extends object, Filters extends TObject>({
172
177
  {selectedItems.length} selected
173
178
  </Badge>
174
179
  <ActionButton
175
- variant="subtle"
180
+ variant={"minimal"}
176
181
  size="compact-sm"
177
182
  icon={IconX}
178
183
  onClick={onClearSelection}
@@ -209,7 +214,11 @@ const DataTableToolbar = <T extends object, Filters extends TObject>({
209
214
  props
210
215
  ),
211
216
  )}
212
- <ActionButton variant="subtle" icon={IconRefresh} onClick={onRefresh} />
217
+ <ActionButton
218
+ variant={"minimal"}
219
+ icon={IconRefresh}
220
+ onClick={onRefresh}
221
+ />
213
222
  </Flex>
214
223
  </Flex>
215
224
  );
@@ -74,7 +74,7 @@ const FilterPicker = ({
74
74
  <Popover.Target>
75
75
  <div>
76
76
  <ActionButton
77
- variant="subtle"
77
+ variant={"minimal"}
78
78
  icon={IconFilter}
79
79
  onClick={() => setOpened((o) => !o)}
80
80
  />
@@ -102,14 +102,14 @@ const FilterPicker = ({
102
102
  <Flex gap={4}>
103
103
  <ActionButton
104
104
  size="compact-xs"
105
- variant="subtle"
105
+ variant={"minimal"}
106
106
  onClick={handleShowAll}
107
107
  >
108
108
  All
109
109
  </ActionButton>
110
110
  <ActionButton
111
111
  size="compact-xs"
112
- variant="subtle"
112
+ variant={"minimal"}
113
113
  onClick={handleHideAll}
114
114
  >
115
115
  None
@@ -6,6 +6,7 @@ export type {
6
6
  DataTableColumn,
7
7
  DataTableColumnContext,
8
8
  DataTableProps,
9
+ DataTableRowAction,
9
10
  DataTableSubmitContext,
10
11
  FilterVisibility,
11
12
  MaybePage,
@@ -24,7 +24,16 @@ export const DEFAULT_MAX_VISIBLE_COLUMNS = 8;
24
24
  // -----------------------------------------------------------------------------
25
25
 
26
26
  export type DataTableRowAction = ActionProps & {
27
+ /**
28
+ * Label for the action shown in the row menu.
29
+ */
30
+ label?: string;
27
31
  visible?: boolean;
32
+ /**
33
+ * When true, skip the automatic table refresh after a successful onClick.
34
+ * By default, the table re-fetches data after every row action completes.
35
+ */
36
+ skipRefresh?: boolean;
28
37
  };
29
38
 
30
39
  // -----------------------------------------------------------------------------
@@ -62,19 +71,15 @@ export interface DataTableColumn<T extends object, Filters extends TObject> {
62
71
  * Follows Alepha sort convention: 'field' for ASC, '-field' for DESC.
63
72
  */
64
73
  sortKey?: string;
65
- /**
66
- * Row-level actions rendered as ActionButtons.
67
- * Defaults: variant="subtle", size="xs", preventDefault=true.
68
- * Use `visible` on each action to conditionally show/hide.
69
- */
70
- actions?: (
71
- item: T,
72
- ctx: DataTableColumnContext<Filters>,
73
- ) => DataTableRowAction[];
74
74
  /**
75
75
  * Hide this column by default. Users can show it via the column picker.
76
76
  */
77
77
  defaultHidden?: boolean;
78
+ /**
79
+ * Wrap the cell content with an ActionButton. Defaults to `variant="unstyled"`.
80
+ * Receives the row item to generate per-row action props (e.g., dynamic href).
81
+ */
82
+ action?: (item: T) => ActionProps;
78
83
  }
79
84
 
80
85
  // -----------------------------------------------------------------------------
@@ -141,6 +146,20 @@ export interface DataTableProps<T extends object, Filters extends TObject> {
141
146
  form: FormModel<Filters>,
142
147
  ) => void;
143
148
 
149
+ /**
150
+ * Skip auto-submit when filter values change.
151
+ * When true, filters update form state but do not trigger a refetch.
152
+ * The user must manually refresh (e.g. via the toolbar refresh button).
153
+ */
154
+ skipSubmitOnChange?: boolean;
155
+
156
+ /**
157
+ * Debounce delay in milliseconds for filter auto-submit.
158
+ * Defaults to 300ms. Set to 0 to disable debounce.
159
+ * Ignored when skipSubmitOnChange is true.
160
+ */
161
+ debounce?: number;
162
+
144
163
  /**
145
164
  * Optional filters to apply to the data.
146
165
  */
@@ -188,6 +207,15 @@ export interface DataTableProps<T extends object, Filters extends TObject> {
188
207
 
189
208
  actions?: Array<ActionProps & { label?: ReactNode }>;
190
209
 
210
+ /**
211
+ * Row-level actions rendered as a 3-dot menu on each row.
212
+ * Use `visible` on each action to conditionally show/hide.
213
+ */
214
+ rowActions?: (
215
+ item: T,
216
+ ctx: DataTableColumnContext<Filters>,
217
+ ) => DataTableRowAction[];
218
+
191
219
  /**
192
220
  * Enable infinity scroll mode. When true, pagination controls are hidden and new items are loaded automatically when scrolling to the bottom.
193
221
  */
@@ -202,6 +230,11 @@ export interface DataTableProps<T extends object, Filters extends TObject> {
202
230
  // Mantine Props
203
231
  // -------------------------------------------------------------------------------------------------------------------
204
232
 
233
+ /**
234
+ * Label shown when the table has no results. Defaults to "No results".
235
+ */
236
+ emptyLabel?: string;
237
+
205
238
  /**
206
239
  * Props to pass to the Mantine Table component.
207
240
  */
@@ -31,8 +31,8 @@ export const getDefaultIcon = (params: {
31
31
  isArray?: boolean;
32
32
  size?: IconSize;
33
33
  }): ReactElement => {
34
- const { type, format, name, isEnum, isArray, size = "sm" } = params;
35
- const iconSize = ui.sizes.icon[size];
34
+ const { type, format, name, isEnum, isArray, size = "xs" } = params;
35
+ const iconSize = ui.sizes.icon[size] - 4; // TODO: better mapping
36
36
 
37
37
  // Format-based icons (highest priority)
38
38
  if (format) {
@@ -121,7 +121,7 @@ export class DemoRouter {
121
121
  icon: IconForms,
122
122
  path: "/form",
123
123
  label: "Form",
124
- children: () => [this.demoTypeForm],
124
+ children: () => [this.demoTypeForm, this.demoControlSelect],
125
125
  });
126
126
 
127
127
  demoTypeForm = $page({
@@ -131,6 +131,13 @@ export class DemoRouter {
131
131
  lazy: () => import("./components/core/DemoTypeForm.tsx"),
132
132
  });
133
133
 
134
+ demoControlSelect = $page({
135
+ icon: IconForms,
136
+ path: "/control-select",
137
+ label: "ControlSelect",
138
+ lazy: () => import("./components/core/DemoControlSelect.tsx"),
139
+ });
140
+
134
141
  // Table Components
135
142
  demoTable = $page({
136
143
  icon: IconTable,
@@ -13,12 +13,14 @@ const DemoLayout = () => {
13
13
  return (
14
14
  <AlephaMantineProvider>
15
15
  <DashboardShell
16
+ fill
16
17
  appShellProps={{
17
18
  withBorder: false,
18
19
  bg: ui.colors.background,
19
20
  }}
20
21
  appShellHeaderProps={{
21
22
  bg: "transparent",
23
+ style: { backdropFilter: "blur(10px)" },
22
24
  }}
23
25
  appBarProps={{
24
26
  items: [
@@ -58,7 +60,10 @@ const DemoLayout = () => {
58
60
  },
59
61
  {
60
62
  ...router.node("demoForm"),
61
- children: [router.node("demoTypeForm")],
63
+ children: [
64
+ router.node("demoTypeForm"),
65
+ router.node("demoControlSelect"),
66
+ ],
62
67
  },
63
68
  {
64
69
  ...router.node("demoTable"),
@@ -70,7 +75,12 @@ const DemoLayout = () => {
70
75
  },
71
76
  {
72
77
  ...router.node("demoAuth"),
73
- children: [router.node("demoLogin"), router.node("demoRegister")],
78
+ children: [
79
+ router.node("demoLogin"),
80
+ router.node("demoRegister"),
81
+ router.node("demoResetPassword"),
82
+ router.node("demoVerifyEmail"),
83
+ ],
74
84
  },
75
85
  {
76
86
  position: "bottom",
@@ -1,9 +1,14 @@
1
1
  import { Login } from "@alepha/ui/auth";
2
2
  import { t } from "alepha";
3
- import type { RealmConfig } from "alepha/api/users";
3
+ import type { FieldRequirement, RealmConfig } from "alepha/api/users";
4
4
  import Showcase from "../shared/Showcase.tsx";
5
5
 
6
6
  const showcaseSchema = t.object({
7
+ variant: t.string({
8
+ title: "Variant",
9
+ default: "card",
10
+ enum: ["card", "split"],
11
+ }),
7
12
  showCredentials: t.boolean({
8
13
  title: "Credentials",
9
14
  default: true,
@@ -19,20 +24,20 @@ const showcaseSchema = t.object({
19
24
  default: false,
20
25
  $control: { switch: true },
21
26
  }),
22
- usernameEnabled: t.boolean({
23
- title: "Username Login",
24
- default: true,
25
- $control: { switch: true },
27
+ username: t.string({
28
+ title: "Username",
29
+ default: "optional",
30
+ enum: ["none", "optional", "required"],
26
31
  }),
27
- emailEnabled: t.boolean({
28
- title: "Email Login",
29
- default: true,
30
- $control: { switch: true },
32
+ email: t.string({
33
+ title: "Email",
34
+ default: "optional",
35
+ enum: ["none", "optional", "required"],
31
36
  }),
32
- phoneEnabled: t.boolean({
33
- title: "Phone Login",
34
- default: false,
35
- $control: { switch: true },
37
+ phoneNumber: t.string({
38
+ title: "Phone Number",
39
+ default: "none",
40
+ enum: ["none", "optional", "required"],
36
41
  }),
37
42
  registrationAllowed: t.boolean({
38
43
  title: "Show Sign Up",
@@ -55,9 +60,9 @@ const buildRealmConfig = (props: {
55
60
  showCredentials: boolean;
56
61
  showGoogleOAuth: boolean;
57
62
  showGithubOAuth: boolean;
58
- usernameEnabled: boolean;
59
- emailEnabled: boolean;
60
- phoneEnabled: boolean;
63
+ username: string;
64
+ email: string;
65
+ phoneNumber: string;
61
66
  registrationAllowed: boolean;
62
67
  resetPasswordAllowed: boolean;
63
68
  showBranding: boolean;
@@ -82,17 +87,13 @@ const buildRealmConfig = (props: {
82
87
  description: props.showBranding ? "Sign in to continue" : undefined,
83
88
  logoUrl: undefined,
84
89
  registrationAllowed: props.registrationAllowed,
85
- emailEnabled: props.emailEnabled,
86
- emailRequired: false,
87
- usernameEnabled: props.usernameEnabled,
90
+ email: props.email as FieldRequirement,
91
+ username: props.username as FieldRequirement,
88
92
  usernameRegExp: "^[a-zA-Z0-9_]{3,30}$",
89
- usernameRequired: false,
90
- phoneEnabled: props.phoneEnabled,
91
- phoneRequired: false,
93
+ phoneNumber: props.phoneNumber as FieldRequirement,
92
94
  verifyEmailRequired: false,
93
95
  verifyPhoneRequired: false,
94
- firstNameLastNameEnabled: false,
95
- firstNameLastNameRequired: false,
96
+ firstNameLastName: "none" as FieldRequirement,
96
97
  resetPasswordAllowed: props.resetPasswordAllowed,
97
98
  adminEmails: [],
98
99
  adminUsernames: [],
@@ -113,19 +114,25 @@ const DemoLogin = () => {
113
114
  title="Login"
114
115
  schema={showcaseSchema}
115
116
  initialValues={{
117
+ variant: "card",
116
118
  showCredentials: true,
117
119
  showGoogleOAuth: true,
118
120
  showGithubOAuth: false,
119
- usernameEnabled: true,
120
- emailEnabled: true,
121
- phoneEnabled: false,
121
+ username: "optional",
122
+ email: "optional",
123
+ phoneNumber: "none",
122
124
  registrationAllowed: true,
123
125
  resetPasswordAllowed: true,
124
126
  showBranding: true,
125
127
  }}
126
128
  columns={1}
127
129
  >
128
- {(props) => <Login realmConfig={buildRealmConfig(props)} />}
130
+ {(props) => (
131
+ <Login
132
+ realmConfig={buildRealmConfig(props)}
133
+ variant={props.variant as "card" | "split"}
134
+ />
135
+ )}
129
136
  </Showcase>
130
137
  );
131
138
  };
@@ -1,9 +1,14 @@
1
1
  import { Register } from "@alepha/ui/auth";
2
2
  import { t } from "alepha";
3
- import type { RealmConfig } from "alepha/api/users";
3
+ import type { FieldRequirement, RealmConfig } from "alepha/api/users";
4
4
  import Showcase from "../shared/Showcase.tsx";
5
5
 
6
6
  const showcaseSchema = t.object({
7
+ variant: t.string({
8
+ title: "Variant",
9
+ default: "card",
10
+ enum: ["card", "split"],
11
+ }),
7
12
  showCredentials: t.boolean({
8
13
  title: "Credentials",
9
14
  default: true,
@@ -19,35 +24,20 @@ const showcaseSchema = t.object({
19
24
  default: false,
20
25
  $control: { switch: true },
21
26
  }),
22
- usernameEnabled: t.boolean({
23
- title: "Username Field",
24
- default: true,
25
- $control: { switch: true },
26
- }),
27
- usernameRequired: t.boolean({
28
- title: "Username Required",
29
- default: false,
30
- $control: { switch: true },
31
- }),
32
- emailEnabled: t.boolean({
33
- title: "Email Field",
34
- default: true,
35
- $control: { switch: true },
36
- }),
37
- emailRequired: t.boolean({
38
- title: "Email Required",
39
- default: true,
40
- $control: { switch: true },
27
+ username: t.string({
28
+ title: "Username",
29
+ default: "none",
30
+ enum: ["none", "optional", "required"],
41
31
  }),
42
- phoneEnabled: t.boolean({
43
- title: "Phone Field",
44
- default: false,
45
- $control: { switch: true },
32
+ email: t.string({
33
+ title: "Email",
34
+ default: "required",
35
+ enum: ["none", "optional", "required"],
46
36
  }),
47
- phoneRequired: t.boolean({
48
- title: "Phone Required",
49
- default: false,
50
- $control: { switch: true },
37
+ phoneNumber: t.string({
38
+ title: "Phone Number",
39
+ default: "none",
40
+ enum: ["none", "optional", "required"],
51
41
  }),
52
42
  registrationAllowed: t.boolean({
53
43
  title: "Registration Allowed",
@@ -65,12 +55,9 @@ const buildRealmConfig = (props: {
65
55
  showCredentials: boolean;
66
56
  showGoogleOAuth: boolean;
67
57
  showGithubOAuth: boolean;
68
- usernameEnabled: boolean;
69
- usernameRequired: boolean;
70
- emailEnabled: boolean;
71
- emailRequired: boolean;
72
- phoneEnabled: boolean;
73
- phoneRequired: boolean;
58
+ username: string;
59
+ email: string;
60
+ phoneNumber: string;
74
61
  registrationAllowed: boolean;
75
62
  showBranding: boolean;
76
63
  }): RealmConfig => {
@@ -94,17 +81,13 @@ const buildRealmConfig = (props: {
94
81
  description: props.showBranding ? "Create your account" : undefined,
95
82
  logoUrl: undefined,
96
83
  registrationAllowed: props.registrationAllowed,
97
- emailEnabled: props.emailEnabled,
98
- emailRequired: props.emailRequired,
99
- usernameEnabled: props.usernameEnabled,
100
- usernameRequired: props.usernameRequired,
84
+ email: props.email as FieldRequirement,
85
+ username: props.username as FieldRequirement,
101
86
  usernameRegExp: "^[a-zA-Z0-9_]{3,30}$",
102
- phoneEnabled: props.phoneEnabled,
103
- phoneRequired: props.phoneRequired,
87
+ phoneNumber: props.phoneNumber as FieldRequirement,
104
88
  verifyEmailRequired: false,
105
89
  verifyPhoneRequired: false,
106
- firstNameLastNameEnabled: false,
107
- firstNameLastNameRequired: false,
90
+ firstNameLastName: "none" as FieldRequirement,
108
91
  resetPasswordAllowed: true,
109
92
  adminEmails: [],
110
93
  adminUsernames: [],
@@ -125,21 +108,24 @@ const DemoRegister = () => {
125
108
  title="Register"
126
109
  schema={showcaseSchema}
127
110
  initialValues={{
111
+ variant: "card",
128
112
  showCredentials: true,
129
113
  showGoogleOAuth: true,
130
114
  showGithubOAuth: false,
131
- usernameEnabled: true,
132
- usernameRequired: false,
133
- emailEnabled: true,
134
- emailRequired: true,
135
- phoneEnabled: false,
136
- phoneRequired: false,
115
+ username: "none",
116
+ email: "required",
117
+ phoneNumber: "none",
137
118
  registrationAllowed: true,
138
119
  showBranding: true,
139
120
  }}
140
121
  columns={1}
141
122
  >
142
- {(props) => <Register realmConfig={buildRealmConfig(props)} />}
123
+ {(props) => (
124
+ <Register
125
+ realmConfig={buildRealmConfig(props)}
126
+ variant={props.variant as "card" | "split"}
127
+ />
128
+ )}
143
129
  </Showcase>
144
130
  );
145
131
  };
@@ -1,6 +1,6 @@
1
1
  import { ResetPassword } from "@alepha/ui/auth";
2
2
  import { t } from "alepha";
3
- import type { RealmConfig } from "alepha/api/users";
3
+ import type { FieldRequirement, RealmConfig } from "alepha/api/users";
4
4
  import Showcase from "../shared/Showcase.tsx";
5
5
 
6
6
  const showcaseSchema = t.object({
@@ -28,17 +28,13 @@ const buildRealmConfig = (props: {
28
28
  description: props.showBranding ? "Reset your password" : undefined,
29
29
  logoUrl: undefined,
30
30
  registrationAllowed: true,
31
- emailEnabled: true,
32
- emailRequired: true,
33
- usernameEnabled: false,
34
- usernameRequired: false,
31
+ email: "required" as FieldRequirement,
32
+ username: "none" as FieldRequirement,
35
33
  usernameRegExp: "^[a-zA-Z0-9_]{3,30}$",
36
- phoneEnabled: false,
37
- phoneRequired: false,
34
+ phoneNumber: "none" as FieldRequirement,
38
35
  verifyEmailRequired: false,
39
36
  verifyPhoneRequired: false,
40
- firstNameLastNameEnabled: false,
41
- firstNameLastNameRequired: false,
37
+ firstNameLastName: "none" as FieldRequirement,
42
38
  resetPasswordAllowed: props.resetPasswordAllowed,
43
39
  adminEmails: [],
44
40
  adminUsernames: [],
@@ -1,12 +1,13 @@
1
+ import type { VerifyEmailStep } from "@alepha/ui/auth";
1
2
  import { VerifyEmail } from "@alepha/ui/auth";
2
3
  import { t } from "alepha";
3
4
  import Showcase from "../shared/Showcase.tsx";
4
5
 
5
6
  const showcaseSchema = t.object({
6
- placeholder: t.boolean({
7
- title: "Demo Mode",
8
- default: true,
9
- $control: { switch: true },
7
+ step: t.string({
8
+ title: "Step",
9
+ default: "success",
10
+ enum: ["verifying", "success", "error"],
10
11
  }),
11
12
  });
12
13
 
@@ -16,11 +17,11 @@ const DemoVerifyEmail = () => {
16
17
  title="VerifyEmail"
17
18
  schema={showcaseSchema}
18
19
  initialValues={{
19
- placeholder: true,
20
+ step: "success",
20
21
  }}
21
22
  columns={1}
22
23
  >
23
- {() => <VerifyEmail />}
24
+ {(values) => <VerifyEmail step={values.step as VerifyEmailStep} />}
24
25
  </Showcase>
25
26
  );
26
27
  };