@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
@@ -16,6 +16,7 @@ declare class DemoRouter {
16
16
  demoToast: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
17
17
  demoForm: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
18
18
  demoTypeForm: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
19
+ demoControlSelect: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
19
20
  demoTable: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
20
21
  demoDataTable: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
21
22
  demoJson: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/demo/DemoRouter.ts","../../src/demo/primitives/$uiDemo.ts","../../src/demo/index.ts"],"mappings":";;;;cAwBa,UAAA;EACX,UAAA,EAAU,oBAAA,CAAA,aAAA,CADW,oBAAA,CACX,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAgBV,QAAA,EAAQ,oBAAA,CAAA,aAAA,CAhBE,oBAAA,CAgBF,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQR,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARA,oBAAA,CAQA,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAYR,QAAA,EAAQ,oBAAA,CAAA,aAAA,CAZA,oBAAA,CAYA,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,QAAA,EAAQ,oBAAA,CAAA,aAAA,CAPA,oBAAA,CAOA,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,WAAA,EAAW,oBAAA,CAAA,aAAA,CAPH,oBAAA,CAOG,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOX,UAAA,EAAU,oBAAA,CAAA,aAAA,CAPC,oBAAA,CAOD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQV,iBAAA,EAAiB,oBAAA,CAAA,aAAA,CARP,oBAAA,CAQO,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOjB,WAAA,EAAW,oBAAA,CAAA,aAAA,CAPM,oBAAA,CAON,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOX,UAAA,EAAU,oBAAA,CAAA,aAAA,CAPC,oBAAA,CAOD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOV,SAAA,EAAS,oBAAA,CAAA,aAAA,CAPC,oBAAA,CAOD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQT,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARC,oBAAA,CAQD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,YAAA,EAAY,oBAAA,CAAA,aAAA,CAPJ,oBAAA,CAOI,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQZ,SAAA,EAAS,oBAAA,CAAA,aAAA,CARG,oBAAA,CAQH,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOT,aAAA,EAAa,oBAAA,CAAA,aAAA,CAPJ,oBAAA,CAOI,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQb,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARK,oBAAA,CAQL,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,cAAA,EAAc,oBAAA,CAAA,aAAA,CAPN,oBAAA,CAOM,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQd,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARM,oBAAA,CAQN,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAYR,SAAA,EAAS,oBAAA,CAAA,aAAA,CAZD,oBAAA,CAYC,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOT,YAAA,EAAY,oBAAA,CAAA,aAAA,CAPH,oBAAA,CAOG,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOZ,iBAAA,EAAiB,oBAAA,CAAA,aAAA,CAPL,oBAAA,CAOK,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOjB,eAAA,EAAe,oBAAA,CAAA,aAAA,CAPE,oBAAA,CAOF,gBAAA,OAAA,oBAAA,CAAA,mBAAA;AAAA;;;;;;cC/LJ,OAAA,QAAO,UAAA;;;;;ADkBpB;;;;;;;;;cEFa,YAAA,EAAY,MAAA,CAAA,OAAA,CAGvB,MAAA,CAHuB,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/demo/DemoRouter.ts","../../src/demo/primitives/$uiDemo.ts","../../src/demo/index.ts"],"mappings":";;;;cAwBa,UAAA;EACX,UAAA,EAAU,oBAAA,CAAA,aAAA,CADW,oBAAA,CACX,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAgBV,QAAA,EAAQ,oBAAA,CAAA,aAAA,CAhBE,oBAAA,CAgBF,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQR,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARA,oBAAA,CAQA,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAYR,QAAA,EAAQ,oBAAA,CAAA,aAAA,CAZA,oBAAA,CAYA,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,QAAA,EAAQ,oBAAA,CAAA,aAAA,CAPA,oBAAA,CAOA,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,WAAA,EAAW,oBAAA,CAAA,aAAA,CAPH,oBAAA,CAOG,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOX,UAAA,EAAU,oBAAA,CAAA,aAAA,CAPC,oBAAA,CAOD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQV,iBAAA,EAAiB,oBAAA,CAAA,aAAA,CARP,oBAAA,CAQO,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOjB,WAAA,EAAW,oBAAA,CAAA,aAAA,CAPM,oBAAA,CAON,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOX,UAAA,EAAU,oBAAA,CAAA,aAAA,CAPC,oBAAA,CAOD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOV,SAAA,EAAS,oBAAA,CAAA,aAAA,CAPC,oBAAA,CAOD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQT,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARC,oBAAA,CAQD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,YAAA,EAAY,oBAAA,CAAA,aAAA,CAPJ,oBAAA,CAOI,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOZ,iBAAA,EAAiB,oBAAA,CAAA,aAAA,CAPL,oBAAA,CAOK,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQjB,SAAA,EAAS,oBAAA,CAAA,aAAA,CARQ,oBAAA,CAQR,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOT,aAAA,EAAa,oBAAA,CAAA,aAAA,CAPJ,oBAAA,CAOI,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQb,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARK,oBAAA,CAQL,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,cAAA,EAAc,oBAAA,CAAA,aAAA,CAPN,oBAAA,CAOM,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQd,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARM,oBAAA,CAQN,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAYR,SAAA,EAAS,oBAAA,CAAA,aAAA,CAZD,oBAAA,CAYC,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOT,YAAA,EAAY,oBAAA,CAAA,aAAA,CAPH,oBAAA,CAOG,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOZ,iBAAA,EAAiB,oBAAA,CAAA,aAAA,CAPL,oBAAA,CAOK,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOjB,eAAA,EAAe,oBAAA,CAAA,aAAA,CAPE,oBAAA,CAOF,gBAAA,OAAA,oBAAA,CAAA,mBAAA;AAAA;;;;;;cCtMJ,OAAA,QAAO,UAAA;;;;;ADkBpB;;;;;;;;;cEFa,YAAA,EAAY,MAAA,CAAA,OAAA,CAGvB,MAAA,CAHuB,MAAA"}
@@ -1,4 +1,4 @@
1
- import { t as AlephaUI } from "./core-RCUw1Q-a.js";
1
+ import { t as AlephaUI } from "./core-DFgB3yU4.js";
2
2
  import { $context, $module } from "alepha";
3
3
  import { IconBell, IconBinaryTree, IconBraces, IconClick, IconForms, IconHeading, IconHome, IconKey, IconLayout, IconLayoutSidebar, IconLetterT, IconLockQuestion, IconLogin, IconMailCheck, IconMessage, IconPackages, IconRowInsertBottom, IconTable, IconUserPlus, IconWall } from "@tabler/icons-react";
4
4
  import { $page } from "alepha/react/router";
@@ -9,7 +9,7 @@ var DemoRouter = class {
9
9
  icon: IconPackages,
10
10
  path: "/demo",
11
11
  label: "Demo",
12
- lazy: () => import("./DemoLayout-C56xb5EE.js"),
12
+ lazy: () => import("./DemoLayout-CHU8WTwO.js"),
13
13
  children: () => [
14
14
  this.demoHome,
15
15
  this.demoCore,
@@ -24,7 +24,7 @@ var DemoRouter = class {
24
24
  icon: IconHome,
25
25
  path: "/",
26
26
  label: "Home",
27
- lazy: () => import("./DemoHome-Clbn8AmS.js")
27
+ lazy: () => import("./DemoHome-D_De3UiT.js")
28
28
  });
29
29
  demoCore = $page({
30
30
  icon: IconWall,
@@ -41,25 +41,25 @@ var DemoRouter = class {
41
41
  icon: IconRowInsertBottom,
42
42
  path: "/flex",
43
43
  label: "Flex",
44
- lazy: () => import("./DemoFlex-EtVq8QfX.js")
44
+ lazy: () => import("./DemoFlex-a8OhMMvq.js")
45
45
  });
46
46
  demoText = $page({
47
47
  icon: IconLetterT,
48
48
  path: "/text",
49
49
  label: "Text",
50
- lazy: () => import("./DemoText-CzXuUn3g.js")
50
+ lazy: () => import("./DemoText-ubcw-vog.js")
51
51
  });
52
52
  demoHeading = $page({
53
53
  icon: IconHeading,
54
54
  path: "/heading",
55
55
  label: "Heading",
56
- lazy: () => import("./DemoHeading-BS-vGfkI.js")
56
+ lazy: () => import("./DemoHeading-C13OVDfS.js")
57
57
  });
58
58
  demoButton = $page({
59
59
  icon: IconClick,
60
60
  path: "/button",
61
61
  label: "Button",
62
- lazy: () => import("./DemoButton-BmaWZVwf.js")
62
+ lazy: () => import("./DemoButton-wiCxZZ_L.js")
63
63
  });
64
64
  demoLayoutSection = $page({
65
65
  icon: IconLayout,
@@ -75,31 +75,37 @@ var DemoRouter = class {
75
75
  icon: IconLayoutSidebar,
76
76
  path: "/sidebar",
77
77
  label: "Sidebar",
78
- lazy: () => import("./DemoSidebar-CcBo4ltC.js")
78
+ lazy: () => import("./DemoSidebar-Giy2HRBD.js")
79
79
  });
80
80
  demoDialog = $page({
81
81
  icon: IconMessage,
82
82
  path: "/dialog",
83
83
  label: "Dialog",
84
- lazy: () => import("./DemoDialog-4ItHLf9t.js")
84
+ lazy: () => import("./DemoDialog-CUWdLHim.js")
85
85
  });
86
86
  demoToast = $page({
87
87
  icon: IconBell,
88
88
  path: "/toast",
89
89
  label: "Toast",
90
- lazy: () => import("./DemoToast-BgHDhWrX.js")
90
+ lazy: () => import("./DemoToast-9die_dYT.js")
91
91
  });
92
92
  demoForm = $page({
93
93
  icon: IconForms,
94
94
  path: "/form",
95
95
  label: "Form",
96
- children: () => [this.demoTypeForm]
96
+ children: () => [this.demoTypeForm, this.demoControlSelect]
97
97
  });
98
98
  demoTypeForm = $page({
99
99
  icon: IconForms,
100
100
  path: "/type-form",
101
101
  label: "TypeForm",
102
- lazy: () => import("./DemoTypeForm-DDzWoMSV.js")
102
+ lazy: () => import("./DemoTypeForm-D_d6OVKL.js")
103
+ });
104
+ demoControlSelect = $page({
105
+ icon: IconForms,
106
+ path: "/control-select",
107
+ label: "ControlSelect",
108
+ lazy: () => import("./DemoControlSelect-D7ILObVg.js")
103
109
  });
104
110
  demoTable = $page({
105
111
  icon: IconTable,
@@ -111,7 +117,7 @@ var DemoRouter = class {
111
117
  icon: IconTable,
112
118
  path: "/data-table",
113
119
  label: "DataTable",
114
- lazy: () => import("./DemoDataTable-Z9xyV221.js")
120
+ lazy: () => import("./DemoDataTable-DZ5Y8pFX.js")
115
121
  });
116
122
  demoJson = $page({
117
123
  icon: IconBraces,
@@ -123,7 +129,7 @@ var DemoRouter = class {
123
129
  icon: IconBinaryTree,
124
130
  path: "/viewer",
125
131
  label: "JsonViewer",
126
- lazy: () => import("./DemoJsonViewer-DkIX_ky2.js")
132
+ lazy: () => import("./DemoJsonViewer-B50s9aGM.js")
127
133
  });
128
134
  demoAuth = $page({
129
135
  icon: IconKey,
@@ -140,25 +146,25 @@ var DemoRouter = class {
140
146
  icon: IconLogin,
141
147
  path: "/login",
142
148
  label: "Login",
143
- lazy: () => import("./DemoLogin-BZwpicOS.js")
149
+ lazy: () => import("./DemoLogin-BBlrWpml.js")
144
150
  });
145
151
  demoRegister = $page({
146
152
  icon: IconUserPlus,
147
153
  path: "/register",
148
154
  label: "Register",
149
- lazy: () => import("./DemoRegister-C7_qc4MJ.js")
155
+ lazy: () => import("./DemoRegister-BuNE3_-f.js")
150
156
  });
151
157
  demoResetPassword = $page({
152
158
  icon: IconLockQuestion,
153
159
  path: "/reset-password",
154
160
  label: "ResetPassword",
155
- lazy: () => import("./DemoResetPassword-BI1Ct4Dw.js")
161
+ lazy: () => import("./DemoResetPassword-D_IjjjOJ.js")
156
162
  });
157
163
  demoVerifyEmail = $page({
158
164
  icon: IconMailCheck,
159
165
  path: "/verify-email",
160
166
  label: "VerifyEmail",
161
- lazy: () => import("./DemoVerifyEmail-C_Irdnov.js")
167
+ lazy: () => import("./DemoVerifyEmail-B43KlF4F.js")
162
168
  });
163
169
  };
164
170
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/demo/DemoRouter.ts","../../src/demo/primitives/$uiDemo.ts","../../src/demo/index.ts"],"sourcesContent":["import {\n IconBell,\n IconBinaryTree,\n IconBraces,\n IconClick,\n IconForms,\n IconHeading,\n IconHome,\n IconKey,\n IconLayout,\n IconLayoutSidebar,\n IconLetterT,\n IconLockQuestion,\n IconLogin,\n IconMailCheck,\n IconMessage,\n IconPackages,\n IconRowInsertBottom,\n IconTable,\n IconUserPlus,\n IconWall,\n} from \"@tabler/icons-react\";\nimport { $page } from \"alepha/react/router\";\n\nexport class DemoRouter {\n demoLayout = $page({\n icon: IconPackages,\n path: \"/demo\",\n label: \"Demo\",\n lazy: () => import(\"./components/DemoLayout.tsx\"),\n children: () => [\n this.demoHome,\n this.demoCore,\n this.demoLayoutSection,\n this.demoForm,\n this.demoTable,\n this.demoJson,\n this.demoAuth,\n ],\n });\n\n demoHome = $page({\n icon: IconHome,\n path: \"/\",\n label: \"Home\",\n lazy: () => import(\"./components/DemoHome.tsx\"),\n });\n\n // Core Components\n demoCore = $page({\n icon: IconWall,\n path: \"/core\",\n label: \"Core\",\n children: () => [\n this.demoFlex,\n this.demoText,\n this.demoButton,\n this.demoHeading,\n ],\n });\n\n demoFlex = $page({\n icon: IconRowInsertBottom,\n path: \"/flex\",\n label: \"Flex\",\n lazy: () => import(\"./components/core/DemoFlex.tsx\"),\n });\n\n demoText = $page({\n icon: IconLetterT,\n path: \"/text\",\n label: \"Text\",\n lazy: () => import(\"./components/core/DemoText.tsx\"),\n });\n\n demoHeading = $page({\n icon: IconHeading,\n path: \"/heading\",\n label: \"Heading\",\n lazy: () => import(\"./components/core/DemoHeading.tsx\"),\n });\n\n demoButton = $page({\n icon: IconClick,\n path: \"/button\",\n label: \"Button\",\n lazy: () => import(\"./components/core/DemoButton.tsx\"),\n });\n\n // Layout Components\n demoLayoutSection = $page({\n icon: IconLayout,\n path: \"/layout\",\n label: \"Layout\",\n children: () => [this.demoSidebar, this.demoDialog, this.demoToast],\n });\n\n demoSidebar = $page({\n icon: IconLayoutSidebar,\n path: \"/sidebar\",\n label: \"Sidebar\",\n lazy: () => import(\"./components/layout/DemoSidebar.tsx\"),\n });\n\n demoDialog = $page({\n icon: IconMessage,\n path: \"/dialog\",\n label: \"Dialog\",\n lazy: () => import(\"./components/layout/DemoDialog.tsx\"),\n });\n\n demoToast = $page({\n icon: IconBell,\n path: \"/toast\",\n label: \"Toast\",\n lazy: () => import(\"./components/layout/DemoToast.tsx\"),\n });\n\n // Form Components\n demoForm = $page({\n icon: IconForms,\n path: \"/form\",\n label: \"Form\",\n children: () => [this.demoTypeForm],\n });\n\n demoTypeForm = $page({\n icon: IconForms,\n path: \"/type-form\",\n label: \"TypeForm\",\n lazy: () => import(\"./components/core/DemoTypeForm.tsx\"),\n });\n\n // Table Components\n demoTable = $page({\n icon: IconTable,\n path: \"/table\",\n label: \"Table\",\n children: () => [this.demoDataTable],\n });\n\n demoDataTable = $page({\n icon: IconTable,\n path: \"/data-table\",\n label: \"DataTable\",\n lazy: () => import(\"./components/core/DemoDataTable.tsx\"),\n });\n\n // JSON Components\n demoJson = $page({\n icon: IconBraces,\n path: \"/json\",\n label: \"Json\",\n children: () => [this.demoJsonViewer],\n });\n\n demoJsonViewer = $page({\n icon: IconBinaryTree,\n path: \"/viewer\",\n label: \"JsonViewer\",\n lazy: () => import(\"./components/json/DemoJsonViewer.tsx\"),\n });\n\n // Auth Components\n demoAuth = $page({\n icon: IconKey,\n path: \"/auth\",\n label: \"Auth\",\n children: () => [\n this.demoLogin,\n this.demoRegister,\n this.demoResetPassword,\n this.demoVerifyEmail,\n ],\n });\n\n demoLogin = $page({\n icon: IconLogin,\n path: \"/login\",\n label: \"Login\",\n lazy: () => import(\"./components/auth/DemoLogin.tsx\"),\n });\n\n demoRegister = $page({\n icon: IconUserPlus,\n path: \"/register\",\n label: \"Register\",\n lazy: () => import(\"./components/auth/DemoRegister.tsx\"),\n });\n\n demoResetPassword = $page({\n icon: IconLockQuestion,\n path: \"/reset-password\",\n label: \"ResetPassword\",\n lazy: () => import(\"./components/auth/DemoResetPassword.tsx\"),\n });\n\n demoVerifyEmail = $page({\n icon: IconMailCheck,\n path: \"/verify-email\",\n label: \"VerifyEmail\",\n lazy: () => import(\"./components/auth/DemoVerifyEmail.tsx\"),\n });\n}\n","import { $context } from \"alepha\";\nimport { DemoRouter } from \"../DemoRouter.ts\";\n\n/**\n * Register Demo UI components and get the DemoRouter instance.\n */\nexport const $uiDemo = () => {\n const { alepha } = $context();\n return alepha.inject(DemoRouter);\n};\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $module } from \"alepha\";\nimport { DemoRouter } from \"./DemoRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport { DemoRouter } from \"./DemoRouter.ts\";\nexport * from \"./primitives/$uiDemo.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Component showcase and documentation.\n *\n * **Features:**\n * - DemoLayout for demo pages\n * - DemoHome landing page\n * - MacWindow component for showcases\n * - Showcase component for component demos\n *\n * @module alepha.ui.demo\n */\nexport const AlephaUIDemo = $module({\n name: \"alepha.ui.demo\",\n services: [AlephaUI, DemoRouter],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/demo/DemoRouter.ts","../../src/demo/primitives/$uiDemo.ts","../../src/demo/index.ts"],"sourcesContent":["import {\n IconBell,\n IconBinaryTree,\n IconBraces,\n IconClick,\n IconForms,\n IconHeading,\n IconHome,\n IconKey,\n IconLayout,\n IconLayoutSidebar,\n IconLetterT,\n IconLockQuestion,\n IconLogin,\n IconMailCheck,\n IconMessage,\n IconPackages,\n IconRowInsertBottom,\n IconTable,\n IconUserPlus,\n IconWall,\n} from \"@tabler/icons-react\";\nimport { $page } from \"alepha/react/router\";\n\nexport class DemoRouter {\n demoLayout = $page({\n icon: IconPackages,\n path: \"/demo\",\n label: \"Demo\",\n lazy: () => import(\"./components/DemoLayout.tsx\"),\n children: () => [\n this.demoHome,\n this.demoCore,\n this.demoLayoutSection,\n this.demoForm,\n this.demoTable,\n this.demoJson,\n this.demoAuth,\n ],\n });\n\n demoHome = $page({\n icon: IconHome,\n path: \"/\",\n label: \"Home\",\n lazy: () => import(\"./components/DemoHome.tsx\"),\n });\n\n // Core Components\n demoCore = $page({\n icon: IconWall,\n path: \"/core\",\n label: \"Core\",\n children: () => [\n this.demoFlex,\n this.demoText,\n this.demoButton,\n this.demoHeading,\n ],\n });\n\n demoFlex = $page({\n icon: IconRowInsertBottom,\n path: \"/flex\",\n label: \"Flex\",\n lazy: () => import(\"./components/core/DemoFlex.tsx\"),\n });\n\n demoText = $page({\n icon: IconLetterT,\n path: \"/text\",\n label: \"Text\",\n lazy: () => import(\"./components/core/DemoText.tsx\"),\n });\n\n demoHeading = $page({\n icon: IconHeading,\n path: \"/heading\",\n label: \"Heading\",\n lazy: () => import(\"./components/core/DemoHeading.tsx\"),\n });\n\n demoButton = $page({\n icon: IconClick,\n path: \"/button\",\n label: \"Button\",\n lazy: () => import(\"./components/core/DemoButton.tsx\"),\n });\n\n // Layout Components\n demoLayoutSection = $page({\n icon: IconLayout,\n path: \"/layout\",\n label: \"Layout\",\n children: () => [this.demoSidebar, this.demoDialog, this.demoToast],\n });\n\n demoSidebar = $page({\n icon: IconLayoutSidebar,\n path: \"/sidebar\",\n label: \"Sidebar\",\n lazy: () => import(\"./components/layout/DemoSidebar.tsx\"),\n });\n\n demoDialog = $page({\n icon: IconMessage,\n path: \"/dialog\",\n label: \"Dialog\",\n lazy: () => import(\"./components/layout/DemoDialog.tsx\"),\n });\n\n demoToast = $page({\n icon: IconBell,\n path: \"/toast\",\n label: \"Toast\",\n lazy: () => import(\"./components/layout/DemoToast.tsx\"),\n });\n\n // Form Components\n demoForm = $page({\n icon: IconForms,\n path: \"/form\",\n label: \"Form\",\n children: () => [this.demoTypeForm, this.demoControlSelect],\n });\n\n demoTypeForm = $page({\n icon: IconForms,\n path: \"/type-form\",\n label: \"TypeForm\",\n lazy: () => import(\"./components/core/DemoTypeForm.tsx\"),\n });\n\n demoControlSelect = $page({\n icon: IconForms,\n path: \"/control-select\",\n label: \"ControlSelect\",\n lazy: () => import(\"./components/core/DemoControlSelect.tsx\"),\n });\n\n // Table Components\n demoTable = $page({\n icon: IconTable,\n path: \"/table\",\n label: \"Table\",\n children: () => [this.demoDataTable],\n });\n\n demoDataTable = $page({\n icon: IconTable,\n path: \"/data-table\",\n label: \"DataTable\",\n lazy: () => import(\"./components/core/DemoDataTable.tsx\"),\n });\n\n // JSON Components\n demoJson = $page({\n icon: IconBraces,\n path: \"/json\",\n label: \"Json\",\n children: () => [this.demoJsonViewer],\n });\n\n demoJsonViewer = $page({\n icon: IconBinaryTree,\n path: \"/viewer\",\n label: \"JsonViewer\",\n lazy: () => import(\"./components/json/DemoJsonViewer.tsx\"),\n });\n\n // Auth Components\n demoAuth = $page({\n icon: IconKey,\n path: \"/auth\",\n label: \"Auth\",\n children: () => [\n this.demoLogin,\n this.demoRegister,\n this.demoResetPassword,\n this.demoVerifyEmail,\n ],\n });\n\n demoLogin = $page({\n icon: IconLogin,\n path: \"/login\",\n label: \"Login\",\n lazy: () => import(\"./components/auth/DemoLogin.tsx\"),\n });\n\n demoRegister = $page({\n icon: IconUserPlus,\n path: \"/register\",\n label: \"Register\",\n lazy: () => import(\"./components/auth/DemoRegister.tsx\"),\n });\n\n demoResetPassword = $page({\n icon: IconLockQuestion,\n path: \"/reset-password\",\n label: \"ResetPassword\",\n lazy: () => import(\"./components/auth/DemoResetPassword.tsx\"),\n });\n\n demoVerifyEmail = $page({\n icon: IconMailCheck,\n path: \"/verify-email\",\n label: \"VerifyEmail\",\n lazy: () => import(\"./components/auth/DemoVerifyEmail.tsx\"),\n });\n}\n","import { $context } from \"alepha\";\nimport { DemoRouter } from \"../DemoRouter.ts\";\n\n/**\n * Register Demo UI components and get the DemoRouter instance.\n */\nexport const $uiDemo = () => {\n const { alepha } = $context();\n return alepha.inject(DemoRouter);\n};\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $module } from \"alepha\";\nimport { DemoRouter } from \"./DemoRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport { DemoRouter } from \"./DemoRouter.ts\";\nexport * from \"./primitives/$uiDemo.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Component showcase and documentation.\n *\n * **Features:**\n * - DemoLayout for demo pages\n * - DemoHome landing page\n * - MacWindow component for showcases\n * - Showcase component for component demos\n *\n * @module alepha.ui.demo\n */\nexport const AlephaUIDemo = $module({\n name: \"alepha.ui.demo\",\n services: [AlephaUI, DemoRouter],\n});\n"],"mappings":";;;;;;AAwBA,IAAa,aAAb,MAAwB;CACtB,aAAa,MAAM;EACjB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACnB,gBAAgB;GACd,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACN;EACF,CAAC;CAEF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB;GACd,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACN;EACF,CAAC;CAEF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,cAAc,MAAM;EAClB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,aAAa,MAAM;EACjB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,oBAAoB,MAAM;EACxB,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB;GAAC,KAAK;GAAa,KAAK;GAAY,KAAK;GAAU;EACpE,CAAC;CAEF,cAAc,MAAM;EAClB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,aAAa,MAAM;EACjB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,YAAY,MAAM;EAChB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB,CAAC,KAAK,cAAc,KAAK,kBAAkB;EAC5D,CAAC;CAEF,eAAe,MAAM;EACnB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,oBAAoB,MAAM;EACxB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,YAAY,MAAM;EAChB,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB,CAAC,KAAK,cAAc;EACrC,CAAC;CAEF,gBAAgB,MAAM;EACpB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB,CAAC,KAAK,eAAe;EACtC,CAAC;CAEF,iBAAiB,MAAM;EACrB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB;GACd,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACN;EACF,CAAC;CAEF,YAAY,MAAM;EAChB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,eAAe,MAAM;EACnB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,oBAAoB,MAAM;EACxB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,kBAAkB,MAAM;EACtB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;;;;;;;;AC3MJ,MAAa,gBAAgB;CAC3B,MAAM,EAAE,WAAW,UAAU;AAC7B,QAAO,OAAO,OAAO,WAAW;;;;;;;;;;;;;;;;ACclC,MAAa,eAAe,QAAQ;CAClC,MAAM;CACN,UAAU,CAAC,UAAU,WAAW;CACjC,CAAC"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "mantine"
8
8
  ],
9
9
  "author": "Nicolas Foures",
10
- "version": "0.18.1",
10
+ "version": "0.18.3",
11
11
  "type": "module",
12
12
  "engines": {
13
13
  "node": ">=22.0.0"
@@ -30,17 +30,17 @@
30
30
  "@mantine/notifications": "^8.3.15",
31
31
  "@mantine/nprogress": "^8.3.15",
32
32
  "@mantine/spotlight": "^8.3.15",
33
- "@tabler/icons-react": "^3.37.1",
33
+ "@tabler/icons-react": "^3.38.0",
34
34
  "dayjs": "^1.11.19",
35
35
  "react-is": "^19.2.4",
36
36
  "recharts": "^3.7.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@biomejs/biome": "^2.4.4",
39
+ "@biomejs/biome": "^2.4.5",
40
40
  "@testing-library/dom": "^10.4.1",
41
41
  "@testing-library/react": "^16.3.2",
42
42
  "@types/react-is": "^19.2.0",
43
- "alepha": "0.18.1",
43
+ "alepha": "0.18.3",
44
44
  "react": "^19.2.4",
45
45
  "react-dom": "^19.2.4",
46
46
  "typescript": "^5.9.3",
@@ -48,7 +48,7 @@
48
48
  "vitest": "^4.0.18"
49
49
  },
50
50
  "peerDependencies": {
51
- "alepha": "0.18.1",
51
+ "alepha": "0.18.3",
52
52
  "react": "*",
53
53
  "react-dom": "*"
54
54
  },
@@ -58,7 +58,7 @@
58
58
  "typecheck": "alepha typecheck",
59
59
  "test": "alepha test",
60
60
  "build": "node ../alepha/scripts/build.ts",
61
- "build:check": "node scripts/build.ts --check"
61
+ "build:check": "node ../alepha/scripts/build.ts --check"
62
62
  },
63
63
  "repository": {
64
64
  "type": "git",
@@ -87,6 +87,6 @@
87
87
  "default": "./dist/demo/index.js"
88
88
  },
89
89
  "./styles": "./src/core/styles.css",
90
- "./json/styles": "./src/json/styles.css"
90
+ "./styles.css": "./src/core/styles.css"
91
91
  }
92
92
  }
@@ -1,12 +1,24 @@
1
- import type { DashboardShellProps, SidebarNode } from "@alepha/ui";
2
- import { AuthRouter } from "@alepha/ui/auth";
3
1
  import {
2
+ type AppBarItem,
3
+ alephaSidebarAtom,
4
+ Breadcrumbs,
5
+ type DashboardShellProps,
6
+ LanguageButton,
7
+ type SidebarNode,
8
+ ThemeButton,
9
+ } from "@alepha/ui";
10
+ import { AuthRouter, UserButton } from "@alepha/ui/auth";
11
+ import {
12
+ IconBell,
4
13
  IconClock,
14
+ IconDashboard,
5
15
  IconDevices,
6
16
  IconFile,
7
17
  IconHistory,
8
18
  IconKey,
19
+ IconLayoutDashboard,
9
20
  IconListDetails,
21
+ IconLockPassword,
10
22
  IconSettings,
11
23
  IconTerminal2,
12
24
  IconUser,
@@ -17,7 +29,7 @@ import type { AdminAuditController } from "alepha/api/audits";
17
29
  import type { FileController } from "alepha/api/files";
18
30
  import type { AdminJobController } from "alepha/api/jobs";
19
31
  import type { AdminApiKeyController } from "alepha/api/keys";
20
-
32
+ import type { AdminNotificationController } from "alepha/api/notifications";
21
33
  import type { AdminParameterController } from "alepha/api/parameters";
22
34
  import type {
23
35
  AdminSessionController,
@@ -25,6 +37,7 @@ import type {
25
37
  } from "alepha/api/users";
26
38
  import { ReactAuth } from "alepha/react/auth";
27
39
  import { $page, ReactRouter, Redirection } from "alepha/react/router";
40
+ import { $cookie } from "alepha/server/cookies";
28
41
  import { $client } from "alepha/server/links";
29
42
 
30
43
  export class AdminRouter {
@@ -39,32 +52,92 @@ export class AdminRouter {
39
52
  protected readonly auditCtrl = $client<AdminAuditController>();
40
53
  protected readonly jobCtrl = $client<AdminJobController>();
41
54
  protected readonly apiKeyCtrl = $client<AdminApiKeyController>();
55
+ protected readonly notificationCtrl = $client<AdminNotificationController>();
56
+
57
+ public readonly adminCookie = $cookie(alephaSidebarAtom, {
58
+ name: "admin.sidebar",
59
+ });
42
60
 
43
61
  public configFn?: (adminRouter: AdminRouter) => DashboardShellProps = () => {
44
62
  return {
45
63
  sidebarProps: {
46
64
  items: this.getDefaultSidebarItems(),
47
65
  },
66
+ appBarProps: {
67
+ items: this.getDefaultAppBarItems(),
68
+ },
48
69
  };
49
70
  };
50
71
 
72
+ public getDefaultAppBarItems(): AppBarItem[] {
73
+ return [
74
+ {
75
+ type: "burger",
76
+ position: "left",
77
+ },
78
+ {
79
+ element: <Breadcrumbs />,
80
+ position: "left",
81
+ },
82
+ {
83
+ element: <UserButton />,
84
+ position: "right",
85
+ },
86
+ {
87
+ element: <ThemeButton expert />,
88
+ position: "right",
89
+ },
90
+ {
91
+ element: <LanguageButton />,
92
+ position: "right",
93
+ },
94
+ {
95
+ type: "dark",
96
+ position: "right",
97
+ },
98
+ ];
99
+ }
100
+
51
101
  public getDefaultSidebarItems(): SidebarNode[] {
52
102
  return [
103
+ {
104
+ position: "top",
105
+ type: "search",
106
+ },
107
+ {
108
+ position: "top",
109
+ type: "spacer",
110
+ },
111
+ {
112
+ label: "Dashboard",
113
+ href: "/admin",
114
+ icon: IconLayoutDashboard,
115
+ },
53
116
  {
54
117
  type: "section",
55
- label: "Identity",
118
+ label: "Security",
56
119
  children: [
57
120
  {
58
- ...this.router.node(this.adminUsers.name),
59
- can: () => this.userCtrl.findUsers.can(),
60
- },
61
- {
62
- ...this.router.node(this.adminSessions.name),
63
- can: () => this.sessionCtrl.findSessions.can(),
121
+ label: "Identity",
122
+ icon: IconLockPassword,
123
+ children: [
124
+ {
125
+ ...this.router.node(this.adminUsers.name),
126
+ can: () => this.userCtrl.findUsers.can(),
127
+ },
128
+ {
129
+ ...this.router.node(this.adminSessions.name),
130
+ can: () => this.sessionCtrl.findSessions.can(),
131
+ },
132
+ {
133
+ ...this.router.node(this.adminApiKeys.name),
134
+ can: () => this.apiKeyCtrl.findApiKeys.can(),
135
+ },
136
+ ],
64
137
  },
65
138
  {
66
- ...this.router.node(this.adminApiKeys.name),
67
- can: () => this.apiKeyCtrl.findApiKeys.can(),
139
+ ...this.router.node(this.adminAudits.name),
140
+ can: () => this.auditCtrl.findAudits.can(),
68
141
  },
69
142
  ],
70
143
  },
@@ -77,9 +150,8 @@ export class AdminRouter {
77
150
  can: () => this.fileCtrl.findFiles.can(),
78
151
  },
79
152
  {
80
- ...this.router.node(this.adminJobDashboard.name),
81
- href: undefined,
82
- can: () => this.jobCtrl.getJobRegistry.can(),
153
+ label: "Jobs",
154
+ icon: IconTerminal2,
83
155
  children: [
84
156
  {
85
157
  ...this.router.node(this.adminJobDashboard.name),
@@ -90,8 +162,8 @@ export class AdminRouter {
90
162
  ],
91
163
  },
92
164
  {
93
- ...this.router.node(this.adminAudits.name),
94
- can: () => this.auditCtrl.findAudits.can(),
165
+ ...this.router.node(this.adminNotifications.name),
166
+ can: () => this.notificationCtrl.findNotifications.can(),
95
167
  },
96
168
  {
97
169
  ...this.router.node(this.adminParameters.name),
@@ -126,6 +198,10 @@ export class AdminRouter {
126
198
  public readonly adminLayout = $page({
127
199
  path: "/admin",
128
200
  label: "Admin",
201
+ head: {
202
+ title: "Admin Panel",
203
+ titleSeparator: " | ",
204
+ },
129
205
  lazy: () => import("./components/AdminLayout.tsx"),
130
206
  props: () => ({
131
207
  adminShellProps: this.adminShellProps(),
@@ -138,6 +214,18 @@ export class AdminRouter {
138
214
  },
139
215
  });
140
216
 
217
+ // ─────────────────────────────────────────────────────────────────────────────
218
+ // Dashboard
219
+ // ─────────────────────────────────────────────────────────────────────────────
220
+
221
+ public readonly adminDashboard = $page({
222
+ icon: IconLayoutDashboard,
223
+ parent: this.adminLayout,
224
+ path: "/",
225
+ label: "Dashboard",
226
+ lazy: () => import("./components/AdminDashboard.tsx"),
227
+ });
228
+
141
229
  // ─────────────────────────────────────────────────────────────────────────────
142
230
  // Users
143
231
  // ─────────────────────────────────────────────────────────────────────────────
@@ -147,6 +235,9 @@ export class AdminRouter {
147
235
  parent: this.adminLayout,
148
236
  path: "/users",
149
237
  label: "Users",
238
+ head: {
239
+ title: "Users",
240
+ },
150
241
  description: "Manage application users and their roles.",
151
242
  lazy: () => import("./components/users/AdminUsers.tsx"),
152
243
  can: () => this.userCtrl.findUsers.can(),
@@ -155,6 +246,9 @@ export class AdminRouter {
155
246
  public readonly adminUserLayout = $page({
156
247
  parent: this.adminLayout,
157
248
  path: "/users/:userId",
249
+ head: {
250
+ title: "Users",
251
+ },
158
252
  lazy: () => import("./components/users/AdminUserLayout.tsx"),
159
253
  });
160
254
 
@@ -163,6 +257,9 @@ export class AdminRouter {
163
257
  parent: this.adminUserLayout,
164
258
  path: "/",
165
259
  label: "Profile",
260
+ head: {
261
+ title: "User Profile",
262
+ },
166
263
  lazy: () => import("./components/users/AdminUserProfile.tsx"),
167
264
  });
168
265
 
@@ -171,6 +268,9 @@ export class AdminRouter {
171
268
  parent: this.adminUserLayout,
172
269
  path: "/sessions",
173
270
  label: "Sessions",
271
+ head: {
272
+ title: "User Sessions",
273
+ },
174
274
  lazy: () => import("./components/users/AdminUserSessions.tsx"),
175
275
  });
176
276
 
@@ -183,6 +283,9 @@ export class AdminRouter {
183
283
  parent: this.adminLayout,
184
284
  path: "/audits",
185
285
  label: "Audit Log",
286
+ head: {
287
+ title: "Audit Logs",
288
+ },
186
289
  description: "View system-wide audit trail and activity logs.",
187
290
  lazy: () => import("./components/audits/AdminAudits.tsx"),
188
291
  can: () => this.auditCtrl.findAudits.can(),
@@ -198,6 +301,9 @@ export class AdminRouter {
198
301
  path: "/sessions",
199
302
  label: "Sessions",
200
303
  description: "View and manage all active sessions.",
304
+ head: {
305
+ title: "Sessions",
306
+ },
201
307
  lazy: () => import("./components/sessions/AdminSessions.tsx"),
202
308
  can: () => this.sessionCtrl.findSessions.can(),
203
309
  });
@@ -212,6 +318,9 @@ export class AdminRouter {
212
318
  path: "/files",
213
319
  label: "Files",
214
320
  description: "Manage uploaded files and storage.",
321
+ head: {
322
+ title: "Files",
323
+ },
215
324
  lazy: () => import("./components/files/AdminFiles.tsx"),
216
325
  can: () => this.fileCtrl.findFiles.can(),
217
326
  });
@@ -228,6 +337,9 @@ export class AdminRouter {
228
337
  description: "View and manage application parameters.",
229
338
  lazy: () => import("./components/parameters/AdminParameters.tsx"),
230
339
  can: () => this.paramCtrl.getParameterTree.can(),
340
+ head: {
341
+ title: "Parameters",
342
+ },
231
343
  loader: async () => {
232
344
  const treeData = await this.paramCtrl.getParameterTree({});
233
345
  return { treeData };
@@ -239,7 +351,7 @@ export class AdminRouter {
239
351
  // ─────────────────────────────────────────────────────────────────────────────
240
352
 
241
353
  public readonly adminJobDashboard = $page({
242
- icon: IconTerminal2,
354
+ icon: IconDashboard,
243
355
  parent: this.adminLayout,
244
356
  path: "/jobs",
245
357
  label: "Jobs",
@@ -277,8 +389,28 @@ export class AdminRouter {
277
389
  parent: this.adminLayout,
278
390
  path: "/api-keys",
279
391
  label: "API Keys",
392
+ head: {
393
+ title: "API Keys",
394
+ },
280
395
  description: "View and manage API keys for programmatic access.",
281
396
  lazy: () => import("./components/keys/AdminApiKeys.tsx"),
282
397
  can: () => this.apiKeyCtrl.findApiKeys.can(),
283
398
  });
399
+
400
+ // ─────────────────────────────────────────────────────────────────────────────
401
+ // Notifications
402
+ // ─────────────────────────────────────────────────────────────────────────────
403
+
404
+ public readonly adminNotifications = $page({
405
+ icon: IconBell,
406
+ parent: this.adminLayout,
407
+ path: "/notifications",
408
+ label: "Notifications",
409
+ description: "View sent notifications and their delivery status.",
410
+ head: {
411
+ title: "Notifications",
412
+ },
413
+ lazy: () => import("./components/notifications/AdminNotifications.tsx"),
414
+ can: () => this.notificationCtrl.findNotifications.can(),
415
+ });
284
416
  }
@@ -0,0 +1,52 @@
1
+ import { Flex, Text } from "@alepha/ui";
2
+ import { useAuth } from "alepha/react/auth";
3
+
4
+ // ─────────────────────────────────────────────────────────────────────────────
5
+
6
+ const AdminDashboard = () => {
7
+ const auth = useAuth();
8
+
9
+ return (
10
+ <Flex elevated fill col pos="relative" style={{ overflow: "hidden" }}>
11
+ <Flex
12
+ bg="yellow"
13
+ style={{
14
+ position: "absolute",
15
+ top: 0,
16
+ left: 0,
17
+ width: 256,
18
+ height: 256,
19
+ borderRadius: "50%",
20
+ transform: "translate(-50%, -50%)",
21
+ pointerEvents: "none",
22
+ }}
23
+ />
24
+
25
+ {/* Header */}
26
+ <Flex gap={4} p={128} pb="xl" style={{ zIndex: 1 }}>
27
+ <Flex col pos={"relative"}>
28
+ <Text muted bold small uppercase>
29
+ Account Home
30
+ </Text>
31
+ <Text
32
+ top={10}
33
+ pos={"absolute"}
34
+ left={-20}
35
+ fz={42}
36
+ c={"yellow"}
37
+ style={{ transform: "rotate(-15deg)" }}
38
+ >
39
+ !
40
+ </Text>
41
+ <Text fz={36}>Hello, {auth.user?.name ?? "Admin"}</Text>
42
+ <Text muted>
43
+ This is your admin dashboard. You can manage resources from the
44
+ sidebar menu.
45
+ </Text>
46
+ </Flex>
47
+ </Flex>
48
+ </Flex>
49
+ );
50
+ };
51
+
52
+ export default AdminDashboard;