@alepha/ui 0.17.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/dist/admin/{AdminApiKeys-CF_qOO3u.js → AdminApiKeys-C-6_Q-lH.js} +56 -192
  2. package/dist/admin/AdminApiKeys-C-6_Q-lH.js.map +1 -0
  3. package/dist/admin/{AdminAudits-BQno3hZG.js → AdminAudits-Bgbf04hO.js} +25 -61
  4. package/dist/admin/AdminAudits-Bgbf04hO.js.map +1 -0
  5. package/dist/admin/{AdminFiles-kvuUaASF.js → AdminFiles-B9a7G3cY.js} +6 -8
  6. package/dist/admin/AdminFiles-B9a7G3cY.js.map +1 -0
  7. package/dist/admin/{AdminJobDashboard-CrPxp0W1.js → AdminJobDashboard-DaTwf5OY.js} +55 -186
  8. package/dist/admin/AdminJobDashboard-DaTwf5OY.js.map +1 -0
  9. package/dist/admin/{AdminJobExecutions-D-b4Zt7W.js → AdminJobExecutions-B9cek5dl.js} +132 -168
  10. package/dist/admin/AdminJobExecutions-B9cek5dl.js.map +1 -0
  11. package/dist/admin/{AdminJobRegistry-CNX5cpDx.js → AdminJobRegistry-DFgV3oqx.js} +60 -83
  12. package/dist/admin/AdminJobRegistry-DFgV3oqx.js.map +1 -0
  13. package/dist/admin/AdminLayout-DHsvWxVB.js +70 -0
  14. package/dist/admin/AdminLayout-DHsvWxVB.js.map +1 -0
  15. package/dist/admin/{AdminParameters-iQE8o7a7.js → AdminParameters-DHw9ATgl.js} +53 -53
  16. package/dist/admin/AdminParameters-DHw9ATgl.js.map +1 -0
  17. package/dist/admin/{AdminSessions-oKJCbd7w.js → AdminSessions-BhGJPI3z.js} +11 -18
  18. package/dist/admin/AdminSessions-BhGJPI3z.js.map +1 -0
  19. package/dist/admin/{AdminUserLayout-HAlobhWf.js → AdminUserLayout-BdC4Te8m.js} +112 -151
  20. package/dist/admin/AdminUserLayout-BdC4Te8m.js.map +1 -0
  21. package/dist/admin/AdminUserProfile-DAt23fqY.js +69 -0
  22. package/dist/admin/AdminUserProfile-DAt23fqY.js.map +1 -0
  23. package/dist/admin/AdminUserSessions-1uzcx02z.js +109 -0
  24. package/dist/admin/AdminUserSessions-1uzcx02z.js.map +1 -0
  25. package/dist/admin/AdminUsers-C85c3eiQ.js +121 -0
  26. package/dist/admin/AdminUsers-C85c3eiQ.js.map +1 -0
  27. package/dist/{auth/AuthLayout-CdJcrPs4.js → admin/AuthLayout-DFJvCvzw.js} +3 -3
  28. package/dist/{auth/AuthLayout-CdJcrPs4.js.map → admin/AuthLayout-DFJvCvzw.js.map} +1 -1
  29. package/dist/{auth/IconGoogle-Bm18QD2q.js → admin/IconGoogle-CSQLPYwX.js} +1 -1
  30. package/dist/{auth/IconGoogle-Bm18QD2q.js.map → admin/IconGoogle-CSQLPYwX.js.map} +1 -1
  31. package/dist/{demo/DemoLogin-DjJ9314c.js → admin/Login-BGheURrg.js} +15 -129
  32. package/dist/{auth/Login-BS_FYTy0.js.map → admin/Login-BGheURrg.js.map} +1 -1
  33. package/dist/{auth/Profile-CjDsW378.js → admin/Profile-B-c9pCPf.js} +5 -5
  34. package/dist/{auth/Profile-CjDsW378.js.map → admin/Profile-B-c9pCPf.js.map} +1 -1
  35. package/dist/{demo/DemoRegister-DzkJ5M83.js → admin/Register-Cs10l8vX.js} +20 -146
  36. package/dist/{auth/Register-C5eqzAaD.js.map → admin/Register-Cs10l8vX.js.map} +1 -1
  37. package/dist/{demo/DemoResetPassword-DWh4_BpQ.js → admin/ResetPassword-BwDdfkGH.js} +20 -82
  38. package/dist/{auth/ResetPassword-XifinVao.js.map → admin/ResetPassword-BwDdfkGH.js.map} +1 -1
  39. package/dist/{demo/DemoVerifyEmail-DbU_tCj8.js → admin/VerifyEmail-DfXHAiQl.js} +15 -32
  40. package/dist/{auth/VerifyEmail-DTgbeJOO.js.map → admin/VerifyEmail-DfXHAiQl.js.map} +1 -1
  41. package/dist/admin/auth-Dr0Cf8I7.js +319 -0
  42. package/dist/admin/auth-Dr0Cf8I7.js.map +1 -0
  43. package/dist/admin/core-2xoLiT0o.js +4031 -0
  44. package/dist/admin/core-2xoLiT0o.js.map +1 -0
  45. package/dist/admin/index.d.ts +740 -17
  46. package/dist/admin/index.d.ts.map +1 -1
  47. package/dist/admin/index.js +80 -127
  48. package/dist/admin/index.js.map +1 -1
  49. package/dist/admin/rolldown-runtime-CjeV3_4I.js +18 -0
  50. package/dist/auth/AuthLayout-CAE1pX9s.js +22 -0
  51. package/dist/auth/AuthLayout-CAE1pX9s.js.map +1 -0
  52. package/dist/auth/{Login-BS_FYTy0.js → Login-Denw_UGy.js} +8 -8
  53. package/dist/auth/Login-Denw_UGy.js.map +1 -0
  54. package/dist/auth/Profile-BMX_Ar_s.js +155 -0
  55. package/dist/auth/Profile-BMX_Ar_s.js.map +1 -0
  56. package/dist/auth/{Register-C5eqzAaD.js → Register-6hi_cpfF.js} +8 -8
  57. package/dist/auth/Register-6hi_cpfF.js.map +1 -0
  58. package/dist/auth/{ResetPassword-XifinVao.js → ResetPassword-CqfTk1FI.js} +6 -6
  59. package/dist/auth/ResetPassword-CqfTk1FI.js.map +1 -0
  60. package/dist/auth/{VerifyEmail-DTgbeJOO.js → VerifyEmail-nWiSTMjF.js} +5 -5
  61. package/dist/auth/VerifyEmail-nWiSTMjF.js.map +1 -0
  62. package/dist/auth/core-niW0sFLv.js +2264 -0
  63. package/dist/auth/core-niW0sFLv.js.map +1 -0
  64. package/dist/auth/index.d.ts +336 -8
  65. package/dist/auth/index.d.ts.map +1 -1
  66. package/dist/auth/index.js +18 -22
  67. package/dist/auth/index.js.map +1 -1
  68. package/dist/core/index.d.ts +1033 -843
  69. package/dist/core/index.d.ts.map +1 -1
  70. package/dist/core/index.js +1626 -1354
  71. package/dist/core/index.js.map +1 -1
  72. package/dist/demo/AuthLayout-jLa0aKsI.js +22 -0
  73. package/dist/demo/AuthLayout-jLa0aKsI.js.map +1 -0
  74. package/dist/demo/DemoButton-BmaWZVwf.js +178 -0
  75. package/dist/demo/DemoButton-BmaWZVwf.js.map +1 -0
  76. package/dist/demo/{DemoDataTable-lnBKWBf8.js → DemoDataTable-Z9xyV221.js} +18 -18
  77. package/dist/demo/DemoDataTable-Z9xyV221.js.map +1 -0
  78. package/dist/demo/DemoDialog-4ItHLf9t.js +101 -0
  79. package/dist/demo/DemoDialog-4ItHLf9t.js.map +1 -0
  80. package/dist/demo/DemoFlex-EtVq8QfX.js +105 -0
  81. package/dist/demo/DemoFlex-EtVq8QfX.js.map +1 -0
  82. package/dist/demo/DemoHeading-BS-vGfkI.js +18 -0
  83. package/dist/demo/DemoHeading-BS-vGfkI.js.map +1 -0
  84. package/dist/demo/{DemoHome-CUMZsYaH.js → DemoHome-Clbn8AmS.js} +9 -12
  85. package/dist/demo/DemoHome-Clbn8AmS.js.map +1 -0
  86. package/dist/demo/DemoJsonViewer-DkIX_ky2.js +109 -0
  87. package/dist/demo/DemoJsonViewer-DkIX_ky2.js.map +1 -0
  88. package/dist/demo/DemoLayout-C56xb5EE.js +73 -0
  89. package/dist/demo/DemoLayout-C56xb5EE.js.map +1 -0
  90. package/dist/demo/DemoLogin-BZwpicOS.js +128 -0
  91. package/dist/demo/DemoLogin-BZwpicOS.js.map +1 -0
  92. package/dist/demo/DemoRegister-C7_qc4MJ.js +140 -0
  93. package/dist/demo/DemoRegister-C7_qc4MJ.js.map +1 -0
  94. package/dist/demo/DemoResetPassword-BI1Ct4Dw.js +76 -0
  95. package/dist/demo/DemoResetPassword-BI1Ct4Dw.js.map +1 -0
  96. package/dist/demo/{DemoSidebar-C1csnGhX.js → DemoSidebar-CcBo4ltC.js} +6 -9
  97. package/dist/demo/DemoSidebar-CcBo4ltC.js.map +1 -0
  98. package/dist/demo/DemoText-CzXuUn3g.js +124 -0
  99. package/dist/demo/DemoText-CzXuUn3g.js.map +1 -0
  100. package/dist/demo/DemoToast-BgHDhWrX.js +95 -0
  101. package/dist/demo/DemoToast-BgHDhWrX.js.map +1 -0
  102. package/dist/demo/{DemoTypeForm-CWz6fJrJ.js → DemoTypeForm-DDzWoMSV.js} +4 -4
  103. package/dist/demo/{DemoTypeForm-CWz6fJrJ.js.map → DemoTypeForm-DDzWoMSV.js.map} +1 -1
  104. package/dist/demo/DemoVerifyEmail-C_Irdnov.js +30 -0
  105. package/dist/demo/DemoVerifyEmail-C_Irdnov.js.map +1 -0
  106. package/dist/demo/IconGoogle-CSQLPYwX.js +56 -0
  107. package/dist/demo/IconGoogle-CSQLPYwX.js.map +1 -0
  108. package/dist/demo/Login-hSOU3jZc.js +219 -0
  109. package/dist/demo/Login-hSOU3jZc.js.map +1 -0
  110. package/dist/demo/Profile-CWqti7FB.js +155 -0
  111. package/dist/demo/Profile-CWqti7FB.js.map +1 -0
  112. package/dist/demo/Register-a70LPgs2.js +375 -0
  113. package/dist/demo/Register-a70LPgs2.js.map +1 -0
  114. package/dist/demo/ResetPassword-DWN0lzr5.js +286 -0
  115. package/dist/demo/ResetPassword-DWN0lzr5.js.map +1 -0
  116. package/dist/demo/Showcase-Dq3MISpd.js +232 -0
  117. package/dist/demo/Showcase-Dq3MISpd.js.map +1 -0
  118. package/dist/demo/VerifyEmail-DZWL72K4.js +135 -0
  119. package/dist/demo/VerifyEmail-DZWL72K4.js.map +1 -0
  120. package/dist/demo/auth-d6n3xbug.js +257 -0
  121. package/dist/demo/auth-d6n3xbug.js.map +1 -0
  122. package/dist/demo/core-RCUw1Q-a.js +4217 -0
  123. package/dist/demo/core-RCUw1Q-a.js.map +1 -0
  124. package/dist/demo/index.d.ts +17 -6
  125. package/dist/demo/index.d.ts.map +1 -1
  126. package/dist/demo/index.js +92 -24
  127. package/dist/demo/index.js.map +1 -1
  128. package/dist/demo/rolldown-runtime-CjeV3_4I.js +18 -0
  129. package/package.json +16 -20
  130. package/src/admin/AdminRouter.ts +12 -61
  131. package/src/admin/components/AdminLayout.tsx +42 -10
  132. package/src/admin/components/audits/AdminAudits.tsx +10 -64
  133. package/src/admin/components/files/AdminFiles.tsx +2 -3
  134. package/src/admin/components/jobs/AdminJobDashboard.tsx +36 -142
  135. package/src/admin/components/jobs/AdminJobExecutions.tsx +117 -175
  136. package/src/admin/components/jobs/AdminJobRegistry.tsx +58 -73
  137. package/src/admin/components/keys/AdminApiKeys.tsx +21 -169
  138. package/src/admin/components/parameters/AdminParameters.tsx +4 -4
  139. package/src/admin/components/parameters/ParameterEmptyState.tsx +1 -2
  140. package/src/admin/components/parameters/ParameterHistory.tsx +3 -3
  141. package/src/admin/components/parameters/ParameterTree.tsx +2 -8
  142. package/src/admin/components/parameters/types.ts +3 -3
  143. package/src/admin/components/sessions/AdminSessions.tsx +8 -16
  144. package/src/admin/components/users/AdminUserLayout.tsx +113 -150
  145. package/src/admin/components/users/AdminUserProfile.tsx +50 -0
  146. package/src/admin/components/users/AdminUserSessions.tsx +106 -126
  147. package/src/admin/components/users/AdminUsers.tsx +46 -62
  148. package/src/admin/index.ts +1 -5
  149. package/src/auth/components/buttons/UserButton.tsx +1 -1
  150. package/src/auth/index.ts +0 -4
  151. package/src/core/UiRouter.ts +1 -1
  152. package/src/core/atoms/alephaSidebarAtom.ts +7 -31
  153. package/src/core/components/{layout/AlephaMantineProvider.tsx → AlephaMantineProvider.tsx} +3 -4
  154. package/src/core/components/Flex.tsx +63 -0
  155. package/src/core/components/Heading.tsx +19 -0
  156. package/src/core/components/Text.tsx +140 -0
  157. package/src/core/components/buttons/ActionButton.tsx +12 -1
  158. package/src/core/components/buttons/BurgerButton.tsx +3 -3
  159. package/src/core/components/buttons/LanguageButton.tsx +1 -1
  160. package/src/core/components/buttons/ToggleSidebarButton.tsx +1 -4
  161. package/src/core/components/data/DetailDrawer.tsx +144 -0
  162. package/src/core/components/data/DetailList.tsx +64 -0
  163. package/src/core/components/data/StatCards.tsx +50 -0
  164. package/src/core/components/layout/AppBar.tsx +11 -10
  165. package/src/core/components/layout/Breadcrumb.tsx +8 -8
  166. package/src/core/components/layout/Container.tsx +15 -0
  167. package/src/core/components/layout/DashboardShell.tsx +23 -238
  168. package/src/core/components/layout/Omnibar.tsx +1 -2
  169. package/src/core/components/layout/Sidebar.tsx +103 -71
  170. package/src/core/components/layout/index.ts +65 -0
  171. package/src/core/{components/form → form/components}/Control.tsx +32 -14
  172. package/src/core/{components/form → form/components}/ControlArray.tsx +2 -5
  173. package/src/core/{components/form → form/components}/ControlDate.tsx +1 -4
  174. package/src/core/{components/form → form/components}/ControlNumber.tsx +1 -4
  175. package/src/core/{components/form → form/components}/ControlObject.tsx +1 -4
  176. package/src/core/{components/form → form/components}/ControlQueryBuilder.tsx +7 -7
  177. package/src/core/{components/form → form/components}/ControlSelect.tsx +2 -4
  178. package/src/core/{components/form → form/components}/TypeForm.browser.spec.tsx +22 -64
  179. package/src/core/{components/form → form/components}/TypeForm.tsx +1 -3
  180. package/src/core/form/factories/dialogForm.tsx +31 -0
  181. package/src/core/form/index.ts +23 -0
  182. package/src/core/{utils → form/utils}/parseInput.ts +2 -4
  183. package/src/core/index.ts +43 -51
  184. package/src/core/interfaces/AlephaIntent.ts +6 -0
  185. package/src/core/interfaces/AlephaTheme.ts +0 -1
  186. package/src/core/json/factories/dialogJson.tsx +24 -0
  187. package/src/core/json/index.ts +2 -0
  188. package/src/core/primitives/$ui.ts +17 -0
  189. package/src/core/services/DialogService.tsx +1 -48
  190. package/src/core/styles.css +1 -8
  191. package/src/core/{components/table → table/components}/ColumnPicker.tsx +2 -3
  192. package/src/core/{components/table → table/components}/DataTable.tsx +8 -9
  193. package/src/core/{components/table → table/components}/DataTableFilters.tsx +6 -3
  194. package/src/core/{components/table → table/components}/DataTableToolbar.tsx +4 -5
  195. package/src/core/{components/table → table/components}/FilterPicker.tsx +2 -3
  196. package/src/core/table/index.ts +12 -0
  197. package/src/core/{components/table → table/interfaces}/types.ts +2 -2
  198. package/src/demo/DemoRouter.ts +87 -6
  199. package/src/demo/components/DemoHome.tsx +6 -10
  200. package/src/demo/components/DemoLayout.tsx +38 -8
  201. package/src/demo/components/auth/DemoLogin.tsx +1 -1
  202. package/src/demo/components/auth/DemoRegister.tsx +1 -1
  203. package/src/demo/components/auth/DemoResetPassword.tsx +1 -1
  204. package/src/demo/components/auth/DemoVerifyEmail.tsx +1 -1
  205. package/src/demo/components/core/DemoButton.tsx +160 -0
  206. package/src/demo/components/core/DemoFlex.tsx +101 -0
  207. package/src/demo/components/core/DemoHeading.tsx +13 -0
  208. package/src/demo/components/core/DemoText.tsx +110 -0
  209. package/src/demo/components/json/DemoJsonViewer.tsx +1 -1
  210. package/src/demo/components/layout/DemoDialog.tsx +103 -0
  211. package/src/demo/components/{core → layout}/DemoSidebar.tsx +0 -1
  212. package/src/demo/components/layout/DemoToast.tsx +96 -0
  213. package/src/demo/components/shared/MacWindow.tsx +149 -74
  214. package/src/demo/components/shared/Showcase.tsx +4 -8
  215. package/src/demo/index.ts +1 -4
  216. package/src/demo/primitives/$uiDemo.ts +10 -0
  217. package/dist/admin/AdminApiKeys-CF_qOO3u.js.map +0 -1
  218. package/dist/admin/AdminAudits-BQno3hZG.js.map +0 -1
  219. package/dist/admin/AdminFiles-kvuUaASF.js.map +0 -1
  220. package/dist/admin/AdminJobDashboard-CrPxp0W1.js.map +0 -1
  221. package/dist/admin/AdminJobExecutions-D-b4Zt7W.js.map +0 -1
  222. package/dist/admin/AdminJobRegistry-CNX5cpDx.js.map +0 -1
  223. package/dist/admin/AdminLayout-e-ZP5nWw.js +0 -37
  224. package/dist/admin/AdminLayout-e-ZP5nWw.js.map +0 -1
  225. package/dist/admin/AdminNotifications-DeHJFf6W.js +0 -153
  226. package/dist/admin/AdminNotifications-DeHJFf6W.js.map +0 -1
  227. package/dist/admin/AdminParameters-iQE8o7a7.js.map +0 -1
  228. package/dist/admin/AdminSessions-oKJCbd7w.js.map +0 -1
  229. package/dist/admin/AdminUserAudits-BNCEle_E.js +0 -177
  230. package/dist/admin/AdminUserAudits-BNCEle_E.js.map +0 -1
  231. package/dist/admin/AdminUserCreate-CgqeFwCt.js +0 -104
  232. package/dist/admin/AdminUserCreate-CgqeFwCt.js.map +0 -1
  233. package/dist/admin/AdminUserDetails-DDe1A1GP.js +0 -477
  234. package/dist/admin/AdminUserDetails-DDe1A1GP.js.map +0 -1
  235. package/dist/admin/AdminUserLayout-HAlobhWf.js.map +0 -1
  236. package/dist/admin/AdminUserSessions-Bq1LnVLf.js +0 -129
  237. package/dist/admin/AdminUserSessions-Bq1LnVLf.js.map +0 -1
  238. package/dist/admin/AdminUserSettings-BRsBZoxV.js +0 -167
  239. package/dist/admin/AdminUserSettings-BRsBZoxV.js.map +0 -1
  240. package/dist/admin/AdminUsers-D71kIOSn.js +0 -118
  241. package/dist/admin/AdminUsers-D71kIOSn.js.map +0 -1
  242. package/dist/demo/DemoDataTable-lnBKWBf8.js.map +0 -1
  243. package/dist/demo/DemoHome-CUMZsYaH.js.map +0 -1
  244. package/dist/demo/DemoJsonViewer-_uokbGaW.js +0 -429
  245. package/dist/demo/DemoJsonViewer-_uokbGaW.js.map +0 -1
  246. package/dist/demo/DemoLayout-DHVoacE6.js +0 -46
  247. package/dist/demo/DemoLayout-DHVoacE6.js.map +0 -1
  248. package/dist/demo/DemoLogin-DjJ9314c.js.map +0 -1
  249. package/dist/demo/DemoRegister-DzkJ5M83.js.map +0 -1
  250. package/dist/demo/DemoResetPassword-DWh4_BpQ.js.map +0 -1
  251. package/dist/demo/DemoSidebar-C1csnGhX.js.map +0 -1
  252. package/dist/demo/DemoVerifyEmail-DbU_tCj8.js.map +0 -1
  253. package/dist/demo/Showcase-BzoXNlCn.js +0 -185
  254. package/dist/demo/Showcase-BzoXNlCn.js.map +0 -1
  255. package/dist/json/index.d.ts +0 -57
  256. package/dist/json/index.d.ts.map +0 -1
  257. package/dist/json/index.js +0 -325
  258. package/dist/json/index.js.map +0 -1
  259. package/src/admin/components/notifications/AdminNotifications.tsx +0 -204
  260. package/src/admin/components/users/AdminUserAudits.tsx +0 -184
  261. package/src/admin/components/users/AdminUserCreate.tsx +0 -85
  262. package/src/admin/components/users/AdminUserDetails.tsx +0 -431
  263. package/src/admin/components/users/AdminUserSettings.tsx +0 -171
  264. package/src/core/components/data/ErrorViewer.tsx +0 -171
  265. package/src/json/extensions/DialogService.tsx +0 -31
  266. package/src/json/index.ts +0 -18
  267. package/src/json/styles.css +0 -1
  268. /package/dist/{demo → auth}/IconGoogle-Ch1m3Uzl.js +0 -0
  269. /package/dist/{demo → auth}/IconGoogle-Ch1m3Uzl.js.map +0 -0
  270. /package/src/{json → core/json}/components/JsonViewer.css +0 -0
  271. /package/src/{json → core/json}/components/JsonViewer.tsx +0 -0
  272. /package/src/core/{components/table → table/components}/DataTablePagination.tsx +0 -0
  273. /package/src/core/{components/table → table/components}/useTableSelection.ts +0 -0
