@alepha/ui 0.15.0 → 0.15.2

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 (207) hide show
  1. package/dist/admin/AdminAudits-BlGGKLof.js +3 -0
  2. package/dist/admin/{AdminAudits-DIrCCPk3.js → AdminAudits-C0DPYw0W.js} +4 -4
  3. package/dist/admin/AdminAudits-C0DPYw0W.js.map +1 -0
  4. package/dist/admin/AdminFiles-Bg9feLFH.js +3 -0
  5. package/dist/admin/{AdminFiles-RsL178Ta.js → AdminFiles-Cu8GHgQ3.js} +5 -5
  6. package/dist/admin/AdminFiles-Cu8GHgQ3.js.map +1 -0
  7. package/dist/admin/AdminLayout-BfeFXiul.js +3 -0
  8. package/dist/admin/{AdminLayout-XiSivwWH.js → AdminLayout-QJLIesuG.js} +1 -1
  9. package/dist/admin/{AdminLayout-XiSivwWH.js.map → AdminLayout-QJLIesuG.js.map} +1 -1
  10. package/dist/admin/{AdminNotifications-cIbywWKi.js → AdminNotifications-CgYkBuG_.js} +5 -5
  11. package/dist/admin/AdminNotifications-CgYkBuG_.js.map +1 -0
  12. package/dist/admin/AdminNotifications-DmfGPqHe.js +3 -0
  13. package/dist/admin/{AdminParameters-BKObzzpN.js → AdminParameters-Cl-R0nXt.js} +1 -1
  14. package/dist/admin/{AdminParameters-D-q3Qmhv.js → AdminParameters-hjNG_KXb.js} +4 -4
  15. package/dist/admin/AdminParameters-hjNG_KXb.js.map +1 -0
  16. package/dist/admin/{AdminSessions-vOgkrQ2U.js → AdminSessions-Bey9cuy1.js} +6 -6
  17. package/dist/admin/AdminSessions-Bey9cuy1.js.map +1 -0
  18. package/dist/admin/AdminSessions-Cn4_jB04.js +3 -0
  19. package/dist/admin/{AdminUserAudits-CSsN1fIC.js → AdminUserAudits-C7AN9jx7.js} +4 -4
  20. package/dist/admin/AdminUserAudits-C7AN9jx7.js.map +1 -0
  21. package/dist/admin/{AdminUserAudits-DmAnivo3.js → AdminUserAudits-Cp_ERd2g.js} +1 -1
  22. package/dist/admin/{AdminUserCreate-DpA13zwj.js → AdminUserCreate-Chr-7hLk.js} +1 -1
  23. package/dist/admin/{AdminUserCreate-B72nu-3W.js → AdminUserCreate-DiXi1EWB.js} +4 -4
  24. package/dist/admin/AdminUserCreate-DiXi1EWB.js.map +1 -0
  25. package/dist/admin/{AdminUserDetails-Zib_B6Al.js → AdminUserDetails-Dcn3OwMC.js} +1 -1
  26. package/dist/admin/{AdminUserDetails-CKM2IEMr.js → AdminUserDetails-yM4x8JE6.js} +5 -5
  27. package/dist/admin/AdminUserDetails-yM4x8JE6.js.map +1 -0
  28. package/dist/admin/{AdminUserLayout-BNBOEiAO.js → AdminUserLayout-CfeQHH6e.js} +1 -1
  29. package/dist/admin/{AdminUserLayout-D7En9UBq.js → AdminUserLayout-D9bqGt6T.js} +3 -3
  30. package/dist/admin/AdminUserLayout-D9bqGt6T.js.map +1 -0
  31. package/dist/admin/{AdminUserSessions-DEaGu6n6.js → AdminUserSessions-kmkXG-xf.js} +4 -4
  32. package/dist/admin/AdminUserSessions-kmkXG-xf.js.map +1 -0
  33. package/dist/admin/AdminUserSessions-rvA0ztxn.js +3 -0
  34. package/dist/admin/{AdminUserSettings-Di73D7g2.js → AdminUserSettings-BnzRAcqV.js} +4 -4
  35. package/dist/admin/AdminUserSettings-BnzRAcqV.js.map +1 -0
  36. package/dist/admin/AdminUserSettings-CXs-jtRv.js +3 -0
  37. package/dist/admin/{AdminUsers-BnGIRvmV.js → AdminUsers-CYkcUWCg.js} +6 -6
  38. package/dist/admin/AdminUsers-CYkcUWCg.js.map +1 -0
  39. package/dist/admin/AdminUsers-DdFXzrEn.js +3 -0
  40. package/dist/admin/index.d.ts +33 -18
  41. package/dist/admin/index.d.ts.map +1 -1
  42. package/dist/admin/index.js +48 -33
  43. package/dist/admin/index.js.map +1 -1
  44. package/dist/auth/{AuthLayout-B1sUB8fB.js → AuthLayout-Dj5K4SIN.js} +2 -2
  45. package/dist/auth/AuthLayout-Dj5K4SIN.js.map +1 -0
  46. package/dist/{demo/IconGoogle-DvmFiEDB.js → auth/IconGoogle-DpSlPZ1u.js} +1 -1
  47. package/dist/auth/{IconGoogle-Cm5d8J3f.js.map → IconGoogle-DpSlPZ1u.js.map} +1 -1
  48. package/dist/auth/{Login-Cjxv3EDi.js → Login-BAFVcX_J.js} +6 -6
  49. package/dist/auth/Login-BAFVcX_J.js.map +1 -0
  50. package/dist/auth/Login-C5PUsp8I.js +4 -0
  51. package/dist/auth/{Register-CGlbQ50l.js → Register-CZRXEcWy.js} +7 -7
  52. package/dist/auth/Register-CZRXEcWy.js.map +1 -0
  53. package/dist/auth/Register-DMTs5ep_.js +4 -0
  54. package/dist/auth/ResetPassword-D-mhMtmx.js +3 -0
  55. package/dist/auth/{ResetPassword-DvqD_1SJ.js → ResetPassword-DTYNsBIj.js} +5 -5
  56. package/dist/auth/ResetPassword-DTYNsBIj.js.map +1 -0
  57. package/dist/auth/VerifyEmail-BsrCmncc.js +3 -0
  58. package/dist/auth/{VerifyEmail-VaBruOnO.js → VerifyEmail-DolENWGn.js} +4 -4
  59. package/dist/auth/VerifyEmail-DolENWGn.js.map +1 -0
  60. package/dist/auth/index.d.ts +34 -23
  61. package/dist/auth/index.d.ts.map +1 -1
  62. package/dist/auth/index.js +25 -14
  63. package/dist/auth/index.js.map +1 -1
  64. package/dist/core/index.d.ts +272 -209
  65. package/dist/core/index.d.ts.map +1 -1
  66. package/dist/core/index.js +314 -99
  67. package/dist/core/index.js.map +1 -1
  68. package/dist/demo/{DemoDataTable-2mzzf__a.js → DemoDataTable-CguplbR7.js} +2 -2
  69. package/dist/demo/{DemoDataTable-2mzzf__a.js.map → DemoDataTable-CguplbR7.js.map} +1 -1
  70. package/dist/demo/{DemoHome-CnuL5WV9.js → DemoHome-Cce2bWmg.js} +1 -1
  71. package/dist/demo/{DemoHome-CnuL5WV9.js.map → DemoHome-Cce2bWmg.js.map} +1 -1
  72. package/dist/demo/DemoHome-DC9qkMNe.js +3 -0
  73. package/dist/demo/DemoJsonViewer-DIssGVlJ.js +4 -0
  74. package/dist/demo/{DemoJsonViewer-NUGst5wW.js → DemoJsonViewer-Dgdk3Txb.js} +3 -3
  75. package/dist/demo/{DemoJsonViewer-NUGst5wW.js.map → DemoJsonViewer-Dgdk3Txb.js.map} +1 -1
  76. package/dist/demo/{DemoLayout-dvbeuBBf.js → DemoLayout-B20TEuhV.js} +2 -2
  77. package/dist/demo/DemoLayout-B20TEuhV.js.map +1 -0
  78. package/dist/demo/DemoLayout-DSRyf4qJ.js +3 -0
  79. package/dist/demo/{DemoLogin-DvltFTER.js → DemoLogin-mtkN6340.js} +7 -7
  80. package/dist/demo/DemoLogin-mtkN6340.js.map +1 -0
  81. package/dist/demo/{DemoRegister-Vu6ZPWib.js → DemoRegister-C0MW7anp.js} +8 -8
  82. package/dist/demo/DemoRegister-C0MW7anp.js.map +1 -0
  83. package/dist/demo/{DemoResetPassword-BFwmqwec.js → DemoResetPassword-CPTy88iK.js} +6 -6
  84. package/dist/demo/DemoResetPassword-CPTy88iK.js.map +1 -0
  85. package/dist/demo/{DemoSidebar-DWnjYHoP.js → DemoSidebar-MVmQKfMt.js} +2 -2
  86. package/dist/demo/{DemoSidebar-DWnjYHoP.js.map → DemoSidebar-MVmQKfMt.js.map} +1 -1
  87. package/dist/demo/{DemoTypeForm-P5_VInW2.js → DemoTypeForm-w-qtfRlC.js} +3 -3
  88. package/dist/demo/DemoTypeForm-w-qtfRlC.js.map +1 -0
  89. package/dist/demo/{DemoVerifyEmail-C_ooC5u8.js → DemoVerifyEmail-C8FFJT5A.js} +5 -5
  90. package/dist/demo/DemoVerifyEmail-C8FFJT5A.js.map +1 -0
  91. package/dist/{auth/IconGoogle-Cm5d8J3f.js → demo/IconGoogle-CbBF8Hqq.js} +1 -1
  92. package/dist/demo/{IconGoogle-DvmFiEDB.js.map → IconGoogle-CbBF8Hqq.js.map} +1 -1
  93. package/dist/demo/{Showcase-vemLuO2t.js → Showcase-CQrMWars.js} +4 -4
  94. package/dist/demo/Showcase-CQrMWars.js.map +1 -0
  95. package/dist/demo/index.d.ts +37 -27
  96. package/dist/demo/index.d.ts.map +1 -1
  97. package/dist/demo/index.js +26 -16
  98. package/dist/demo/index.js.map +1 -1
  99. package/dist/json/index.d.ts +17 -17
  100. package/dist/json/index.d.ts.map +1 -1
  101. package/package.json +13 -14
  102. package/src/admin/AdminRouter.ts +2 -2
  103. package/src/admin/MainRouter.ts +1 -1
  104. package/src/admin/components/audits/AdminAudits.tsx +3 -3
  105. package/src/admin/components/files/AdminFiles.tsx +2 -2
  106. package/src/admin/components/jobs/AdminJobs.tsx +2 -2
  107. package/src/admin/components/notifications/AdminNotifications.tsx +2 -2
  108. package/src/admin/components/parameters/AdminParameters.tsx +1 -1
  109. package/src/admin/components/parameters/ParameterDetails.tsx +2 -2
  110. package/src/admin/components/parameters/ParameterHistory.tsx +1 -1
  111. package/src/admin/components/parameters/types.ts +9 -3
  112. package/src/admin/components/sessions/AdminSessions.tsx +3 -3
  113. package/src/admin/components/shared/AdminResourceHeader.tsx +1 -1
  114. package/src/admin/components/shared/AdminResourceTabs.tsx +1 -1
  115. package/src/admin/components/users/AdminUserAudits.tsx +3 -3
  116. package/src/admin/components/users/AdminUserCreate.tsx +3 -3
  117. package/src/admin/components/users/AdminUserDetails.tsx +4 -4
  118. package/src/admin/components/users/AdminUserLayout.tsx +2 -2
  119. package/src/admin/components/users/AdminUserSessions.tsx +3 -3
  120. package/src/admin/components/users/AdminUserSettings.tsx +3 -3
  121. package/src/admin/components/users/AdminUsers.tsx +3 -3
  122. package/src/admin/index.ts +16 -1
  123. package/src/auth/AuthI18n.ts +1 -1
  124. package/src/auth/AuthRouter.ts +2 -2
  125. package/src/auth/components/AuthLayout.tsx +1 -1
  126. package/src/auth/components/Login.tsx +4 -4
  127. package/src/auth/components/Register.tsx +5 -5
  128. package/src/auth/components/ResetPassword.tsx +4 -4
  129. package/src/auth/components/VerifyEmail.tsx +3 -3
  130. package/src/auth/components/buttons/UserButton.tsx +2 -2
  131. package/src/auth/index.ts +14 -3
  132. package/src/core/RootRouter.ts +1 -1
  133. package/src/core/atoms/alephaSidebarAtom.ts +57 -0
  134. package/src/core/components/buttons/ActionButton.tsx +9 -9
  135. package/src/core/components/buttons/BurgerButton.tsx +5 -4
  136. package/src/core/components/buttons/LanguageButton.tsx +1 -1
  137. package/src/core/components/buttons/OmnibarButton.tsx +20 -1
  138. package/src/core/components/buttons/ThemeButton.tsx +1 -1
  139. package/src/core/components/buttons/ToggleSidebarButton.tsx +33 -23
  140. package/src/core/components/form/Control.tsx +1 -1
  141. package/src/core/components/form/ControlArray.tsx +2 -2
  142. package/src/core/components/form/ControlDate.tsx +1 -1
  143. package/src/core/components/form/ControlNumber.tsx +2 -2
  144. package/src/core/components/form/ControlObject.tsx +1 -1
  145. package/src/core/components/form/ControlQueryBuilder.tsx +1 -1
  146. package/src/core/components/form/ControlSelect.tsx +1 -1
  147. package/src/core/components/form/TypeForm.tsx +2 -2
  148. package/src/core/components/layout/AdminShell.tsx +205 -27
  149. package/src/core/components/layout/AlephaMantineProvider.tsx +3 -3
  150. package/src/core/components/layout/Omnibar.tsx +2 -2
  151. package/src/core/components/layout/Sidebar.tsx +42 -77
  152. package/src/core/components/table/DataTable.tsx +2 -2
  153. package/src/core/components/table/DataTableFilters.tsx +1 -1
  154. package/src/core/components/table/types.ts +1 -1
  155. package/src/core/hooks/useDialog.ts +1 -1
  156. package/src/core/hooks/useTheme.ts +1 -1
  157. package/src/core/hooks/useToast.ts +1 -1
  158. package/src/core/index.ts +57 -6
  159. package/src/core/providers/ThemeProvider.ts +1 -1
  160. package/src/core/styles.css +58 -0
  161. package/src/core/utils/parseInput.ts +1 -1
  162. package/src/demo/DemoRouter.ts +1 -1
  163. package/src/demo/components/DemoLayout.tsx +1 -1
  164. package/src/demo/components/core/DemoTypeForm.tsx +1 -1
  165. package/src/demo/components/json/DemoJsonViewer.tsx +1 -1
  166. package/src/demo/components/shared/Showcase.tsx +1 -1
  167. package/src/demo/index.ts +11 -1
  168. package/src/json/index.ts +13 -0
  169. package/dist/admin/AdminAudits-B3EhKhN7.js +0 -3
  170. package/dist/admin/AdminAudits-DIrCCPk3.js.map +0 -1
  171. package/dist/admin/AdminFiles-C8OG4dtD.js +0 -3
  172. package/dist/admin/AdminFiles-RsL178Ta.js.map +0 -1
  173. package/dist/admin/AdminLayout-BnSmtA4x.js +0 -3
  174. package/dist/admin/AdminNotifications-BSL4B2fQ.js +0 -3
  175. package/dist/admin/AdminNotifications-cIbywWKi.js.map +0 -1
  176. package/dist/admin/AdminParameters-D-q3Qmhv.js.map +0 -1
  177. package/dist/admin/AdminSessions-DHG9zPfr.js +0 -3
  178. package/dist/admin/AdminSessions-vOgkrQ2U.js.map +0 -1
  179. package/dist/admin/AdminUserAudits-CSsN1fIC.js.map +0 -1
  180. package/dist/admin/AdminUserCreate-B72nu-3W.js.map +0 -1
  181. package/dist/admin/AdminUserDetails-CKM2IEMr.js.map +0 -1
  182. package/dist/admin/AdminUserLayout-D7En9UBq.js.map +0 -1
  183. package/dist/admin/AdminUserSessions-D9X2_HMA.js +0 -3
  184. package/dist/admin/AdminUserSessions-DEaGu6n6.js.map +0 -1
  185. package/dist/admin/AdminUserSettings-Di73D7g2.js.map +0 -1
  186. package/dist/admin/AdminUserSettings-yI-JECf5.js +0 -3
  187. package/dist/admin/AdminUsers-BnGIRvmV.js.map +0 -1
  188. package/dist/admin/AdminUsers-CG9-2Z8W.js +0 -3
  189. package/dist/auth/AuthLayout-B1sUB8fB.js.map +0 -1
  190. package/dist/auth/Login-BWi-pPbO.js +0 -4
  191. package/dist/auth/Login-Cjxv3EDi.js.map +0 -1
  192. package/dist/auth/Register-CGlbQ50l.js.map +0 -1
  193. package/dist/auth/Register-CWdkXWkc.js +0 -4
  194. package/dist/auth/ResetPassword-BUdM7T_R.js +0 -3
  195. package/dist/auth/ResetPassword-DvqD_1SJ.js.map +0 -1
  196. package/dist/auth/VerifyEmail-BYmtnkEl.js +0 -3
  197. package/dist/auth/VerifyEmail-VaBruOnO.js.map +0 -1
  198. package/dist/demo/DemoHome-D6Z7EE4V.js +0 -3
  199. package/dist/demo/DemoJsonViewer-CYUggLop.js +0 -4
  200. package/dist/demo/DemoLayout-ZFDzyvY3.js +0 -3
  201. package/dist/demo/DemoLayout-dvbeuBBf.js.map +0 -1
  202. package/dist/demo/DemoLogin-DvltFTER.js.map +0 -1
  203. package/dist/demo/DemoRegister-Vu6ZPWib.js.map +0 -1
  204. package/dist/demo/DemoResetPassword-BFwmqwec.js.map +0 -1
  205. package/dist/demo/DemoTypeForm-P5_VInW2.js.map +0 -1
  206. package/dist/demo/DemoVerifyEmail-C_ooC5u8.js.map +0 -1
  207. package/dist/demo/Showcase-vemLuO2t.js.map +0 -1
