@alepha/ui 0.18.3 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/admin/{AdminApiKeys-Dy_k-4Vd.js → AdminApiKeys-C2ze85eD.js} +3 -4
  2. package/dist/admin/{AdminApiKeys-Dy_k-4Vd.js.map → AdminApiKeys-C2ze85eD.js.map} +1 -1
  3. package/dist/admin/{AdminAudits-CKiFMSSU.js → AdminAudits-BIj81e4k.js} +3 -4
  4. package/dist/admin/{AdminAudits-CKiFMSSU.js.map → AdminAudits-BIj81e4k.js.map} +1 -1
  5. package/dist/admin/{AdminDashboard-PhC_dZqo.js → AdminDashboard-PMVzrwSu.js} +3 -4
  6. package/dist/admin/{AdminDashboard-PhC_dZqo.js.map → AdminDashboard-PMVzrwSu.js.map} +1 -1
  7. package/dist/admin/AdminFiles-Bq03BLt-.js +189 -0
  8. package/dist/admin/AdminFiles-Bq03BLt-.js.map +1 -0
  9. package/dist/admin/{AdminJobExecutions-D9E-CS-U.js → AdminJobs-D1_QGCDy.js} +401 -358
  10. package/dist/admin/AdminJobs-D1_QGCDy.js.map +1 -0
  11. package/dist/admin/{AdminLayout-I6TlUMPc.js → AdminLayout-BNiwiw2D.js} +8 -25
  12. package/dist/admin/AdminLayout-BNiwiw2D.js.map +1 -0
  13. package/dist/admin/{AdminNotifications-ZPHCYrv7.js → AdminNotifications-DSKQtUfn.js} +85 -124
  14. package/dist/admin/AdminNotifications-DSKQtUfn.js.map +1 -0
  15. package/dist/admin/{AdminParameters-CqgvhRsb.js → AdminParameters-CoB7EhyM.js} +3 -12
  16. package/dist/admin/{AdminParameters-CqgvhRsb.js.map → AdminParameters-CoB7EhyM.js.map} +1 -1
  17. package/dist/admin/{AdminSessions-Bz5NRuoW.js → AdminSessions-DFbFcrJQ.js} +3 -4
  18. package/dist/admin/{AdminSessions-Bz5NRuoW.js.map → AdminSessions-DFbFcrJQ.js.map} +1 -1
  19. package/dist/admin/{AdminUserLayout-lXT6I0Qq.js → AdminUserLayout-fSfi3KMm.js} +72 -111
  20. package/dist/admin/AdminUserLayout-fSfi3KMm.js.map +1 -0
  21. package/dist/admin/{AdminUserProfile-vFBLoJ3h.js → AdminUserProfile-_C-h8vUK.js} +7 -6
  22. package/dist/admin/AdminUserProfile-_C-h8vUK.js.map +1 -0
  23. package/dist/admin/{AdminUserSessions-CT_YDim0.js → AdminUserSessions-KpJHIeQo.js} +3 -4
  24. package/dist/admin/{AdminUserSessions-CT_YDim0.js.map → AdminUserSessions-KpJHIeQo.js.map} +1 -1
  25. package/dist/admin/{AdminUsers-D1UfGya9.js → AdminUsers-DcVrzdQP.js} +4 -4
  26. package/dist/admin/AdminUsers-DcVrzdQP.js.map +1 -0
  27. package/dist/admin/{AuthLayout-_frhdgOO.js → AuthLayout-CazfLzcf.js} +3 -4
  28. package/dist/admin/{AuthLayout-_frhdgOO.js.map → AuthLayout-CazfLzcf.js.map} +1 -1
  29. package/dist/{demo/IconGoogle-CSQLPYwX.js → admin/IconGoogle-8Nkx6yax.js} +2 -4
  30. package/dist/admin/{IconGoogle-Ch1m3Uzl.js.map → IconGoogle-8Nkx6yax.js.map} +1 -1
  31. package/dist/admin/{Login-xtNmQtGh.js → Login-CaMjUrDP.js} +5 -6
  32. package/dist/{auth/Login-BA1E8IZl.js.map → admin/Login-CaMjUrDP.js.map} +1 -1
  33. package/dist/admin/{Profile-_AtPUwAP.js → Profile-Ca4fZX15.js} +3 -5
  34. package/dist/{demo/Profile-DS5q4vOh.js.map → admin/Profile-Ca4fZX15.js.map} +1 -1
  35. package/dist/admin/{Register-JcCjHUUn.js → Register-C5DyKWPO.js} +5 -6
  36. package/dist/{demo/Register-B4hLBeEv.js.map → admin/Register-C5DyKWPO.js.map} +1 -1
  37. package/dist/admin/{ResetPassword-CwGBPLJO.js → ResetPassword-BA5sAgXo.js} +4 -5
  38. package/dist/{auth/ResetPassword-DCtGcneA.js.map → admin/ResetPassword-BA5sAgXo.js.map} +1 -1
  39. package/dist/admin/{VerifyEmail-hNxWejWf.js → VerifyEmail-DKNXROj_.js} +4 -5
  40. package/dist/{auth/VerifyEmail-DkH7NBfn.js.map → admin/VerifyEmail-DKNXROj_.js.map} +1 -1
  41. package/dist/admin/adminUserAtom-BLNc7XbT.js +11 -0
  42. package/dist/admin/adminUserAtom-BLNc7XbT.js.map +1 -0
  43. package/dist/admin/{core-CYaRQ8O-.js → core-CJCEx18C.js} +132 -86
  44. package/dist/admin/core-CJCEx18C.js.map +1 -0
  45. package/dist/admin/index.d.ts +80 -13
  46. package/dist/admin/index.d.ts.map +1 -1
  47. package/dist/admin/index.js +38 -68
  48. package/dist/admin/index.js.map +1 -1
  49. package/dist/admin/rolldown-runtime-CiIaOW0V.js +13 -0
  50. package/dist/{demo/AuthLayout-Brri4A-L.js → auth/AuthLayout-vXPcCVzp.js} +3 -4
  51. package/dist/auth/{AuthLayout-AvLlcLjS.js.map → AuthLayout-vXPcCVzp.js.map} +1 -1
  52. package/dist/{admin/IconGoogle-Ch1m3Uzl.js → auth/IconGoogle-8Nkx6yax.js} +2 -4
  53. package/dist/auth/{IconGoogle-Ch1m3Uzl.js.map → IconGoogle-8Nkx6yax.js.map} +1 -1
  54. package/dist/auth/{Login-BA1E8IZl.js → Login-Dg08QR20.js} +5 -6
  55. package/dist/{demo/Login-C12N4oGs.js.map → auth/Login-Dg08QR20.js.map} +1 -1
  56. package/dist/{demo/Profile-DS5q4vOh.js → auth/Profile-Bb5O1yeh.js} +3 -5
  57. package/dist/auth/{Profile-YcWdeuFz.js.map → Profile-Bb5O1yeh.js.map} +1 -1
  58. package/dist/auth/{Register-CPhEO5MG.js → Register-B2AN71NC.js} +5 -6
  59. package/dist/{admin/Register-JcCjHUUn.js.map → auth/Register-B2AN71NC.js.map} +1 -1
  60. package/dist/{demo/ResetPassword-D8g9ha1N.js → auth/ResetPassword-BLxwzbDj.js} +4 -5
  61. package/dist/{admin/ResetPassword-CwGBPLJO.js.map → auth/ResetPassword-BLxwzbDj.js.map} +1 -1
  62. package/dist/auth/{VerifyEmail-DkH7NBfn.js → VerifyEmail-CSDOk3Zm.js} +4 -5
  63. package/dist/{admin/VerifyEmail-hNxWejWf.js.map → auth/VerifyEmail-CSDOk3Zm.js.map} +1 -1
  64. package/dist/auth/{core-D5jIAVF2.js → core-DuGkjPiU.js} +23 -54
  65. package/dist/auth/core-DuGkjPiU.js.map +1 -0
  66. package/dist/auth/index.d.ts +20 -6
  67. package/dist/auth/index.d.ts.map +1 -1
  68. package/dist/auth/index.js +13 -18
  69. package/dist/auth/index.js.map +1 -1
  70. package/dist/auth/rolldown-runtime-CiIaOW0V.js +13 -0
  71. package/dist/core/index.d.ts +78 -20
  72. package/dist/core/index.d.ts.map +1 -1
  73. package/dist/core/index.js +130 -98
  74. package/dist/core/index.js.map +1 -1
  75. package/dist/{auth/AuthLayout-AvLlcLjS.js → demo/AuthLayout-DPsOOG4u.js} +3 -4
  76. package/dist/demo/{AuthLayout-Brri4A-L.js.map → AuthLayout-DPsOOG4u.js.map} +1 -1
  77. package/dist/demo/{DemoButton-wiCxZZ_L.js → DemoButton-wzcqGk4u.js} +4 -5
  78. package/dist/demo/{DemoButton-wiCxZZ_L.js.map → DemoButton-wzcqGk4u.js.map} +1 -1
  79. package/dist/demo/{DemoControlSelect-D7ILObVg.js → DemoControlSelect-CMWvQ6Gm.js} +4 -5
  80. package/dist/demo/{DemoControlSelect-D7ILObVg.js.map → DemoControlSelect-CMWvQ6Gm.js.map} +1 -1
  81. package/dist/demo/{DemoDataTable-DZ5Y8pFX.js → DemoDataTable-CHsAP3e2.js} +4 -5
  82. package/dist/demo/{DemoDataTable-DZ5Y8pFX.js.map → DemoDataTable-CHsAP3e2.js.map} +1 -1
  83. package/dist/demo/{DemoDialog-CUWdLHim.js → DemoDialog-Co2IePxX.js} +3 -4
  84. package/dist/demo/{DemoDialog-CUWdLHim.js.map → DemoDialog-Co2IePxX.js.map} +1 -1
  85. package/dist/demo/{DemoFlex-a8OhMMvq.js → DemoFlex-OEwQt5do.js} +4 -5
  86. package/dist/demo/{DemoFlex-a8OhMMvq.js.map → DemoFlex-OEwQt5do.js.map} +1 -1
  87. package/dist/demo/DemoHeading-Db-XkQIK.js +69 -0
  88. package/dist/demo/DemoHeading-Db-XkQIK.js.map +1 -0
  89. package/dist/demo/{DemoHome-D_De3UiT.js → DemoHome-Cyp29ygy.js} +4 -5
  90. package/dist/demo/{DemoHome-D_De3UiT.js.map → DemoHome-Cyp29ygy.js.map} +1 -1
  91. package/dist/demo/{DemoJsonViewer-B50s9aGM.js → DemoJsonViewer-DXtCeMzH.js} +4 -5
  92. package/dist/demo/{DemoJsonViewer-B50s9aGM.js.map → DemoJsonViewer-DXtCeMzH.js.map} +1 -1
  93. package/dist/demo/{DemoLayout-CHU8WTwO.js → DemoLayout-hh9VmZQP.js} +4 -5
  94. package/dist/demo/DemoLayout-hh9VmZQP.js.map +1 -0
  95. package/dist/demo/{DemoLogin-BBlrWpml.js → DemoLogin-DX7mnmkh.js} +15 -11
  96. package/dist/demo/{DemoLogin-BBlrWpml.js.map → DemoLogin-DX7mnmkh.js.map} +1 -1
  97. package/dist/demo/{DemoRegister-BuNE3_-f.js → DemoRegister-DVcZl04m.js} +15 -11
  98. package/dist/demo/{DemoRegister-BuNE3_-f.js.map → DemoRegister-DVcZl04m.js.map} +1 -1
  99. package/dist/demo/{DemoResetPassword-D_IjjjOJ.js → DemoResetPassword-CPENlZH5.js} +15 -11
  100. package/dist/demo/{DemoResetPassword-D_IjjjOJ.js.map → DemoResetPassword-CPENlZH5.js.map} +1 -1
  101. package/dist/demo/{DemoSidebar-Giy2HRBD.js → DemoSidebar-CGu7DZeM.js} +4 -5
  102. package/dist/demo/{DemoSidebar-Giy2HRBD.js.map → DemoSidebar-CGu7DZeM.js.map} +1 -1
  103. package/dist/demo/{DemoText-ubcw-vog.js → DemoText-DYUJ7bY_.js} +4 -5
  104. package/dist/demo/{DemoText-ubcw-vog.js.map → DemoText-DYUJ7bY_.js.map} +1 -1
  105. package/dist/demo/{DemoToast-9die_dYT.js → DemoToast-CgdnZNvx.js} +3 -4
  106. package/dist/demo/{DemoToast-9die_dYT.js.map → DemoToast-CgdnZNvx.js.map} +1 -1
  107. package/dist/demo/{DemoTypeForm-D_d6OVKL.js → DemoTypeForm-Pims-cGa.js} +4 -5
  108. package/dist/demo/{DemoTypeForm-D_d6OVKL.js.map → DemoTypeForm-Pims-cGa.js.map} +1 -1
  109. package/dist/demo/{DemoVerifyEmail-B43KlF4F.js → DemoVerifyEmail-C7B3xxch.js} +10 -11
  110. package/dist/demo/{DemoVerifyEmail-B43KlF4F.js.map → DemoVerifyEmail-C7B3xxch.js.map} +1 -1
  111. package/dist/{auth/IconGoogle-Ch1m3Uzl.js → demo/IconGoogle-CwQy4G9y.js} +2 -4
  112. package/dist/demo/{IconGoogle-CSQLPYwX.js.map → IconGoogle-CwQy4G9y.js.map} +1 -1
  113. package/dist/demo/{Login-C12N4oGs.js → Login-pwMF4TUj.js} +5 -6
  114. package/dist/{admin/Login-xtNmQtGh.js.map → demo/Login-pwMF4TUj.js.map} +1 -1
  115. package/dist/{auth/Profile-YcWdeuFz.js → demo/Profile-BliZapZS.js} +3 -5
  116. package/dist/{admin/Profile-_AtPUwAP.js.map → demo/Profile-BliZapZS.js.map} +1 -1
  117. package/dist/demo/{Register-B4hLBeEv.js → Register-CiwAT7Hy.js} +5 -6
  118. package/dist/{auth/Register-CPhEO5MG.js.map → demo/Register-CiwAT7Hy.js.map} +1 -1
  119. package/dist/{auth/ResetPassword-DCtGcneA.js → demo/ResetPassword-l9Vg4JE-.js} +4 -5
  120. package/dist/demo/{ResetPassword-D8g9ha1N.js.map → ResetPassword-l9Vg4JE-.js.map} +1 -1
  121. package/dist/demo/{Showcase-D6Fxt4X4.js → Showcase-CX6bDgwe.js} +3 -5
  122. package/dist/demo/{Showcase-D6Fxt4X4.js.map → Showcase-CX6bDgwe.js.map} +1 -1
  123. package/dist/demo/{VerifyEmail-BjDo0cZA.js → VerifyEmail-CAB-OS7i.js} +4 -5
  124. package/dist/demo/{VerifyEmail-BjDo0cZA.js.map → VerifyEmail-CAB-OS7i.js.map} +1 -1
  125. package/dist/demo/{auth-ByVTreDl.js → auth-uegJAdKu.js} +18 -35
  126. package/dist/demo/{auth-ByVTreDl.js.map → auth-uegJAdKu.js.map} +1 -1
  127. package/dist/demo/{core-DFgB3yU4.js → core-B4LVHzPn.js} +132 -93
  128. package/dist/demo/core-B4LVHzPn.js.map +1 -0
  129. package/dist/demo/index.js +20 -23
  130. package/dist/demo/index.js.map +1 -1
  131. package/dist/demo/rolldown-runtime-CiIaOW0V.js +13 -0
  132. package/package.json +17 -20
  133. package/src/admin/AdminRouter.tsx +23 -38
  134. package/src/admin/atoms/adminUserAtom.ts +7 -0
  135. package/src/admin/components/AdminLayout.tsx +2 -14
  136. package/src/admin/components/files/AdminFiles.tsx +123 -1
  137. package/src/admin/components/jobs/{AdminJobExecutions.tsx → AdminJobs.tsx} +450 -317
  138. package/src/admin/components/notifications/AdminNotifications.tsx +11 -25
  139. package/src/admin/components/users/AdminUserLayout.tsx +84 -127
  140. package/src/admin/components/users/AdminUserProfile.tsx +5 -2
  141. package/src/admin/components/users/AdminUsers.tsx +1 -1
  142. package/src/core/components/Flex.tsx +24 -0
  143. package/src/core/components/Section.tsx +109 -0
  144. package/src/core/components/SectionHeader.tsx +106 -0
  145. package/src/core/components/buttons/ActionButton.tsx +1 -0
  146. package/src/core/components/dialogs/PromptDialog.tsx +1 -1
  147. package/src/core/components/layout/Breadcrumb.tsx +2 -2
  148. package/src/core/components/layout/DashboardShell.tsx +1 -1
  149. package/src/core/index.ts +4 -1
  150. package/src/core/services/DialogService.tsx +2 -2
  151. package/src/core/styles.css +2 -1
  152. package/src/core/table/components/DataTable.tsx +5 -2
  153. package/src/demo/DemoRouter.ts +1 -1
  154. package/src/demo/components/auth/DemoLogin.tsx +5 -0
  155. package/src/demo/components/auth/DemoRegister.tsx +5 -0
  156. package/src/demo/components/auth/DemoResetPassword.tsx +5 -0
  157. package/src/demo/components/core/DemoHeading.tsx +56 -3
  158. package/dist/admin/AdminFiles-DFTjijGp.js +0 -111
  159. package/dist/admin/AdminFiles-DFTjijGp.js.map +0 -1
  160. package/dist/admin/AdminJobDashboard-BL8gGPDp.js +0 -354
  161. package/dist/admin/AdminJobDashboard-BL8gGPDp.js.map +0 -1
  162. package/dist/admin/AdminJobExecutions-D9E-CS-U.js.map +0 -1
  163. package/dist/admin/AdminJobRegistry-Ci9ue1zC.js +0 -270
  164. package/dist/admin/AdminJobRegistry-Ci9ue1zC.js.map +0 -1
  165. package/dist/admin/AdminLayout-I6TlUMPc.js.map +0 -1
  166. package/dist/admin/AdminNotifications-ZPHCYrv7.js.map +0 -1
  167. package/dist/admin/AdminUserLayout-lXT6I0Qq.js.map +0 -1
  168. package/dist/admin/AdminUserProfile-vFBLoJ3h.js.map +0 -1
  169. package/dist/admin/AdminUsers-D1UfGya9.js.map +0 -1
  170. package/dist/admin/core-CYaRQ8O-.js.map +0 -1
  171. package/dist/admin/rolldown-runtime-CjeV3_4I.js +0 -18
  172. package/dist/auth/core-D5jIAVF2.js.map +0 -1
  173. package/dist/auth/rolldown-runtime-CjeV3_4I.js +0 -18
  174. package/dist/demo/DemoHeading-C13OVDfS.js +0 -18
  175. package/dist/demo/DemoHeading-C13OVDfS.js.map +0 -1
  176. package/dist/demo/DemoLayout-CHU8WTwO.js.map +0 -1
  177. package/dist/demo/core-DFgB3yU4.js.map +0 -1
  178. package/dist/demo/rolldown-runtime-CjeV3_4I.js +0 -18
  179. package/src/admin/components/jobs/AdminJobDashboard.tsx +0 -349
  180. package/src/admin/components/jobs/AdminJobRegistry.tsx +0 -301
  181. package/src/core/components/Heading.tsx +0 -19