@@ -1,12 +1,12 @@
1
- import { ActionButton, ClipboardButton, DataTable, Flex, Text, useDialog, useToast } from "@alepha/ui";
1
+ import { _ as ActionButton, b as useToast, d as StatCards, g as ClipboardButton, i as useDialog, r as DataTable, s as Text$1, u as Flex$1 } from "./core-2xoLiT0o.js";
2
2
  import { t } from "alepha";
3
- import { IconCalendarOff, IconCheck, IconClock, IconKey, IconNetwork, IconShieldCheck, IconShieldOff, IconTrash, IconUser } from "@tabler/icons-react";
4
- import { useRouter } from "alepha/react/router";
5
- import { ActionIcon, Badge, Code, Paper, RingProgress, SimpleGrid, ThemeIcon, Tooltip } from "@mantine/core";
6
- import { jsx, jsxs } from "react/jsx-runtime";
7
- import { useClient } from "alepha/react";
8
3
  import { useI18n } from "alepha/react/i18n";
4
+ import { Badge, Code, Tooltip } from "@mantine/core";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
9
6
  import { useCallback, useState } from "react";
7
+ import { IconCheck, IconClock, IconKey, IconNetwork, IconTrash, IconUser } from "@tabler/icons-react";
8
+ import { useRouter } from "alepha/react/router";
9
+ import { useClient } from "alepha/react";
10
10
 