@@ -1,6 +1,3 @@
1
- import { useClient } from "@alepha/react";
2
- import { useI18n } from "@alepha/react/i18n";
3
- import { useRouter } from "@alepha/react/router";
4
1
  import { ActionButton, DataTable, Flex, Text } from "@alepha/ui";
5
2
  import { Badge, Group } from "@mantine/core";
6
3
  import {
@@ -15,6 +12,9 @@ import {
15
12
  type SessionEntity,
16
13
  sessions,
17
14
  } from "alepha/api/users";
15
+ import { useClient } from "alepha/react";
16
+ import { useI18n } from "alepha/react/i18n";
17
+ import { useRouter } from "alepha/react/router";
18
18
  import { useState } from "react";
19
19
  import type { AdminRouter } from "../../AdminRouter.ts";
20
20
 
@@ -1,4 +1,3 @@
1
- import { useRouter } from "@alepha/react/router";
2
1
  import { ActionButton } from "@alepha/ui";
3
2
  import {
4
3
  ActionIcon,
@@ -16,6 +15,7 @@ import {
16
15
  IconChevronLeft,
17
16
  IconExternalLink,
18
17
  } from "@tabler/icons-react";
18
+ import { useRouter } from "alepha/react/router";
19
19
  import type { ComponentType, ReactNode } from "react";
20
20
 
21
21
  export interface AdminResourceAction {
@@ -1,5 +1,5 @@
1
- import { useActive, useRouter } from "@alepha/react/router";
2
1
  import { Tabs } from "@mantine/core";
2
+ import { useActive, useRouter } from "alepha/react/router";
3
3
  import type { ComponentType, ReactNode } from "react";
4
4
 
5
5
  export interface AdminResourceTab {
@@ -1,6 +1,3 @@
1
- import { useClient } from "@alepha/react";
2
- import { useI18n } from "@alepha/react/i18n";
3
- import { useRouterState } from "@alepha/react/router";
4
1
  import { DataTable, Flex, Text } from "@alepha/ui";
5
2
  import { Badge, Group, Tooltip } from "@mantine/core";
6
3
  import {
@@ -11,6 +8,9 @@ import {
11
8
  } from "@tabler/icons-react";
12
9
  import { type Page, t } from "alepha";
13
10
  import type { AdminAuditController, AuditEntity } from "alepha/api/audits";
11
+ import { useClient } from "alepha/react";
12
+ import { useI18n } from "alepha/react/i18n";
13
+ import { useRouterState } from "alepha/react/router";
14
14
 
15
15
  export interface AdminUserAuditsProps {
16
16
  userRealmName?: string;
@@ -1,10 +1,10 @@
1
- import { useClient } from "@alepha/react";
2
- import { useForm } from "@alepha/react/form";
3
- import { useRouter } from "@alepha/react/router";
4
1
  import { ActionButton, Control, Flex } from "@alepha/ui";
5
2
  import { Card, Stack, Text } from "@mantine/core";
6
3
  import { t } from "alepha";
7
4
  import type { AdminUserController } from "alepha/api/users";
5
+ import { useClient } from "alepha/react";
6
+ import { useForm } from "alepha/react/form";
7
+ import { useRouter } from "alepha/react/router";
8
8
  import type { AdminRouter } from "../../AdminRouter.ts";
9
9
 
10
10
  export interface AdminUserCreateProps {
@@ -1,7 +1,3 @@
1
- import { useClient } from "@alepha/react";
2
- import { useForm } from "@alepha/react/form";
3
- import { useI18n } from "@alepha/react/i18n";
4
- import { useRouterState } from "@alepha/react/router";
5
1
  import { ActionButton, ClipboardButton, Control } from "@alepha/ui";
6
2
  import {
7
3
  Badge,
@@ -30,6 +26,10 @@ import {
30
26
  } from "@tabler/icons-react";
31
27
  import { t } from "alepha";
32
28
  import type { AdminUserController, UserEntity } from "alepha/api/users";
29
+ import { useClient } from "alepha/react";
30
+ import { useForm } from "alepha/react/form";
31
+ import { useI18n } from "alepha/react/i18n";
32
+ import { useRouterState } from "alepha/react/router";
33
33
  import { type ReactNode, useEffect, useState } from "react";
34
34
 
35
35
  export interface AdminUserDetailsProps {
@@ -1,5 +1,3 @@
1
- import { useClient } from "@alepha/react";
2
- import { NestedView, useRouter, useRouterState } from "@alepha/react/router";
3
1
  import { Box, Center, Loader, Stack, Text } from "@mantine/core";
4
2
  import {
5
3
  IconBan,
@@ -14,6 +12,8 @@ import {
14
12
  IconUser,
15
13
  } from "@tabler/icons-react";
16
14
  import type { AdminUserController, UserEntity } from "alepha/api/users";
15
+ import { useClient } from "alepha/react";
16
+ import { NestedView, useRouter, useRouterState } from "alepha/react/router";
17
17
  import { useEffect, useState } from "react";
18
18
  import type { AdminRouter } from "../../AdminRouter.ts";
19
19
  import AdminResourceHeader from "../shared/AdminResourceHeader.tsx";
@@ -1,6 +1,3 @@
1
- import { useClient } from "@alepha/react";
2
- import { useI18n } from "@alepha/react/i18n";
3
- import { useRouterState } from "@alepha/react/router";
4
1
  import { ActionButton, DataTable, Flex, Text } from "@alepha/ui";
5
2
  import { Badge, Group } from "@mantine/core";
6
3
  import {
@@ -11,6 +8,9 @@ import {
11
8
  } from "@tabler/icons-react";
12
9
  import { type Page, t } from "alepha";
13
10
  import type { AdminSessionController, SessionEntity } from "alepha/api/users";
11
+ import { useClient } from "alepha/react";
12
+ import { useI18n } from "alepha/react/i18n";
13
+ import { useRouterState } from "alepha/react/router";
14
14
  import { useState } from "react";
15
15
 
16
16
  export interface AdminUserSessionsProps {
@@ -1,5 +1,3 @@
1
- import { useClient } from "@alepha/react";
2
- import { useRouter, useRouterState } from "@alepha/react/router";
3
1
  import { ActionButton, Flex, Text } from "@alepha/ui";
4
2
  import { Alert, Card, Group, Loader, Stack } from "@mantine/core";
5
3
  import {
@@ -13,6 +11,8 @@ import type {
13
11
  UserController,
14
12
  UserEntity,
15
13
  } from "alepha/api/users";
14
+ import { useClient } from "alepha/react";
15
+ import { useRouter, useRouterState } from "alepha/react/router";
16
16
  import { useEffect, useState } from "react";
17
17
  import type { AdminRouter } from "../../AdminRouter.ts";
18
18
 
@@ -76,7 +76,7 @@ const AdminUserSettings = (props: AdminUserSettingsProps) => {
76
76
  query: {
77
77
  userRealmName: props.userRealmName,
78
78
  method: "link",
79
- verifyUrl: `${window.location.origin}/verify-email`,
79
+ verifyUrl: `${window.location.origin}/auth/verify-email`,
80
80
  },
81
81
  body: { email: user.email },
82
82
  });
@@ -1,6 +1,3 @@
1
- import { useClient } from "@alepha/react";
2
- import { useI18n } from "@alepha/react/i18n";
3
- import { useRouter } from "@alepha/react/router";
4
1
  import { DataTable, Text } from "@alepha/ui";
5
2
  import { Badge, Flex, Group } from "@mantine/core";
6
3
  import { IconCheck, IconUsersPlus, IconX } from "@tabler/icons-react";
@@ -10,6 +7,9 @@ import {
10
7
  type UserEntity,
11
8
  users,
12
9
  } from "alepha/api/users";
10
+ import { useClient } from "alepha/react";
11
+ import { useI18n } from "alepha/react/i18n";
12
+ import { useRouter } from "alepha/react/router";
13
13
  import type { AdminRouter } from "../../AdminRouter.ts";
14
14
 
15
15
  export interface AdminUsersProps {
@@ -36,7 +36,22 @@ export { MainRouter } from "./MainRouter.ts";
36
36
  // ---------------------------------------------------------------------------------------------------------------------
37
37
 
38
38
  /**
39
- * Admin panel UI Module
39
+ * | type | quality | stability |
40
+ * |------|---------|-----------|
41
+ * | frontend | rare | experimental |
42
+ *
43
+ * Admin panel UI components.
44
+ *
45
+ * **Features:**
46
+ * - AdminLayout for admin pages
47
+ * - AdminUsers with user list, create, details, settings, sessions, audits
48
+ * - AdminFiles for file management
49
+ * - AdminJobs for job monitoring
50
+ * - AdminNotifications for notification management
51
+ * - AdminParameters for configuration management
52
+ * - AdminSessions for session management
53
+ * - AdminAudits for audit log viewing
54
+ * - AdminVerifications for verification management
40
55
  *
41
56
  * @module alepha.ui.admin
42
57
  */
@@ -1,4 +1,4 @@
1
- import { $dictionary } from "@alepha/react/i18n";
1
+ import { $dictionary } from "alepha/react/i18n";
2
2
 
3
3
  export class AuthI18n {
4
4
  en = $dictionary({
@@ -1,5 +1,3 @@
1
- import { ReactAuth } from "@alepha/react/auth";
2
- import { $page } from "@alepha/react/router";
3
1
  import {
4
2
  IconLogin2,
5
3
  IconLogout2,
@@ -9,6 +7,8 @@ import {
9
7
  } from "@tabler/icons-react";
10
8
  import { $inject, AlephaError, t } from "alepha";
11
9
  import type { RealmController } from "alepha/api/users";
10
+ import { ReactAuth } from "alepha/react/auth";
11
+ import { $page } from "alepha/react/router";
12
12
  import { $client } from "alepha/server/links";
13
13
 
14
14
  /**
@@ -1,6 +1,6 @@
1
- import { NestedView } from "@alepha/react/router";
2
1
  import { AlephaMantineProvider } from "@alepha/ui";
3
2
  import { Flex } from "@mantine/core";
3
+ import { NestedView } from "alepha/react/router";
4
4
 
5
5
  const AuthLayout = () => {
6
6
  return (
@@ -1,12 +1,12 @@
1
- import { useAuth } from "@alepha/react/auth";
2
- import { FormValidationError, useForm } from "@alepha/react/form";
3
- import { useI18n } from "@alepha/react/i18n";
4
- import { useRouter } from "@alepha/react/router";
5
1
  import { ActionButton, Control, capitalize } from "@alepha/ui";
6
2
  import { Card, Flex, Group, Image, Stack, Text, Title } from "@mantine/core";
7
3
  import { IconLock, IconUser } from "@tabler/icons-react";
8
4
  import { AlephaError, t } from "alepha";
9
5
  import type { RealmConfig } from "alepha/api/users";
6
+ import { useAuth } from "alepha/react/auth";
7
+ import { FormValidationError, useForm } from "alepha/react/form";
8
+ import { useI18n } from "alepha/react/i18n";
9
+ import { useRouter } from "alepha/react/router";
10
10
  import { HttpError } from "alepha/server";
11
11
  import { useMemo } from "react";
12
12
  import type { AuthI18n } from "../AuthI18n.ts";
@@ -1,8 +1,3 @@
1
- import { useClient } from "@alepha/react";
2
- import { useAuth } from "@alepha/react/auth";
3
- import { useForm } from "@alepha/react/form";
4
- import { useI18n } from "@alepha/react/i18n";
5
- import { useRouter } from "@alepha/react/router";
6
1
  import { ActionButton, Control, capitalize } from "@alepha/ui";
7
2
  import {
8
3
  Alert,
@@ -28,6 +23,11 @@ import type {
28
23
  RegistrationIntentResponse,
29
24
  UserController,
30
25
  } from "alepha/api/users";
26
+ import { useClient } from "alepha/react";
27
+ import { useAuth } from "alepha/react/auth";
28
+ import { useForm } from "alepha/react/form";
29
+ import { useI18n } from "alepha/react/i18n";
30
+ import { useRouter } from "alepha/react/router";
31
31
  import { useMemo, useState } from "react";
32
32
  import type { AuthI18n } from "../AuthI18n.ts";
33
33
  import type { AuthRouter } from "../AuthRouter.ts";
@@ -1,7 +1,3 @@
1
- import { useClient } from "@alepha/react";
2
- import { useForm } from "@alepha/react/form";
3
- import { useI18n } from "@alepha/react/i18n";
4
- import { useRouter } from "@alepha/react/router";
5
1
  import { ActionButton, Control } from "@alepha/ui";
6
2
  import {
7
3
  Alert,
@@ -27,6 +23,10 @@ import type {
27
23
  UserController,
28
24
  } from "alepha/api/users";
29
25
  import { resetPasswordRequestSchema } from "alepha/api/users";
26
+ import { useClient } from "alepha/react";
27
+ import { useForm } from "alepha/react/form";
28
+ import { useI18n } from "alepha/react/i18n";
29
+ import { useRouter } from "alepha/react/router";
30
30
  import { useState } from "react";
31
31
  import type { AuthI18n } from "../AuthI18n.ts";
32
32
  import type { AuthRouter } from "../AuthRouter.ts";
@@ -1,10 +1,10 @@
1
- import { useClient } from "@alepha/react";
2
- import { useI18n } from "@alepha/react/i18n";
3
- import { useRouter, useRouterState } from "@alepha/react/router";
4
1
  import { ActionButton } from "@alepha/ui";
5
2
  import { Alert, Card, Flex, Loader, Stack, Text } from "@mantine/core";
6
3
  import { IconAlertCircle, IconCheck, IconMailCheck } from "@tabler/icons-react";
7
4
  import type { UserController } from "alepha/api/users";
5
+ import { useClient } from "alepha/react";
6
+ import { useI18n } from "alepha/react/i18n";
7
+ import { useRouter, useRouterState } from "alepha/react/router";
8
8
  import { useEffect, useState } from "react";
9
9
  import type { AuthI18n } from "../AuthI18n.ts";
10
10
  import type { AuthRouter } from "../AuthRouter.ts";
@@ -1,5 +1,3 @@
1
- import { useAuth } from "@alepha/react/auth";
2
- import { useRouter } from "@alepha/react/router";
3
1
  import {
4
2
  ActionButton,
5
3
  type ActionMenuConfig,
@@ -9,6 +7,8 @@ import {
9
7
  } from "@alepha/ui";
10
8
  import { Avatar } from "@mantine/core";
11
9
  import { IconLogin2, IconLogout, IconUser } from "@tabler/icons-react";
10
+ import { useAuth } from "alepha/react/auth";
11
+ import { useRouter } from "alepha/react/router";
12
12
  import type { ReactNode } from "react";
13
13
  import type { AuthRouter } from "../../AuthRouter.ts";
14
14
 
package/src/auth/index.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { AlephaReactAuth } from "@alepha/react/auth";
2
- import { AlephaReactI18n } from "@alepha/react/i18n";
3
1
  import { AlephaUI } from "@alepha/ui";
4
2
  import { $module } from "alepha";
3
+ import { AlephaReactAuth } from "alepha/react/auth";
4
+ import { AlephaReactI18n } from "alepha/react/i18n";
5
5
  import { AuthI18n } from "./AuthI18n.ts";
6
6
  import { AuthRouter } from "./AuthRouter.ts";
7
7
 
@@ -18,7 +18,18 @@ export { default as VerifyEmail } from "./components/VerifyEmail.tsx";
18
18
  // ---------------------------------------------------------------------------------------------------------------------
19
19
 
20
20
  /**
21
- * Login UI Module
21
+ * | type | quality | stability |
22
+ * |------|---------|-----------|
23
+ * | frontend | rare | experimental |
24
+ *
25
+ * Authentication UI components.
26
+ *
27
+ * **Features:**
28
+ * - Login page component
29
+ * - Register page component
30
+ * - Reset password page component
31
+ * - Email verification page component
32
+ * - UserButton for user menu
22
33
  *
23
34
  * @module alepha.ui.auth
24
35
  */
@@ -1,4 +1,4 @@
1
- import { $page } from "@alepha/react/router";
1
+ import { $page } from "alepha/react/router";
2
2
  import AlephaMantineProvider from "./components/layout/AlephaMantineProvider.tsx";
3
3
 
4
4
  export class RootRouter {
@@ -0,0 +1,57 @@
1
+ import { $atom, type Static, t } from "alepha";
2
+
3
+ export const alephaSidebarAtom = $atom({
4
+ name: "alepha.ui.sidebar",
5
+ schema: t.object({
6
+ /**
7
+ * Whether the sidebar is opened or closed (mobile).
8
+ */
9
+ opened: t.boolean(),
10
+ /**
11
+ * Whether the sidebar is collapsed (narrow) or expanded (wide).
12
+ */
13
+ collapsed: t.boolean(),
14
+ /**
15
+ * Current width of the sidebar when expanded (can be changed by resizing).
16
+ * @default 300
17
+ */
18
+ width: t.number(),
19
+ /**
20
+ * Default width used when expanding from collapsed state or on hover.
21
+ * @default 300
22
+ */
23
+ defaultWidth: t.number(),
24
+ /**
25
+ * Width of the sidebar when collapsed.
26
+ * @default 78
27
+ */
28
+ collapsedWidth: t.number(),
29
+ /**
30
+ * Maximum width when resizing.
31
+ * @default 500
32
+ */
33
+ maxWidth: t.number(),
34
+ /**
35
+ * Minimum width before auto-collapse triggers.
36
+ * @default 150
37
+ */
38
+ collapseThreshold: t.number(),
39
+ /**
40
+ * Delay in ms before sidebar expands on hover when collapsed.
41
+ * @default 300
42
+ */
43
+ hoverDelay: t.number(),
44
+ }),
45
+ default: {
46
+ opened: false,
47
+ collapsed: false,
48
+ width: 300,
49
+ defaultWidth: 300,
50
+ collapsedWidth: 78,
51
+ maxWidth: 500,
52
+ collapseThreshold: 240,
53
+ hoverDelay: 300,
54
+ },
55
+ });
56
+
57
+ export type AlephaSidebarState = Static<typeof alephaSidebarAtom.schema>;
@@ -1,11 +1,3 @@
1
- import { type UseActionReturn, useAction } from "@alepha/react";
2
- import { type FormModel, useFormState } from "@alepha/react/form";
3
- import {
4
- type RouterGoOptions,
5
- type UseActiveOptions,
6
- useActive,
7
- useRouter,
8
- } from "@alepha/react/router";
9
1
  import {
10
2
  Anchor,
11
3
  type AnchorProps,
@@ -23,6 +15,14 @@ import {
23
15
  useMantineTheme,
24
16
  } from "@mantine/core";
25
17
  import { IconCheck, IconChevronRight } from "@tabler/icons-react";
18
+ import { type UseActionReturn, useAction } from "alepha/react";
19
+ import { type FormModel, useFormState } from "alepha/react/form";
20
+ import {
21
+ type RouterGoOptions,
22
+ type UseActiveOptions,
23
+ useActive,
24
+ useRouter,
25
+ } from "alepha/react/router";
26
26
  import {
27
27
  type ButtonHTMLAttributes,
28
28
  Children,
@@ -287,7 +287,7 @@ const ActionButton = (_props: ActionProps) => {
287
287
 
288
288
  if (!props.children) {
289
289
  restProps.children = Children.only(icon);
290
- restProps.px ??= "xs";
290
+ restProps.px ??= "xs"; // TODO: change based on props.size ?
291
291
  } else {
292
292
  restProps.leftSection = icon;
293
293
  }
@@ -1,15 +1,16 @@
1
- import { useStore } from "@alepha/react";
2
1
  import { Burger, type BurgerProps } from "@mantine/core";
2
+ import { useStore } from "alepha/react";
3
+ import { alephaSidebarAtom } from "../../atoms/alephaSidebarAtom.ts";
3
4
 
4
5
  export interface BurgerButtonProps extends BurgerProps {}
5
6
 
6
7
  const BurgerButton = (props: BurgerButtonProps) => {
7
- const [opened, setOpened] = useStore("alepha.ui.sidebar.opened");
8
+ const [sidebar, setSidebar] = useStore(alephaSidebarAtom);
8
9
 
9
10
  return (
10
11
  <Burger
11
- opened={opened}
12
- onClick={() => setOpened(!opened)}
12
+ opened={sidebar.opened}
13
+ onClick={() => setSidebar({ ...sidebar, opened: !sidebar.opened })}
13
14
  hiddenFrom="sm"
14
15
  size="sm"
15
16
  {...props}
@@ -1,5 +1,5 @@
1
- import { useI18n } from "@alepha/react/i18n";
2
1
  import { IconLanguage } from "@tabler/icons-react";
2
+ import { useI18n } from "alepha/react/i18n";
3
3
  import ActionButton, { type ActionProps } from "./ActionButton.tsx";
4
4
 
5
5
  export interface LanguageButtonProps {
@@ -1,6 +1,8 @@
1
1
  import { Flex, Kbd, Text } from "@mantine/core";
2
+ import { useOs } from "@mantine/hooks";
2
3
  import { spotlight } from "@mantine/spotlight";
3
4
  import { IconSearch } from "@tabler/icons-react";
5
+ import { ClientOnly } from "alepha/react";
4
6
  import ActionButton, { type ActionProps } from "./ActionButton.tsx";
5
7
 
6
8
  export interface OmnibarButtonProps {
@@ -9,6 +11,23 @@ export interface OmnibarButtonProps {
9
11
  }
10
12
 
11
13
  const OmnibarButton = (props: OmnibarButtonProps) => {
14
+ const os = useOs();
15
+ const isMac = os === "macos" || os === "ios";
16
+ const shortcut = isMac ? "⌘" : "Ctrl";
17
+
18
+ if (props.collapsed) {
19
+ return (
20
+ <ActionButton
21
+ variant={"subtle"}
22
+ onClick={spotlight.open}
23
+ radius={"md"}
24
+ icon={<IconSearch size={16} />}
25
+ tooltip={{ label: "Search", position: "right" }}
26
+ {...props.actionProps}
27
+ />
28
+ );
29
+ }
30
+
12
31
  return (
13
32
  <ActionButton
14
33
  variant={"default"}
@@ -16,7 +35,7 @@ const OmnibarButton = (props: OmnibarButtonProps) => {
16
35
  justify={"space-between"}
17
36
  rightSection={
18
37
  <Kbd visibleFrom={"sm"} size={"sm"}>
19
- ⌘+K
38
+ <ClientOnly>{shortcut}</ClientOnly>+K
20
39
  </Kbd>
21
40
  }
22
41
  radius={"md"}
@@ -1,5 +1,5 @@
1
- import { useStore } from "@alepha/react";
2
1
  import { IconPalette } from "@tabler/icons-react";
2
+ import { useStore } from "alepha/react";
3
3
  import { alephaThemeListAtom } from "../../atoms/alephaThemeListAtom.ts";
4
4
  import { useTheme } from "../../hooks/useTheme.ts";
5
5
  import ActionButton, { type ActionProps } from "./ActionButton.tsx";
@@ -1,33 +1,43 @@
1
- import { useStore } from "@alepha/react";
2
- import { Flex } from "@mantine/core";
3
1
  import {
4
2
  IconLayoutSidebarLeftCollapse,
5
3
  IconLayoutSidebarRightCollapse,
6
4
  } from "@tabler/icons-react";
7
- import ActionButton from "./ActionButton.tsx";
5
+ import { useStore } from "alepha/react";
6
+ import { alephaSidebarAtom } from "../../atoms/alephaSidebarAtom.ts";
7
+ import ActionButton, { type ActionProps } from "./ActionButton.tsx";
8
8
 
9
- const ToggleSidebarButton = () => {
10
- const [collapsed, setCollapsed] = useStore("alepha.ui.sidebar.collapsed");
9
+ type Props = ActionProps;
10
+
11
+ const ToggleSidebarButton = (props: Props) => {
12
+ const [sidebar, setSidebar] = useStore(alephaSidebarAtom);
11
13
 
12
14
  return (
13
- <Flex>
14
- <ActionButton
15
- icon={
16
- collapsed ? (
17
- <IconLayoutSidebarRightCollapse />
18
- ) : (
19
- <IconLayoutSidebarLeftCollapse />
20
- )
21
- }
22
- variant={"subtle"}
23
- size={"md"}
24
- onClick={() => setCollapsed(!collapsed)}
25
- tooltip={{
26
- position: "right",
27
- label: collapsed ? "Show sidebar" : "Hide sidebar",
28
- }}
29
- />
30
- </Flex>
15
+ <ActionButton
16
+ icon={
17
+ sidebar.collapsed ? (
18
+ <IconLayoutSidebarRightCollapse />
19
+ ) : (
20
+ <IconLayoutSidebarLeftCollapse />
21
+ )
22
+ }
23
+ visibleFrom={"sm"}
24
+ variant={"subtle"}
25
+ size={"md"}
26
+ onClick={() => {
27
+ const expanding = sidebar.collapsed;
28
+ setSidebar({
29
+ ...sidebar,
30
+ collapsed: !sidebar.collapsed,
31
+ // Reset width to defaultWidth when expanding
32
+ width: expanding ? sidebar.defaultWidth : sidebar.width,
33
+ });
34
+ }}
35
+ tooltip={{
36
+ position: "right",
37
+ label: sidebar.collapsed ? "Show sidebar" : "Hide sidebar",
38
+ }}
39
+ {...props}
40
+ />
31
41
  );
32
42
  };
33
43
 
@@ -1,4 +1,3 @@
1
- import { useFormState } from "@alepha/react/form";
2
1
  import {
3
2
  ColorInput,
4
3
  type ColorInputProps,
@@ -20,6 +19,7 @@ import type {
20
19
  DateTimePickerProps,
21
20
  TimeInputProps,
22
21
  } from "@mantine/dates";
22
+ import { useFormState } from "alepha/react/form";
23
23
  import type { ComponentType } from "react";
24
24
  import {
25
25
  type GenericControlProps,
@@ -1,5 +1,3 @@
1
- import { useEvents } from "@alepha/react";
2
- import type { BaseInputField } from "@alepha/react/form";
3
1
  import {
4
2
  ActionIcon,
5
3
  Fieldset,
@@ -11,6 +9,8 @@ import {
11
9
  } from "@mantine/core";
12
10
  import { IconGripVertical, IconPlus, IconTrash } from "@tabler/icons-react";
13
11
  import type { TObject, TSchema } from "alepha";
12
+ import { useEvents } from "alepha/react";
13
+ import type { BaseInputField } from "alepha/react/form";
14
14
  import { useRef, useState } from "react";
15
15
  import { ui } from "../../constants/ui.ts";
16
16
  import {
@@ -1,4 +1,3 @@
1
- import { useFormState } from "@alepha/react/form";
2
1
  import {
3
2
  DateInput,
4
3
  type DateInputProps,
@@ -7,6 +6,7 @@ import {
7
6
  TimeInput,
8
7
  type TimeInputProps,
9
8
  } from "@mantine/dates";
9
+ import { useFormState } from "alepha/react/form";
10
10
  import {
11
11
  type GenericControlProps,
12
12
  parseInput,
@@ -1,5 +1,3 @@
1
- import { useEvents } from "@alepha/react";
2
- import { useFormState } from "@alepha/react/form";
3
1
  import {
4
2
  Input,
5
3
  NumberInput,
@@ -7,6 +5,8 @@ import {
7
5
  Slider,
8
6
  type SliderProps,
9
7
  } from "@mantine/core";
8
+ import { useEvents } from "alepha/react";
9
+ import { useFormState } from "alepha/react/form";
10
10
  import { useRef, useState } from "react";
11
11
  import {
12
12
  type GenericControlProps,
@@ -1,6 +1,6 @@
1
- import type { BaseInputField, ObjectInputField } from "@alepha/react/form";
2
1
  import { Fieldset, Grid, Stack, Text } from "@mantine/core";
3
2
  import type { TObject } from "alepha";
3
+ import type { BaseInputField, ObjectInputField } from "alepha/react/form";
4
4
  import {
5
5
  type GenericControlProps,
6
6
  parseInput,