@@ -1,15 +1,14 @@
1
- import { t as AlephaUI } from "./core-DFgB3yU4.js";
1
+ import { t as AlephaUI } from "./core-B4LVHzPn.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";
5
-
6
5
  //#region ../../src/demo/DemoRouter.ts
7
6
  var DemoRouter = class {
8
7
  demoLayout = $page({
9
8
  icon: IconPackages,
10
9
  path: "/demo",
11
10
  label: "Demo",
12
- lazy: () => import("./DemoLayout-CHU8WTwO.js"),
11
+ lazy: () => import("./DemoLayout-hh9VmZQP.js"),
13
12
  children: () => [
14
13
  this.demoHome,
15
14
  this.demoCore,
@@ -24,7 +23,7 @@ var DemoRouter = class {
24
23
  icon: IconHome,
25
24
  path: "/",
26
25
  label: "Home",
27
- lazy: () => import("./DemoHome-D_De3UiT.js")
26
+ lazy: () => import("./DemoHome-Cyp29ygy.js")
28
27
  });
29
28
  demoCore = $page({
30
29
  icon: IconWall,
@@ -41,25 +40,25 @@ var DemoRouter = class {
41
40
  icon: IconRowInsertBottom,
42
41
  path: "/flex",
43
42
  label: "Flex",
44
- lazy: () => import("./DemoFlex-a8OhMMvq.js")
43
+ lazy: () => import("./DemoFlex-OEwQt5do.js")
45
44
  });
46
45
  demoText = $page({
47
46
  icon: IconLetterT,
48
47
  path: "/text",
49
48
  label: "Text",
50
- lazy: () => import("./DemoText-ubcw-vog.js")
49
+ lazy: () => import("./DemoText-DYUJ7bY_.js")
51
50
  });
52
51
  demoHeading = $page({
53
52
  icon: IconHeading,
54
53
  path: "/heading",
55
- label: "Heading",
56
- lazy: () => import("./DemoHeading-C13OVDfS.js")
54
+ label: "Section",
55
+ lazy: () => import("./DemoHeading-Db-XkQIK.js")
57
56
  });
58
57
  demoButton = $page({
59
58
  icon: IconClick,
60
59
  path: "/button",
61
60
  label: "Button",
62
- lazy: () => import("./DemoButton-wiCxZZ_L.js")
61
+ lazy: () => import("./DemoButton-wzcqGk4u.js")
63
62
  });
64
63
  demoLayoutSection = $page({
65
64
  icon: IconLayout,
@@ -75,19 +74,19 @@ var DemoRouter = class {
75
74
  icon: IconLayoutSidebar,
76
75
  path: "/sidebar",
77
76
  label: "Sidebar",
78
- lazy: () => import("./DemoSidebar-Giy2HRBD.js")
77
+ lazy: () => import("./DemoSidebar-CGu7DZeM.js")
79
78
  });
80
79
  demoDialog = $page({
81
80
  icon: IconMessage,
82
81
  path: "/dialog",
83
82
  label: "Dialog",
84
- lazy: () => import("./DemoDialog-CUWdLHim.js")
83
+ lazy: () => import("./DemoDialog-Co2IePxX.js")
85
84
  });
86
85
  demoToast = $page({
87
86
  icon: IconBell,
88
87
  path: "/toast",
89
88
  label: "Toast",
90
- lazy: () => import("./DemoToast-9die_dYT.js")
89
+ lazy: () => import("./DemoToast-CgdnZNvx.js")
91
90
  });
92
91
  demoForm = $page({
93
92
  icon: IconForms,
@@ -99,13 +98,13 @@ var DemoRouter = class {
99
98
  icon: IconForms,
100
99
  path: "/type-form",
101
100
  label: "TypeForm",
102
- lazy: () => import("./DemoTypeForm-D_d6OVKL.js")
101
+ lazy: () => import("./DemoTypeForm-Pims-cGa.js")
103
102
  });
104
103
  demoControlSelect = $page({
105
104
  icon: IconForms,
106
105
  path: "/control-select",
107
106
  label: "ControlSelect",
108
- lazy: () => import("./DemoControlSelect-D7ILObVg.js")
107
+ lazy: () => import("./DemoControlSelect-CMWvQ6Gm.js")
109
108
  });
110
109
  demoTable = $page({
111
110
  icon: IconTable,
@@ -117,7 +116,7 @@ var DemoRouter = class {
117
116
  icon: IconTable,
118
117
  path: "/data-table",
119
118
  label: "DataTable",
120
- lazy: () => import("./DemoDataTable-DZ5Y8pFX.js")
119
+ lazy: () => import("./DemoDataTable-CHsAP3e2.js")
121
120
  });
122
121
  demoJson = $page({
123
122
  icon: IconBraces,
@@ -129,7 +128,7 @@ var DemoRouter = class {
129
128
  icon: IconBinaryTree,
130
129
  path: "/viewer",
131
130
  label: "JsonViewer",
132
- lazy: () => import("./DemoJsonViewer-B50s9aGM.js")
131
+ lazy: () => import("./DemoJsonViewer-DXtCeMzH.js")
133
132
  });
134
133
  demoAuth = $page({
135
134
  icon: IconKey,
@@ -146,28 +145,27 @@ var DemoRouter = class {
146
145
  icon: IconLogin,
147
146
  path: "/login",
148
147
  label: "Login",
149
- lazy: () => import("./DemoLogin-BBlrWpml.js")
148
+ lazy: () => import("./DemoLogin-DX7mnmkh.js")
150
149
  });
151
150
  demoRegister = $page({
152
151
  icon: IconUserPlus,
153
152
  path: "/register",
154
153
  label: "Register",
155
- lazy: () => import("./DemoRegister-BuNE3_-f.js")
154
+ lazy: () => import("./DemoRegister-DVcZl04m.js")
156
155
  });
157
156
  demoResetPassword = $page({
158
157
  icon: IconLockQuestion,
159
158
  path: "/reset-password",
160
159
  label: "ResetPassword",
161
- lazy: () => import("./DemoResetPassword-D_IjjjOJ.js")
160
+ lazy: () => import("./DemoResetPassword-CPENlZH5.js")
162
161
  });
163
162
  demoVerifyEmail = $page({
164
163
  icon: IconMailCheck,
165
164
  path: "/verify-email",
166
165
  label: "VerifyEmail",
167
- lazy: () => import("./DemoVerifyEmail-B43KlF4F.js")
166
+ lazy: () => import("./DemoVerifyEmail-C7B3xxch.js")
168
167
  });
169
168
  };
170
-
171
169
  //#endregion
172
170
  //#region ../../src/demo/primitives/$uiDemo.ts
173
171
  /**
@@ -177,7 +175,6 @@ const $uiDemo = () => {
177
175
  const { alepha } = $context();
178
176
  return alepha.inject(DemoRouter);
179
177
  };
180
-
181
178
  //#endregion
182
179
  //#region ../../src/demo/index.ts
183
180
  /**
@@ -195,7 +192,7 @@ const AlephaUIDemo = $module({
195
192
  name: "alepha.ui.demo",
196
193
  services: [AlephaUI, DemoRouter]
197
194
  });
198
-
199
195
  //#endregion
200
196
  export { $uiDemo, AlephaUIDemo, DemoRouter };
197
+
201
198
  //# sourceMappingURL=index.js.map
@@ -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, 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":"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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: \"Section\",\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":"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"}
@@ -0,0 +1,13 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ //#endregion
13
+ export { __exportAll as t };
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "mantine"
8
8
  ],
9
9
  "author": "Nicolas Foures",
10
- "version": "0.18.3",
10
+ "version": "0.19.1",
11
11
  "type": "module",
12
12
  "engines": {
13
13
  "node": ">=22.0.0"
@@ -22,33 +22,30 @@
22
22
  "styles.css"
23
23
  ],
24
24
  "dependencies": {
25
- "@mantine/charts": "^8.3.15",
26
- "@mantine/core": "^8.3.15",
27
- "@mantine/dates": "^8.3.15",
28
- "@mantine/hooks": "^8.3.15",
29
- "@mantine/modals": "^8.3.15",
30
- "@mantine/notifications": "^8.3.15",
31
- "@mantine/nprogress": "^8.3.15",
32
- "@mantine/spotlight": "^8.3.15",
33
- "@tabler/icons-react": "^3.38.0",
34
- "dayjs": "^1.11.19",
35
- "react-is": "^19.2.4",
36
- "recharts": "^3.7.0"
25
+ "@mantine/core": "^8.3.18",
26
+ "@mantine/dates": "^8.3.18",
27
+ "@mantine/hooks": "^8.3.18",
28
+ "@mantine/modals": "^8.3.18",
29
+ "@mantine/notifications": "^8.3.18",
30
+ "@mantine/nprogress": "^8.3.18",
31
+ "@mantine/spotlight": "^8.3.18",
32
+ "@tabler/icons-react": "^3.40.0",
33
+ "dayjs": "^1.11.20"
37
34
  },
38
35
  "devDependencies": {
39
- "@biomejs/biome": "^2.4.5",
36
+ "@biomejs/biome": "^2.4.8",
40
37
  "@testing-library/dom": "^10.4.1",
41
38
  "@testing-library/react": "^16.3.2",
42
39
  "@types/react-is": "^19.2.0",
43
- "alepha": "0.18.3",
40
+ "alepha": "0.19.1",
44
41
  "react": "^19.2.4",
45
42
  "react-dom": "^19.2.4",
46
43
  "typescript": "^5.9.3",
47
- "vite": "^7.3.1",
48
- "vitest": "^4.0.18"
44
+ "vite": "^8.0.0",
45
+ "vitest": "^4.1.0"
49
46
  },
50
47
  "peerDependencies": {
51
- "alepha": "0.18.3",
48
+ "alepha": "0.19.1",
52
49
  "react": "*",
53
50
  "react-dom": "*"
54
51
  },
@@ -57,8 +54,8 @@
57
54
  "lint": "alepha lint && yarn build:check",
58
55
  "typecheck": "alepha typecheck",
59
56
  "test": "alepha test",
60
- "build": "node ../alepha/scripts/build.ts",
61
- "build:check": "node ../alepha/scripts/build.ts --check"
57
+ "build": "node ../../alepha/scripts/build.ts",
58
+ "build:check": "node ../../alepha/scripts/build.ts --check"
62
59
  },
63
60
  "repository": {
64
61
  "type": "git",
@@ -10,21 +10,18 @@ import {
10
10
  import { AuthRouter, UserButton } from "@alepha/ui/auth";
11
11
  import {
12
12
  IconBell,
13
- IconClock,
14
- IconDashboard,
15
13
  IconDevices,
16
14
  IconFile,
17
15
  IconHistory,
18
16
  IconKey,
19
17
  IconLayoutDashboard,
20
- IconListDetails,
21
18
  IconLockPassword,
22
19
  IconSettings,
23
20
  IconTerminal2,
24
21
  IconUser,
25
22
  IconUsers,
26
23
  } from "@tabler/icons-react";
27
- import { $inject } from "alepha";
24
+ import { $inject, t } from "alepha";
28
25
  import type { AdminAuditController } from "alepha/api/audits";
29
26
  import type { FileController } from "alepha/api/files";
30
27
  import type { AdminJobController } from "alepha/api/jobs";
@@ -37,6 +34,7 @@ import type {
37
34
  } from "alepha/api/users";
38
35
  import { ReactAuth } from "alepha/react/auth";
39
36
  import { $page, ReactRouter, Redirection } from "alepha/react/router";
37
+ import { $secure } from "alepha/security";
40
38
  import { $cookie } from "alepha/server/cookies";
41
39
  import { $client } from "alepha/server/links";
42
40
 
@@ -150,16 +148,7 @@ export class AdminRouter {
150
148
  can: () => this.fileCtrl.findFiles.can(),
151
149
  },
152
150
  {
153
- label: "Jobs",
154
- icon: IconTerminal2,
155
- children: [
156
- {
157
- ...this.router.node(this.adminJobDashboard.name),
158
- label: "Dashboard",
159
- },
160
- { ...this.router.node(this.adminJobRegistry.name) },
161
- { ...this.router.node(this.adminJobExecutions.name) },
162
- ],
151
+ ...this.router.node(this.adminJobs.name),
163
152
  },
164
153
  {
165
154
  ...this.router.node(this.adminNotifications.name),
@@ -202,6 +191,11 @@ export class AdminRouter {
202
191
  title: "Admin Panel",
203
192
  titleSeparator: " | ",
204
193
  },
194
+ use: [
195
+ $secure({
196
+ permissions: ["admin:access"],
197
+ }),
198
+ ],
205
199
  lazy: () => import("./components/AdminLayout.tsx"),
206
200
  props: () => ({
207
201
  adminShellProps: this.adminShellProps(),
@@ -249,7 +243,18 @@ export class AdminRouter {
249
243
  head: {
250
244
  title: "Users",
251
245
  },
246
+ schema: {
247
+ params: t.object({
248
+ userId: t.text(),
249
+ }),
250
+ },
252
251
  lazy: () => import("./components/users/AdminUserLayout.tsx"),
252
+ loader: async ({ params }) => {
253
+ const user = await this.userCtrl.getUser({
254
+ params: { id: params.userId },
255
+ });
256
+ return { user };
257
+ },
253
258
  });
254
259
 
255
260
  public readonly adminUserProfile = $page({
@@ -350,36 +355,16 @@ export class AdminRouter {
350
355
  // Jobs
351
356
  // ─────────────────────────────────────────────────────────────────────────────
352
357
 
353
- public readonly adminJobDashboard = $page({
354
- icon: IconDashboard,
358
+ public readonly adminJobs = $page({
359
+ icon: IconTerminal2,
355
360
  parent: this.adminLayout,
356
361
  path: "/jobs",
357
362
  label: "Jobs",
358
- description: "Monitor and manage background jobs and scheduled tasks.",
359
- lazy: () => import("./components/jobs/AdminJobDashboard.tsx"),
363
+ description: "Monitor and manage background jobs.",
364
+ lazy: () => import("./components/jobs/AdminJobs.tsx"),
360
365
  can: () => this.jobCtrl.getJobRegistry.can(),
361
366
  });
362
367
 
363
- public readonly adminJobRegistry = $page({
364
- icon: IconListDetails,
365
- parent: this.adminLayout,
366
- path: "/jobs/registry",
367
- label: "Registry",
368
- description: "View all registered job definitions.",
369
- lazy: () => import("./components/jobs/AdminJobRegistry.tsx"),
370
- can: () => this.jobCtrl.getJobRegistry.can(),
371
- });
372
-
373
- public readonly adminJobExecutions = $page({
374
- icon: IconClock,
375
- parent: this.adminLayout,
376
- path: "/jobs/executions",
377
- label: "Executions",
378
- description: "Browse and filter job execution history.",
379
- lazy: () => import("./components/jobs/AdminJobExecutions.tsx"),
380
- can: () => this.jobCtrl.findJobExecutions.can(),
381
- });
382
-
383
368
  // ─────────────────────────────────────────────────────────────────────────────
384
369
  // API Keys
385
370
  // ─────────────────────────────────────────────────────────────────────────────
@@ -0,0 +1,7 @@
1
+ import { $atom, t } from "alepha";
2
+ import { users } from "alepha/api/users";
3
+
4
+ export const adminUserAtom = $atom({
5
+ name: "alepha.admin.user",
6
+ schema: t.optional(users.schema),
7
+ });
@@ -4,10 +4,9 @@ import {
4
4
  DashboardShell,
5
5
  type DashboardShellProps,
6
6
  SidebarCollapseButton,
7
- Text,
8
7
  ui,
9
8
  } from "@alepha/ui";
10
- import { Flex, Image } from "@mantine/core";
9
+ import { Flex } from "@mantine/core";
11
10
  import { IconArrowLeft } from "@tabler/icons-react";
12
11
 
13
12
  export interface AdminLayoutProps {
@@ -31,7 +30,7 @@ const AdminLayout = (props: AdminLayoutProps) => {
31
30
  >
32
31
  <DashboardShell
33
32
  layout={"alt"}
34
- navbarHeader={(props) => (
33
+ navbarHeader={() => (
35
34
  <Flex gap={"md"} flex={1} px={"lg"} align={"center"}>
36
35
  <ActionButton
37
36
  href={"/"}
@@ -39,17 +38,6 @@ const AdminLayout = (props: AdminLayoutProps) => {
39
38
  bd={0}
40
39
  icon={IconArrowLeft}
41
40
  />
42
- {!props.collapsed && (
43
- <>
44
- <Image pt={4} src={"/favicon.svg"} h={36} w={36} />
45
- <Flex direction={"column"}>
46
- <Text bold>Blog</Text>
47
- <Text small muted mt={-4}>
48
- Admin Panel
49
- </Text>
50
- </Flex>
51
- </>
52
- )}
53
41
  </Flex>
54
42
  )}
55
43
  footerHeight={48}
@@ -1,4 +1,18 @@
1
- import { DataTable, Flex, Text } from "@alepha/ui";
1
+ import { DataTable, Flex, Text, useDialog, useToast } from "@alepha/ui";
2
+ import { HoverCard } from "@mantine/core";
3
+ import {
4
+ IconDownload,
5
+ IconFile,
6
+ IconFileCode,
7
+ IconFileMusic,
8
+ IconFileSpreadsheet,
9
+ IconFileText,
10
+ IconFileZip,
11
+ IconPdf,
12
+ IconPhoto,
13
+ IconTrash,
14
+ IconVideo,
15
+ } from "@tabler/icons-react";
2
16
  import { type Page, t } from "alepha";
3
17
  import { type FileController, type FileEntity, files } from "alepha/api/files";
4
18
  import { useClient } from "alepha/react";
@@ -7,6 +21,8 @@ import { useI18n } from "alepha/react/i18n";
7
21
  const AdminFiles = () => {
8
22
  const client = useClient<FileController>();
9
23
  const { l } = useI18n();
24
+ const dialog = useDialog();
25
+ const toast = useToast();
10
26
 
11
27
  const filters = t.object({
12
28
  bucket: t.optional(t.string()),
@@ -19,6 +35,34 @@ const AdminFiles = () => {
19
35
  ),
20
36
  });
21
37
 
38
+ const isImage = (mime: string) => mime.startsWith("image/");
39
+
40
+ const getFileIcon = (mime: string) => {
41
+ if (isImage(mime)) return IconPhoto;
42
+ if (mime === "application/pdf") return IconPdf;
43
+ if (mime.startsWith("video/")) return IconVideo;
44
+ if (mime.startsWith("audio/")) return IconFileMusic;
45
+ if (mime.startsWith("text/csv") || mime.includes("spreadsheet"))
46
+ return IconFileSpreadsheet;
47
+ if (
48
+ mime.includes("zip") ||
49
+ mime.includes("tar") ||
50
+ mime.includes("gzip") ||
51
+ mime.includes("compress")
52
+ )
53
+ return IconFileZip;
54
+ if (
55
+ mime.includes("javascript") ||
56
+ mime.includes("json") ||
57
+ mime.includes("xml") ||
58
+ mime.includes("html") ||
59
+ mime.includes("css")
60
+ )
61
+ return IconFileCode;
62
+ if (mime.startsWith("text/")) return IconFileText;
63
+ return IconFile;
64
+ };
65
+
22
66
  const formatFileSize = (bytes: number) => {
23
67
  if (bytes === 0) return "0 B";
24
68
  const k = 1024;
@@ -54,6 +98,53 @@ const AdminFiles = () => {
54
98
  return response as Page<FileEntity>;
55
99
  }}
56
100
  columns={{
101
+ preview: {
102
+ label: "",
103
+ fit: true,
104
+ value: (item) => {
105
+ const Icon = getFileIcon(item.mimeType);
106
+ const url = `/api/files/${item.id}`;
107
+
108
+ if (isImage(item.mimeType)) {
109
+ return (
110
+ <HoverCard
111
+ width={512}
112
+ position="right"
113
+ shadow="lg"
114
+ openDelay={200}
115
+ >
116
+ <HoverCard.Target>
117
+ <img
118
+ src={url}
119
+ alt={item.name}
120
+ style={{
121
+ width: 32,
122
+ height: 32,
123
+ objectFit: "cover",
124
+ borderRadius: 4,
125
+ display: "block",
126
+ }}
127
+ />
128
+ </HoverCard.Target>
129
+ <HoverCard.Dropdown p={4}>
130
+ <img
131
+ src={url}
132
+ alt={item.name}
133
+ style={{
134
+ width: 512,
135
+ height: 512,
136
+ objectFit: "contain",
137
+ display: "block",
138
+ }}
139
+ />
140
+ </HoverCard.Dropdown>
141
+ </HoverCard>
142
+ );
143
+ }
144
+
145
+ return <Icon size={20} color="var(--mantine-color-dimmed)" />;
146
+ },
147
+ },
57
148
  name: {
58
149
  label: "Name",
59
150
  value: (item) => (
@@ -103,6 +194,37 @@ const AdminFiles = () => {
103
194
  ),
104
195
  },
105
196
  }}
197
+ rowActions={(item) => [
198
+ {
199
+ label: "Download",
200
+ icon: IconDownload,
201
+ skipRefresh: true,
202
+ onClick: () => {
203
+ window.open(`/api/files/${item.id}`, "_blank");
204
+ },
205
+ },
206
+ ]}
207
+ checkboxActions={[
208
+ {
209
+ label: "Delete selected",
210
+ icon: <IconTrash size={14} />,
211
+ intent: "danger",
212
+ onClick: async ({ selectedItems, clearSelection }) => {
213
+ const confirmed = await dialog.confirm({
214
+ title: "Delete files",
215
+ message: `Permanently delete ${selectedItems.length} file(s)? This action cannot be undone.`,
216
+ });
217
+ if (!confirmed) return;
218
+ for (const file of selectedItems) {
219
+ await client.deleteFile({ params: { id: file.id } });
220
+ }
221
+ toast.success({
222
+ message: `${selectedItems.length} file(s) deleted`,
223
+ });
224
+ clearSelection();
225
+ },
226
+ },
227
+ ]}
106
228
  />
107
229
  </Flex>
108
230
  );