11
11
  //#region ../../src/admin/components/keys/AdminApiKeys.tsx
12
12
  const getKeyStatus = (key) => {
@@ -14,144 +14,9 @@ const getKeyStatus = (key) => {
14
14
  if (key.expiresAt && new Date(key.expiresAt) < /* @__PURE__ */ new Date()) return "expired";
15
15
  return "active";
16
16
  };
17
- const getStatusColor = (status) => {
18
- switch (status) {
19
- case "active": return "teal";
20
- case "revoked": return "red";
21
- case "expired": return "orange";
22
- }
23
- };
24
- const getStatusIcon = (status) => {
25
- switch (status) {
26
- case "active": return /* @__PURE__ */ jsx(IconShieldCheck, { size: 14 });
27
- case "revoked": return /* @__PURE__ */ jsx(IconShieldOff, { size: 14 });
28
- case "expired": return /* @__PURE__ */ jsx(IconCalendarOff, { size: 14 });
29
- }
30
- };
31
17
  const formatKeyPreview = (prefix, suffix) => {
32
18
  return `${prefix}...${suffix}`;
33
19
  };
34
- const StatsCards = ({ stats, loading }) => {
35
- const activePercentage = stats.total > 0 ? Math.round(stats.active / stats.total * 100) : 0;
36
- return /* @__PURE__ */ jsxs(SimpleGrid, {
37
- cols: {
38
- base: 2,
39
- sm: 4
40
- },
41
- spacing: "md",
42
- children: [
43
- /* @__PURE__ */ jsx(Paper, {
44
- p: "md",
45
- radius: "md",
46
- withBorder: true,
47
- children: /* @__PURE__ */ jsxs(Flex, {
48
- justify: "space-between",
49
- children: [/* @__PURE__ */ jsxs(Flex, { children: [/* @__PURE__ */ jsx(Text, {
50
- size: "xs",
51
- c: "dimmed",
52
- tt: "uppercase",
53
- fw: 600,
54
- children: "Total Keys"
55
- }), /* @__PURE__ */ jsx(Text, {
56
- size: "xl",
57
- fw: 700,
58
- ff: "monospace",
59
- children: stats.total
60
- })] }), /* @__PURE__ */ jsx(ThemeIcon, {
61
- size: "lg",
62
- radius: "md",
63
- variant: "light",
64
- color: "blue",
65
- children: /* @__PURE__ */ jsx(IconKey, { size: 20 })
66
- })]
67
- })
68
- }),
69
- /* @__PURE__ */ jsx(Paper, {
70
- p: "md",
71
- radius: "md",
72
- withBorder: true,
73
- children: /* @__PURE__ */ jsxs(Flex, {
74
- justify: "space-between",
75
- children: [/* @__PURE__ */ jsxs(Flex, { children: [/* @__PURE__ */ jsx(Text, {
76
- size: "xs",
77
- c: "dimmed",
78
- tt: "uppercase",
79
- fw: 600,
80
- children: "Active"
81
- }), /* @__PURE__ */ jsx(Text, {
82
- size: "xl",
83
- fw: 700,
84
- ff: "monospace",
85
- c: "teal",
86
- children: stats.active
87
- })] }), /* @__PURE__ */ jsx(RingProgress, {
88
- size: 48,
89
- thickness: 4,
90
- roundCaps: true,
91
- sections: [{
92
- value: activePercentage,
93
- color: "teal"
94
- }]
95
- })]
96
- })
97
- }),
98
- /* @__PURE__ */ jsx(Paper, {
99
- p: "md",
100
- radius: "md",
101
- withBorder: true,
102
- children: /* @__PURE__ */ jsxs(Flex, {
103
- justify: "space-between",
104
- children: [/* @__PURE__ */ jsxs(Flex, { children: [/* @__PURE__ */ jsx(Text, {
105
- size: "xs",
106
- c: "dimmed",
107
- tt: "uppercase",
108
- fw: 600,
109
- children: "Revoked"
110
- }), /* @__PURE__ */ jsx(Text, {
111
- size: "xl",
112
- fw: 700,
113
- ff: "monospace",
114
- c: "red",
115
- children: stats.revoked
116
- })] }), /* @__PURE__ */ jsx(ThemeIcon, {
117
- size: "lg",
118
- radius: "md",
119
- variant: "light",
120
- color: stats.revoked > 0 ? "red" : "gray",
121
- children: /* @__PURE__ */ jsx(IconShieldOff, { size: 20 })
122
- })]
123
- })
124
- }),
125
- /* @__PURE__ */ jsx(Paper, {
126
- p: "md",
127
- radius: "md",
128
- withBorder: true,
129
- children: /* @__PURE__ */ jsxs(Flex, {
130
- justify: "space-between",
131
- children: [/* @__PURE__ */ jsxs(Flex, { children: [/* @__PURE__ */ jsx(Text, {
132
- size: "xs",
133
- c: "dimmed",
134
- tt: "uppercase",
135
- fw: 600,
136
- children: "Never Used"
137
- }), /* @__PURE__ */ jsx(Text, {
138
- size: "xl",
139
- fw: 700,
140
- ff: "monospace",
141
- c: "yellow",
142
- children: stats.neverUsed
143
- })] }), /* @__PURE__ */ jsx(ThemeIcon, {
144
- size: "lg",
145
- radius: "md",
146
- variant: "light",
147
- color: stats.neverUsed > 0 ? "yellow" : "gray",
148
- children: /* @__PURE__ */ jsx(IconClock, { size: 20 })
149
- })]
150
- })
151
- })
152
- ]
153
- });
154
- };
155
20
  const AdminApiKeys = () => {
156
21
  const client = useClient();
157
22
  const router = useRouter();
@@ -208,14 +73,32 @@ const AdminApiKeys = () => {
208
73
  setStats(newStats);
209
74
  setLoading(false);
210
75
  }, []);
211
- return /* @__PURE__ */ jsxs(Flex, {
76
+ return /* @__PURE__ */ jsxs(Flex$1, {
212
77
  flex: 1,
213
78
  direction: "column",
214
79
  gap: "md",
215
- children: [/* @__PURE__ */ jsx(StatsCards, {
216
- stats,
217
- loading
218
- }), /* @__PURE__ */ jsx(DataTable, {
80
+ children: [/* @__PURE__ */ jsx(StatCards, { items: [
81
+ {
82
+ label: "Total Keys",
83
+ value: stats.total,
84
+ icon: IconKey
85
+ },
86
+ {
87
+ label: "Active",
88
+ value: stats.active,
89
+ icon: IconCheck
90
+ },
91
+ {
92
+ label: "Revoked",
93
+ value: stats.revoked,
94
+ icon: IconTrash
95
+ },
96
+ {
97
+ label: "Never Used",
98
+ value: stats.neverUsed,
99
+ icon: IconClock
100
+ }
101
+ ] }), /* @__PURE__ */ jsx(DataTable, {
219
102
  submitOnInit: true,
220
103
  defaultSize: 15,
221
104
  typeFormProps: {
@@ -233,13 +116,7 @@ const AdminApiKeys = () => {
233
116
  filters,
234
117
  tableTrProps: (item) => {
235
118
  const status = getKeyStatus(item);
236
- if (status === "revoked") return {
237
- opacity: .6,
238
- style: {
239
- textDecoration: "line-through",
240
- textDecorationColor: "var(--mantine-color-red-5)"
241
- }
242
- };
119
+ if (status === "revoked") return { opacity: .6 };
243
120
  if (status === "expired") return { opacity: .7 };
244
121
  return {};
245
122
  },
@@ -257,23 +134,14 @@ const AdminApiKeys = () => {
257
134
  columns: {
258
135
  name: {
259
136
  label: "Name",
260
- value: (item) => /* @__PURE__ */ jsxs(Flex, {
137
+ value: (item) => /* @__PURE__ */ jsxs(Flex$1, {
261
138
  direction: "column",
262
139
  gap: 2,
263
- children: [/* @__PURE__ */ jsxs(Flex, {
264
- gap: "xs",
265
- children: [/* @__PURE__ */ jsx(ThemeIcon, {
266
- size: "xs",
267
- radius: "sm",
268
- variant: "light",
269
- color: getStatusColor(getKeyStatus(item)),
270
- children: /* @__PURE__ */ jsx(IconKey, { size: 10 })
271
- }), /* @__PURE__ */ jsx(Text, {
272
- size: "sm",
273
- fw: 600,
274
- children: item.name
275
- })]
276
- }), item.description && /* @__PURE__ */ jsx(Text, {
140
+ children: [/* @__PURE__ */ jsx(Text$1, {
141
+ size: "sm",
142
+ fw: 600,
143
+ children: item.name
144
+ }), item.description && /* @__PURE__ */ jsx(Text$1, {
277
145
  size: "xs",
278
146
  c: "dimmed",
279
147
  lineClamp: 1,
@@ -284,7 +152,7 @@ const AdminApiKeys = () => {
284
152
  token: {
285
153
  label: "Key",
286
154
  fit: true,
287
- value: (item) => /* @__PURE__ */ jsxs(Flex, {
155
+ value: (item) => /* @__PURE__ */ jsxs(Flex$1, {
288
156
  gap: 4,
289
157
  children: [/* @__PURE__ */ jsx(Code, {
290
158
  ff: "monospace",
@@ -304,19 +172,16 @@ const AdminApiKeys = () => {
304
172
  label: "Status",
305
173
  fit: true,
306
174
  value: (item) => {
307
- const status = getKeyStatus(item);
308
175
  return /* @__PURE__ */ jsx(Badge, {
309
176
  size: "sm",
310
- variant: "light",
311
- color: getStatusColor(status),
312
- leftSection: getStatusIcon(status),
313
- children: status.toUpperCase()
177
+ variant: "default",
178
+ children: getKeyStatus(item).toUpperCase()
314
179
  });
315
180
  }
316
181
  },
317
182
  roles: {
318
183
  label: "Roles",
319
- value: (item) => /* @__PURE__ */ jsxs(Flex, {
184
+ value: (item) => /* @__PURE__ */ jsxs(Flex$1, {
320
185
  gap: 4,
321
186
  wrap: "wrap",
322
187
  children: [item.roles.length > 0 ? item.roles.slice(0, 3).map((role) => /* @__PURE__ */ jsx(Badge, {
@@ -324,7 +189,7 @@ const AdminApiKeys = () => {
324
189
  variant: "outline",
325
190
  color: "gray",
326
191
  children: role
327
- }, role)) : /* @__PURE__ */ jsx(Text, {
192
+ }, role)) : /* @__PURE__ */ jsx(Text$1, {
328
193
  size: "xs",
329
194
  c: "dimmed",
330
195
  children: "No roles"
@@ -342,17 +207,17 @@ const AdminApiKeys = () => {
342
207
  usage: {
343
208
  label: "Usage",
344
209
  fit: true,
345
- value: (item) => /* @__PURE__ */ jsxs(Flex, {
210
+ value: (item) => /* @__PURE__ */ jsxs(Flex$1, {
346
211
  direction: "column",
347
212
  gap: 2,
348
- children: [/* @__PURE__ */ jsxs(Text, {
213
+ children: [/* @__PURE__ */ jsxs(Text$1, {
349
214
  size: "xs",
350
215
  ff: "monospace",
351
216
  fw: 500,
352
217
  children: [item.usageCount.toLocaleString(), " calls"]
353
- }), item.lastUsedAt ? /* @__PURE__ */ jsxs(Flex, {
218
+ }), item.lastUsedAt ? /* @__PURE__ */ jsxs(Flex$1, {
354
219
  gap: 4,
355
- children: [/* @__PURE__ */ jsx(Text, {
220
+ children: [/* @__PURE__ */ jsx(Text$1, {
356
221
  size: "xs",
357
222
  c: "dimmed",
358
223
  children: l(item.lastUsedAt, { date: "fromNow" })
@@ -363,9 +228,9 @@ const AdminApiKeys = () => {
363
228
  color: "var(--mantine-color-dimmed)"
364
229
  })
365
230
  })]
366
- }) : /* @__PURE__ */ jsx(Text, {
231
+ }) : /* @__PURE__ */ jsx(Text$1, {
367
232
  size: "xs",
368
- c: "yellow",
233
+ c: "dimmed",
369
234
  children: "Never used"
370
235
  })]
371
236
  })
@@ -376,9 +241,9 @@ const AdminApiKeys = () => {
376
241
  value: (item) => /* @__PURE__ */ jsx(ActionButton, {
377
242
  variant: "subtle",
378
243
  size: "xs",
379
- href: router.path("adminUserDetails", { params: { userId: item.userId } }),
244
+ href: router.path("adminUserProfile", { params: { userId: item.userId } }),
380
245
  leftSection: /* @__PURE__ */ jsx(IconUser, { size: 12 }),
381
- children: /* @__PURE__ */ jsx(Text, {
246
+ children: /* @__PURE__ */ jsx(Text$1, {
382
247
  size: "xs",
383
248
  ff: "monospace",
384
249
  children: item.userId.slice(0, 8)
@@ -388,7 +253,7 @@ const AdminApiKeys = () => {
388
253
  createdAt: {
389
254
  label: "Created",
390
255
  fit: true,
391
- value: (item) => /* @__PURE__ */ jsx(Text, {
256
+ value: (item) => /* @__PURE__ */ jsx(Text$1, {
392
257
  size: "xs",
393
258
  c: "dimmed",
394
259
  children: l(item.createdAt, { date: "fromNow" })
@@ -398,14 +263,14 @@ const AdminApiKeys = () => {
398
263
  label: "Expires",
399
264
  fit: true,
400
265
  value: (item) => {
401
- if (!item.expiresAt) return /* @__PURE__ */ jsx(Text, {
266
+ if (!item.expiresAt) return /* @__PURE__ */ jsx(Text$1, {
402
267
  size: "xs",
403
268
  c: "dimmed",
404
269
  children: "Never"
405
270
  });
406
- return /* @__PURE__ */ jsx(Text, {
271
+ return /* @__PURE__ */ jsx(Text$1, {
407
272
  size: "xs",
408
- c: new Date(item.expiresAt) < /* @__PURE__ */ new Date() ? "orange" : "dimmed",
273
+ c: "dimmed",
409
274
  children: l(item.expiresAt, { date: "fromNow" })
410
275
  });
411
276
  }
@@ -423,10 +288,9 @@ const AdminApiKeys = () => {
423
288
  });
424
289
  return /* @__PURE__ */ jsx(Tooltip, {
425
290
  label: "Revoke key",
426
- children: /* @__PURE__ */ jsx(ActionIcon, {
427
- size: "sm",
291
+ children: /* @__PURE__ */ jsx(ActionButton, {
292
+ size: "xs",
428
293
  variant: "subtle",
429
- color: "red",
430
294
  onClick: () => handleRevoke(item),
431
295
  children: /* @__PURE__ */ jsx(IconTrash, { size: 14 })
432
296
  })
@@ -440,4 +304,4 @@ const AdminApiKeys = () => {
440
304
 
441
305
  //#endregion
442
306
  export { AdminApiKeys as default };
443
- //# sourceMappingURL=AdminApiKeys-CF_qOO3u.js.map
307
+ //# sourceMappingURL=AdminApiKeys-C-6_Q-lH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminApiKeys-C-6_Q-lH.js","names":["Flex","Text"],"sources":["../../src/admin/components/keys/AdminApiKeys.tsx"],"sourcesContent":["import {\n ActionButton,\n ClipboardButton,\n DataTable,\n Flex,\n StatCards,\n Text,\n useDialog,\n useToast,\n} from \"@alepha/ui\";\nimport { Badge, Code, Tooltip } from \"@mantine/core\";\nimport {\n IconCheck,\n IconClock,\n IconKey,\n IconNetwork,\n IconTrash,\n IconUser,\n} from \"@tabler/icons-react\";\nimport { type Page, t } from \"alepha\";\nimport type { AdminApiKeyController } from \"alepha/api/keys\";\nimport { useClient } from \"alepha/react\";\nimport { useI18n } from \"alepha/react/i18n\";\nimport { useRouter } from \"alepha/react/router\";\nimport { useCallback, useState } from \"react\";\nimport type { AdminRouter } from \"../../AdminRouter.ts\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\ninterface ApiKeyResource {\n id: string;\n userId: string;\n name: string;\n description?: string;\n tokenPrefix: string;\n tokenSuffix: string;\n roles: string[];\n createdAt: string;\n lastUsedAt?: string;\n lastUsedIp?: string;\n expiresAt?: string;\n revokedAt?: string;\n usageCount: number;\n}\n\ninterface KeyStats {\n total: number;\n active: number;\n revoked: number;\n expired: number;\n neverUsed: number;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Utilities\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst getKeyStatus = (\n key: ApiKeyResource,\n): \"active\" | \"revoked\" | \"expired\" => {\n if (key.revokedAt) return \"revoked\";\n if (key.expiresAt && new Date(key.expiresAt) < new Date()) return \"expired\";\n return \"active\";\n};\n\nconst formatKeyPreview = (prefix: string, suffix: string) => {\n return `${prefix}...${suffix}`;\n};\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Main Component\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst AdminApiKeys = () => {\n const client = useClient<AdminApiKeyController>();\n const router = useRouter<AdminRouter>();\n const { l } = useI18n();\n const toast = useToast();\n const dialog = useDialog();\n\n const [stats, setStats] = useState<KeyStats>({\n total: 0,\n active: 0,\n revoked: 0,\n expired: 0,\n neverUsed: 0,\n });\n const [refreshKey, setRefreshKey] = useState(0);\n const [loading, setLoading] = useState(true);\n\n const filters = t.object({\n userId: t.optional(t.uuid()),\n includeRevoked: t.optional(t.boolean()),\n });\n\n const handleRevoke = useCallback(\n async (key: ApiKeyResource) => {\n const confirmed = await dialog.confirm({\n title: \"Revoke API Key\",\n message: `Are you sure you want to revoke \"${key.name}\"? This action cannot be undone and will immediately invalidate the key.`,\n confirmLabel: \"Revoke Key\",\n confirmColor: \"red\",\n });\n\n if (!confirmed) return;\n\n try {\n await client.revokeApiKey({ params: { id: key.id } });\n toast.success(`API key \"${key.name}\" has been revoked`);\n setRefreshKey((k) => k + 1);\n } catch (error) {\n toast.danger(`Failed to revoke API key`);\n }\n },\n [client, dialog, toast],\n );\n\n const updateStats = useCallback((keys: ApiKeyResource[]) => {\n const now = new Date();\n const newStats: KeyStats = {\n total: keys.length,\n active: 0,\n revoked: 0,\n expired: 0,\n neverUsed: 0,\n };\n\n for (const key of keys) {\n if (key.revokedAt) {\n newStats.revoked++;\n } else if (key.expiresAt && new Date(key.expiresAt) < now) {\n newStats.expired++;\n } else {\n newStats.active++;\n }\n\n if (!key.lastUsedAt) {\n newStats.neverUsed++;\n }\n }\n\n setStats(newStats);\n setLoading(false);\n }, []);\n\n return (\n <Flex flex={1} direction=\"column\" gap=\"md\">\n <StatCards\n items={[\n { label: \"Total Keys\", value: stats.total, icon: IconKey },\n { label: \"Active\", value: stats.active, icon: IconCheck },\n { label: \"Revoked\", value: stats.revoked, icon: IconTrash },\n { label: \"Never Used\", value: stats.neverUsed, icon: IconClock },\n ]}\n />\n\n <DataTable<ApiKeyResource, typeof filters>\n key={refreshKey}\n submitOnInit\n defaultSize={15}\n typeFormProps={{\n skipSubmitButton: true,\n columns: 2,\n }}\n tableProps={{\n horizontalSpacing: \"sm\",\n verticalSpacing: \"sm\",\n highlightOnHover: true,\n }}\n onFilterChange={(key, _value, form) => {\n if (key === \"userId\" || key === \"includeRevoked\") {\n return form.submit();\n }\n }}\n filters={filters}\n tableTrProps={(item) => {\n const status = getKeyStatus(item);\n if (status === \"revoked\") {\n return { opacity: 0.6 };\n }\n if (status === \"expired\") {\n return { opacity: 0.7 };\n }\n return {};\n }}\n items={async (filters) => {\n const response = await client.findApiKeys({\n query: {\n ...filters,\n includeRevoked: filters.includeRevoked ?? true,\n },\n });\n\n const allKeys = await client.findApiKeys({\n query: { includeRevoked: true, size: 100 },\n });\n updateStats(allKeys.content as ApiKeyResource[]);\n\n return response as Page<ApiKeyResource>;\n }}\n columns={{\n name: {\n label: \"Name\",\n value: (item) => (\n <Flex direction=\"column\" gap={2}>\n <Text size=\"sm\" fw={600}>\n {item.name}\n </Text>\n {item.description && (\n <Text size=\"xs\" c=\"dimmed\" lineClamp={1}>\n {item.description}\n </Text>\n )}\n </Flex>\n ),\n },\n token: {\n label: \"Key\",\n fit: true,\n value: (item) => (\n <Flex gap={4}>\n <Code\n ff=\"monospace\"\n style={{\n fontSize: 11,\n letterSpacing: \"0.5px\",\n }}\n >\n {formatKeyPreview(item.tokenPrefix, item.tokenSuffix)}\n </Code>\n <ClipboardButton\n size=\"xs\"\n variant=\"subtle\"\n value={formatKeyPreview(item.tokenPrefix, item.tokenSuffix)}\n />\n </Flex>\n ),\n },\n status: {\n label: \"Status\",\n fit: true,\n value: (item) => {\n const status = getKeyStatus(item);\n return (\n <Badge size=\"sm\" variant=\"default\">\n {status.toUpperCase()}\n </Badge>\n );\n },\n },\n roles: {\n label: \"Roles\",\n value: (item) => (\n <Flex gap={4} wrap=\"wrap\">\n {item.roles.length > 0 ? (\n item.roles.slice(0, 3).map((role) => (\n <Badge key={role} size=\"xs\" variant=\"outline\" color=\"gray\">\n {role}\n </Badge>\n ))\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n No roles\n </Text>\n )}\n {item.roles.length > 3 && (\n <Tooltip label={item.roles.slice(3).join(\", \")}>\n <Badge size=\"xs\" variant=\"light\" color=\"gray\">\n +{item.roles.length - 3}\n </Badge>\n </Tooltip>\n )}\n </Flex>\n ),\n },\n usage: {\n label: \"Usage\",\n fit: true,\n value: (item) => (\n <Flex direction=\"column\" gap={2}>\n <Text size=\"xs\" ff=\"monospace\" fw={500}>\n {item.usageCount.toLocaleString()} calls\n </Text>\n {item.lastUsedAt ? (\n <Flex gap={4}>\n <Text size=\"xs\" c=\"dimmed\">\n {l(item.lastUsedAt, { date: \"fromNow\" })}\n </Text>\n {item.lastUsedIp && (\n <Tooltip label={`Last IP: ${item.lastUsedIp}`}>\n <IconNetwork\n size={12}\n color=\"var(--mantine-color-dimmed)\"\n />\n </Tooltip>\n )}\n </Flex>\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n Never used\n </Text>\n )}\n </Flex>\n ),\n },\n userId: {\n label: \"Owner\",\n fit: true,\n value: (item) => (\n <ActionButton\n variant=\"subtle\"\n size=\"xs\"\n href={router.path(\"adminUserProfile\", {\n params: { userId: item.userId },\n })}\n leftSection={<IconUser size={12} />}\n >\n <Text size=\"xs\" ff=\"monospace\">\n {item.userId.slice(0, 8)}\n </Text>\n </ActionButton>\n ),\n },\n createdAt: {\n label: \"Created\",\n fit: true,\n value: (item) => (\n <Text size=\"xs\" c=\"dimmed\">\n {l(item.createdAt, { date: \"fromNow\" })}\n </Text>\n ),\n },\n expiresAt: {\n label: \"Expires\",\n fit: true,\n value: (item) => {\n if (!item.expiresAt) {\n return (\n <Text size=\"xs\" c=\"dimmed\">\n Never\n </Text>\n );\n }\n\n return (\n <Text size=\"xs\" c=\"dimmed\">\n {l(item.expiresAt, { date: \"fromNow\" })}\n </Text>\n );\n },\n },\n actions: {\n label: \"\",\n fit: true,\n value: (item) => {\n const status = getKeyStatus(item);\n if (status === \"revoked\") {\n return (\n <Tooltip label=\"Already revoked\">\n <IconCheck size={14} color=\"var(--mantine-color-dimmed)\" />\n </Tooltip>\n );\n }\n\n return (\n <Tooltip label=\"Revoke key\">\n <ActionButton\n size=\"xs\"\n variant=\"subtle\"\n onClick={() => handleRevoke(item)}\n >\n <IconTrash size={14} />\n </ActionButton>\n </Tooltip>\n );\n },\n },\n }}\n />\n </Flex>\n );\n};\n\nexport default AdminApiKeys;\n"],"mappings":"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"}
@@ -1,44 +1,18 @@
1
- import { DataTable, Flex, Text } from "@alepha/ui";
1
+ import { r as DataTable, s as Text$1, u as Flex$1 } from "./core-2xoLiT0o.js";
2
2
  import { t } from "alepha";
3
- import { IconAlertTriangle, IconCheck, IconInfoCircle, IconUser, IconX } from "@tabler/icons-react";
4
- import { useRouter } from "alepha/react/router";
3
+ import { useI18n } from "alepha/react/i18n";
5
4
  import { Badge, Tooltip } from "@mantine/core";
6
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { IconCheck, IconUser, IconX } from "@tabler/icons-react";
7
+ import { useRouter } from "alepha/react/router";
7
8
  import { useClient } from "alepha/react";
8
- import { useI18n } from "alepha/react/i18n";
9
9
 
10
10
  //#region ../../src/admin/components/audits/AdminAudits.tsx
11
- const getSeverityColor = (severity) => {
12
- switch (severity) {
13
- case "critical": return "red";
14
- case "warning": return "yellow";
15
- default: return "blue";
16
- }
17
- };
18
- const getSeverityIcon = (severity) => {
19
- switch (severity) {
20
- case "critical": return /* @__PURE__ */ jsx(IconAlertTriangle, { size: 12 });
21
- case "warning": return /* @__PURE__ */ jsx(IconAlertTriangle, { size: 12 });
22
- default: return /* @__PURE__ */ jsx(IconInfoCircle, { size: 12 });
23
- }
24
- };
25
- const getTypeColor = (type) => {
26
- switch (type) {
27
- case "auth": return "blue";
28
- case "user": return "grape";
29
- case "security": return "red";
30
- case "system": return "orange";
31
- case "access": return "cyan";
32
- case "payment": return "green";
33
- case "order": return "teal";
34
- default: return "gray";
35
- }
36
- };
37
11
  const AdminAudits = (props) => {
38
12
  const client = useClient();
39
13
  const router = useRouter();
40
14
  const { l } = useI18n();
41
- return /* @__PURE__ */ jsx(Flex, {
15
+ return /* @__PURE__ */ jsx(Flex$1, {
42
16
  flex: 1,
43
17
  direction: "column",
44
18
  children: /* @__PURE__ */ jsx(DataTable, {
@@ -74,7 +48,7 @@ const AdminAudits = (props) => {
74
48
  opacity: item.success ? 1 : .85
75
49
  },
76
50
  onClick: () => {
77
- if (item.userId) router.push("adminUserDetails", { params: { userId: item.userId } });
51
+ if (item.userId) router.push("adminUserProfile", { params: { userId: item.userId } });
78
52
  }
79
53
  }),
80
54
  items: async (query) => {
@@ -89,8 +63,7 @@ const AdminAudits = (props) => {
89
63
  fit: true,
90
64
  value: (item) => /* @__PURE__ */ jsx(Badge, {
91
65
  size: "sm",
92
- variant: "light",
93
- color: getTypeColor(item.type),
66
+ variant: "default",
94
67
  children: item.type
95
68
  })
96
69
  },
@@ -99,18 +72,16 @@ const AdminAudits = (props) => {
99
72
  fit: true,
100
73
  value: (item) => /* @__PURE__ */ jsx(Badge, {
101
74
  size: "sm",
102
- variant: "outline",
75
+ variant: "default",
103
76
  children: item.action
104
77
  })
105
78
  },
106
79
  severity: {
107
80
  label: "Severity",
108
81
  fit: true,
109
- value: (item) => /* @__PURE__ */ jsx(Badge, {
82
+ value: (item) => /* @__PURE__ */ jsx(Text$1, {
110
83
  size: "xs",
111
- variant: "light",
112
- color: getSeverityColor(item.severity),
113
- leftSection: getSeverityIcon(item.severity),
84
+ tt: "capitalize",
114
85
  children: item.severity
115
86
  })
116
87
  },
@@ -118,28 +89,28 @@ const AdminAudits = (props) => {
118
89
  label: "User",
119
90
  fit: true,
120
91
  value: (item) => item.userId ? /* @__PURE__ */ jsx(Tooltip, {
121
- label: /* @__PURE__ */ jsxs(Flex, {
92
+ label: /* @__PURE__ */ jsxs(Flex$1, {
122
93
  direction: "column",
123
94
  gap: 2,
124
- children: [/* @__PURE__ */ jsx(Text, {
95
+ children: [/* @__PURE__ */ jsx(Text$1, {
125
96
  size: "xs",
126
97
  children: item.userEmail || "No email"
127
- }), /* @__PURE__ */ jsx(Text, {
98
+ }), /* @__PURE__ */ jsx(Text$1, {
128
99
  size: "xs",
129
100
  c: "dimmed",
130
101
  children: item.userRealm || "default"
131
102
  })]
132
103
  }),
133
- children: /* @__PURE__ */ jsxs(Flex, {
104
+ children: /* @__PURE__ */ jsxs(Flex$1, {
134
105
  gap: 4,
135
- children: [/* @__PURE__ */ jsx(IconUser, { size: 12 }), /* @__PURE__ */ jsx(Text, {
106
+ children: [/* @__PURE__ */ jsx(IconUser, { size: 12 }), /* @__PURE__ */ jsx(Text$1, {
136
107
  size: "xs",
137
108
  lineClamp: 1,
138
109
  maw: 100,
139
110
  children: item.userEmail?.split("@")[0] || item.userId.slice(0, 8)
140
111
  })]
141
112
  })
142
- }) : /* @__PURE__ */ jsx(Text, {
113
+ }) : /* @__PURE__ */ jsx(Text$1, {
143
114
  size: "xs",
144
115
  c: "dimmed",
145
116
  children: "System"
@@ -147,7 +118,7 @@ const AdminAudits = (props) => {
147
118
  },
148
119
  description: {
149
120
  label: "Description",
150
- value: (item) => /* @__PURE__ */ jsx(Text, {
121
+ value: (item) => /* @__PURE__ */ jsx(Text$1, {
151
122
  size: "sm",
152
123
  lineClamp: 1,
153
124
  children: item.description || "-"
@@ -158,13 +129,12 @@ const AdminAudits = (props) => {
158
129
  fit: true,
159
130
  value: (item) => item.resourceType ? /* @__PURE__ */ jsx(Tooltip, {
160
131
  label: `${item.resourceType}: ${item.resourceId}`,
161
- children: /* @__PURE__ */ jsx(Badge, {
132
+ children: /* @__PURE__ */ jsx(Text$1, {
162
133
  size: "xs",
163
- variant: "dot",
164
- color: "gray",
134
+ ff: "monospace",
165
135
  children: item.resourceType
166
136
  })
167
- }) : /* @__PURE__ */ jsx(Text, {
137
+ }) : /* @__PURE__ */ jsx(Text$1, {
168
138
  size: "xs",
169
139
  c: "dimmed",
170
140
  children: "-"
@@ -173,21 +143,15 @@ const AdminAudits = (props) => {
173
143
  success: {
174
144
  label: "Status",
175
145
  fit: true,
176
- value: (item) => item.success ? /* @__PURE__ */ jsx(IconCheck, {
177
- size: 14,
178
- color: "var(--mantine-color-green-6)"
179
- }) : /* @__PURE__ */ jsx(Tooltip, {
146
+ value: (item) => item.success ? /* @__PURE__ */ jsx(IconCheck, { size: 14 }) : /* @__PURE__ */ jsx(Tooltip, {
180
147
  label: item.errorMessage || "Failed",
181
- children: /* @__PURE__ */ jsx(IconX, {
182
- size: 14,
183
- color: "var(--mantine-color-red-6)"
184
- })
148
+ children: /* @__PURE__ */ jsx(IconX, { size: 14 })
185
149
  })
186
150
  },
187
151
  ipAddress: {
188
152
  label: "IP",
189
153
  fit: true,
190
- value: (item) => /* @__PURE__ */ jsx(Text, {
154
+ value: (item) => /* @__PURE__ */ jsx(Text$1, {
191
155
  size: "xs",
192
156
  c: "dimmed",
193
157
  ff: "monospace",
@@ -199,7 +163,7 @@ const AdminAudits = (props) => {
199
163
  fit: true,
200
164
  value: (item) => /* @__PURE__ */ jsx(Tooltip, {
201
165
  label: l(item.createdAt, { date: "medium" }),
202
- children: /* @__PURE__ */ jsx(Text, {
166
+ children: /* @__PURE__ */ jsx(Text$1, {
203
167
  size: "xs",
204
168
  c: "dimmed",
205
169
  children: l(item.createdAt, { date: "fromNow" })
@@ -213,4 +177,4 @@ const AdminAudits = (props) => {
213
177
 
214
178
  //#endregion
215
179
  export { AdminAudits as default };
216
- //# sourceMappingURL=AdminAudits-BQno3hZG.js.map
180
+ //# sourceMappingURL=AdminAudits-Bgbf04hO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminAudits-Bgbf04hO.js","names":["Flex","Text"],"sources":["../../src/admin/components/audits/AdminAudits.tsx"],"sourcesContent":["import { DataTable, Flex, Text } from \"@alepha/ui\";\nimport { Badge, Tooltip } from \"@mantine/core\";\nimport { IconCheck, IconUser, IconX } from \"@tabler/icons-react\";\nimport { type Page, t } from \"alepha\";\nimport type { AdminAuditController, AuditEntity } from \"alepha/api/audits\";\nimport { useClient } from \"alepha/react\";\nimport { useI18n } from \"alepha/react/i18n\";\nimport { useRouter } from \"alepha/react/router\";\nimport type { AdminRouter } from \"../../AdminRouter.ts\";\n\nexport interface AdminAuditsProps {\n userRealmName?: string;\n}\n\nconst AdminAudits = (props: AdminAuditsProps) => {\n const client = useClient<AdminAuditController>();\n const router = useRouter<AdminRouter>();\n const { l } = useI18n();\n\n const filters = t.object({\n type: t.optional(t.text()),\n action: t.optional(t.text()),\n severity: t.optional(t.enum([\"info\", \"warning\", \"critical\"])),\n success: t.optional(t.boolean()),\n resourceType: t.optional(t.text()),\n search: t.optional(t.text()),\n from: t.optional(t.datetime()),\n to: t.optional(t.datetime()),\n });\n\n return (\n <Flex flex={1} direction=\"column\">\n <DataTable<AuditEntity, typeof filters>\n submitOnInit\n defaultSize={20}\n typeFormProps={{\n skipSubmitButton: true,\n columns: 4,\n }}\n tableProps={{\n horizontalSpacing: \"xs\",\n verticalSpacing: \"xs\",\n striped: false,\n highlightOnHover: true,\n }}\n filters={filters}\n tableTrProps={(item) => ({\n style: {\n cursor: item.userId ? \"pointer\" : \"default\",\n opacity: item.success ? 1 : 0.85,\n },\n onClick: () => {\n if (item.userId) {\n router.push(\"adminUserProfile\", {\n params: { userId: item.userId },\n });\n }\n },\n })}\n items={async (query) => {\n const response = await client.findAudits({\n query: {\n ...query,\n userRealm: props.userRealmName,\n },\n });\n return response as Page<AuditEntity>;\n }}\n columns={{\n type: {\n label: \"Type\",\n fit: true,\n value: (item) => (\n <Badge size=\"sm\" variant=\"default\">\n {item.type}\n </Badge>\n ),\n },\n action: {\n label: \"Action\",\n fit: true,\n value: (item) => (\n <Badge size=\"sm\" variant=\"default\">\n {item.action}\n </Badge>\n ),\n },\n severity: {\n label: \"Severity\",\n fit: true,\n value: (item) => (\n <Text size=\"xs\" tt=\"capitalize\">\n {item.severity}\n </Text>\n ),\n },\n user: {\n label: \"User\",\n fit: true,\n value: (item) =>\n item.userId ? (\n <Tooltip\n label={\n <Flex direction=\"column\" gap={2}>\n <Text size=\"xs\">{item.userEmail || \"No email\"}</Text>\n <Text size=\"xs\" c=\"dimmed\">\n {item.userRealm || \"default\"}\n </Text>\n </Flex>\n }\n >\n <Flex gap={4}>\n <IconUser size={12} />\n <Text size=\"xs\" lineClamp={1} maw={100}>\n {item.userEmail?.split(\"@\")[0] || item.userId.slice(0, 8)}\n </Text>\n </Flex>\n </Tooltip>\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n System\n </Text>\n ),\n },\n description: {\n label: \"Description\",\n value: (item) => (\n <Text size=\"sm\" lineClamp={1}>\n {item.description || \"-\"}\n </Text>\n ),\n },\n resource: {\n label: \"Resource\",\n fit: true,\n value: (item) =>\n item.resourceType ? (\n <Tooltip label={`${item.resourceType}: ${item.resourceId}`}>\n <Text size=\"xs\" ff=\"monospace\">\n {item.resourceType}\n </Text>\n </Tooltip>\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n -\n </Text>\n ),\n },\n success: {\n label: \"Status\",\n fit: true,\n value: (item) =>\n item.success ? (\n <IconCheck size={14} />\n ) : (\n <Tooltip label={item.errorMessage || \"Failed\"}>\n <IconX size={14} />\n </Tooltip>\n ),\n },\n ipAddress: {\n label: \"IP\",\n fit: true,\n value: (item) => (\n <Text size=\"xs\" c=\"dimmed\" ff=\"monospace\">\n {item.ipAddress || \"-\"}\n </Text>\n ),\n },\n createdAt: {\n label: \"Time\",\n fit: true,\n value: (item) => (\n <Tooltip label={l(item.createdAt, { date: \"medium\" })}>\n <Text size=\"xs\" c=\"dimmed\">\n {l(item.createdAt, { date: \"fromNow\" })}\n </Text>\n </Tooltip>\n ),\n },\n }}\n />\n </Flex>\n );\n};\n\nexport default AdminAudits;\n"],"mappings":"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"}
@@ -1,9 +1,8 @@
1
- import { DataTable, Flex, Text } from "@alepha/ui";
1
+ import { r as DataTable, s as Text, u as Flex } from "./core-2xoLiT0o.js";
2
2
  import { t } from "alepha";
3
- import { Badge } from "@mantine/core";
3
+ import { useI18n } from "alepha/react/i18n";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { useClient } from "alepha/react";
6
- import { useI18n } from "alepha/react/i18n";
7
6
  import { files } from "alepha/api/files";
8
7
 
9
8
  //#region ../../src/admin/components/files/AdminFiles.tsx
@@ -64,10 +63,9 @@ const AdminFiles = () => {
64
63
  bucket: {
65
64
  label: "Bucket",
66
65
  fit: true,
67
- value: (item) => /* @__PURE__ */ jsx(Badge, {
68
- size: "sm",
69
- variant: "light",
70
- color: "blue",
66
+ value: (item) => /* @__PURE__ */ jsx(Text, {
67
+ size: "xs",
68
+ ff: "monospace",
71
69
  children: item.bucket
72
70
  })
73
71
  },
@@ -114,4 +112,4 @@ const AdminFiles = () => {
114
112
 
115
113
  //#endregion
116
114
  export { AdminFiles as default };
117
- //# sourceMappingURL=AdminFiles-kvuUaASF.js.map
115
+ //# sourceMappingURL=AdminFiles-B9a7G3cY.js.map