@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,24 +1,50 @@
1
- import { AlephaReactForm, FormValidationError, useForm, useFormState } from "@alepha/react/form";
2
- import { $head, AlephaReactHead } from "@alepha/react/head";
3
- import { AlephaReactI18n, useI18n } from "@alepha/react/i18n";
4
- import { $atom, $inject, $module, Alepha, AlephaError, TypeBoxError, t } from "alepha";
1
+ import { $atom, $context, $inject, $module, Alepha, AlephaError, TypeBoxError, t } from "alepha";
2
+ import { AlephaReactForm, FormValidationError, useForm, useFormState } from "alepha/react/form";
3
+ import { $head, AlephaReactHead } from "alepha/react/head";
4
+ import { AlephaReactI18n, useI18n } from "alepha/react/i18n";
5
5
  import { $cookie } from "alepha/server/cookies";
6
- import { $page, NestedView, useActive, useRouter } from "@alepha/react/router";
7
- import { useAction, useEvents, useInject, useStore } from "@alepha/react";
6
+ import { $page, NestedView, useActive, useRouter } from "alepha/react/router";
8
7
  import { ActionIcon, Anchor, AppShell, Autocomplete, Badge, Box, Burger, Button, Card, Checkbox, Collapse, ColorInput, ColorSchemeScript, CopyButton, Divider, Fieldset, FileInput, Flex, Flex as Flex$1, Grid, Group, Input, Kbd, MantineProvider, Menu, MultiSelect, NumberInput, Pagination, PasswordInput, Popover, ScrollArea, SegmentedControl, Select, Slider, Stack, Switch, Table, TagsInput, Text, Text as Text$1, TextInput, Textarea, ThemeIcon, Tooltip, UnstyledButton, useComputedColorScheme, useMantineColorScheme, useMantineTheme } from "@mantine/core";
9
8
  import { ModalsProvider, modals } from "@mantine/modals";
10
9
  import { Notifications, notifications } from "@mantine/notifications";
11
10
  import { NavigationProgress, nprogress } from "@mantine/nprogress";
11
+ import { ClientOnly, useAction, useEvents, useInject, useStore } from "alepha/react";
12
12
  import { IconAlertTriangle, IconArrowDown, IconArrowUp, IconArrowsSort, IconAt, IconCalendar, IconCheck, IconChevronDown, IconChevronRight, IconClock, IconColorPicker, IconColumns, IconCopy, IconFile, IconFilter, IconGripVertical, IconHash, IconInfoCircle, IconInfoTriangle, IconKey, IconLanguage, IconLayoutSidebarLeftCollapse, IconLayoutSidebarRightCollapse, IconLetterCase, IconLink, IconList, IconMail, IconMoon, IconPalette, IconPhone, IconPlus, IconRefresh, IconSearch, IconSelector, IconSquareRounded, IconSun, IconToggleLeft, IconTrash, IconX } from "@tabler/icons-react";
13
13
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
14
14
  import { Spotlight, spotlight } from "@mantine/spotlight";
15
15
  import { Children, createElement, isValidElement, useCallback, useEffect, useMemo, useRef, useState } from "react";
16
16
  import { ui as ui$1 } from "@alepha/ui";
17
+ import { useDebouncedCallback, useOs } from "@mantine/hooks";
17
18
  import { DateInput, DateTimePicker, TimeInput } from "@mantine/dates";
18
19
  import { parseQueryString } from "alepha/orm";
19
- import { useDebouncedCallback } from "@mantine/hooks";
20
20
  import { DateTimeProvider } from "alepha/datetime";
21
21
 
22
+ //#region ../../src/core/atoms/alephaSidebarAtom.ts
23
+ const alephaSidebarAtom = $atom({
24
+ name: "alepha.ui.sidebar",
25
+ schema: t.object({
26
+ opened: t.boolean(),
27
+ collapsed: t.boolean(),
28
+ width: t.number(),
29
+ defaultWidth: t.number(),
30
+ collapsedWidth: t.number(),
31
+ maxWidth: t.number(),
32
+ collapseThreshold: t.number(),
33
+ hoverDelay: t.number()
34
+ }),
35
+ default: {
36
+ opened: false,
37
+ collapsed: false,
38
+ width: 300,
39
+ defaultWidth: 300,
40
+ collapsedWidth: 78,
41
+ maxWidth: 500,
42
+ collapseThreshold: 240,
43
+ hoverDelay: 300
44
+ }
45
+ });
46
+
47
+ //#endregion
22
48
  //#region ../../src/core/atoms/alephaThemeAtom.ts
23
49
  const alephaThemeAtom = $atom({
24
50
  name: "alepha.ui.theme",
@@ -208,8 +234,8 @@ const useTheme = () => {
208
234
  useStore(alephaThemeAtom);
209
235
  const themeProvider = useInject(ThemeProvider);
210
236
  const theme = themeProvider.getTheme();
211
- const setTheme = (theme$1) => {
212
- themeProvider.setTheme(theme$1.index);
237
+ const setTheme = (theme) => {
238
+ themeProvider.setTheme(theme.index);
213
239
  };
214
240
  return [theme, setTheme];
215
241
  };
@@ -825,7 +851,7 @@ const ActionButton = (_props) => {
825
851
  }
826
852
  }
827
853
  if (props.icon) {
828
- const icon$1 = isComponentType(props.icon) ? /* @__PURE__ */ jsx(props.icon, { size: ui.sizes.icon.md }) : /* @__PURE__ */ jsx(ThemeIcon, {
854
+ const icon = isComponentType(props.icon) ? /* @__PURE__ */ jsx(props.icon, { size: ui.sizes.icon.md }) : /* @__PURE__ */ jsx(ThemeIcon, {
829
855
  w: 24,
830
856
  variant: "transparent",
831
857
  size: "sm",
@@ -834,9 +860,9 @@ const ActionButton = (_props) => {
834
860
  children: props.icon
835
861
  });
836
862
  if (!props.children) {
837
- restProps.children = Children.only(icon$1);
863
+ restProps.children = Children.only(icon);
838
864
  restProps.px ??= "xs";
839
- } else restProps.leftSection = icon$1;
865
+ } else restProps.leftSection = icon;
840
866
  }
841
867
  if (props.leftSection && !props.children) restProps.px ??= "xs";
842
868
  if (props.textVisibleFrom) {
@@ -1050,10 +1076,13 @@ const ActionHrefButton = (props) => {
1050
1076
  //#endregion
1051
1077
  //#region ../../src/core/components/buttons/BurgerButton.tsx
1052
1078
  const BurgerButton = (props) => {
1053
- const [opened, setOpened] = useStore("alepha.ui.sidebar.opened");
1079
+ const [sidebar, setSidebar] = useStore(alephaSidebarAtom);
1054
1080
  return /* @__PURE__ */ jsx(Burger, {
1055
- opened,
1056
- onClick: () => setOpened(!opened),
1081
+ opened: sidebar.opened,
1082
+ onClick: () => setSidebar({
1083
+ ...sidebar,
1084
+ opened: !sidebar.opened
1085
+ }),
1057
1086
  hiddenFrom: "sm",
1058
1087
  size: "sm",
1059
1088
  ...props
@@ -1152,14 +1181,27 @@ var LanguageButton_default = LanguageButton;
1152
1181
  //#endregion
1153
1182
  //#region ../../src/core/components/buttons/OmnibarButton.tsx
1154
1183
  const OmnibarButton = (props) => {
1184
+ const os = useOs();
1185
+ const shortcut = os === "macos" || os === "ios" ? "⌘" : "Ctrl";
1186
+ if (props.collapsed) return /* @__PURE__ */ jsx(ActionButton_default, {
1187
+ variant: "subtle",
1188
+ onClick: spotlight.open,
1189
+ radius: "md",
1190
+ icon: /* @__PURE__ */ jsx(IconSearch, { size: 16 }),
1191
+ tooltip: {
1192
+ label: "Search",
1193
+ position: "right"
1194
+ },
1195
+ ...props.actionProps
1196
+ });
1155
1197
  return /* @__PURE__ */ jsx(ActionButton_default, {
1156
1198
  variant: "default",
1157
1199
  onClick: spotlight.open,
1158
1200
  justify: "space-between",
1159
- rightSection: /* @__PURE__ */ jsx(Kbd, {
1201
+ rightSection: /* @__PURE__ */ jsxs(Kbd, {
1160
1202
  visibleFrom: "sm",
1161
1203
  size: "sm",
1162
- children: "⌘+K"
1204
+ children: [/* @__PURE__ */ jsx(ClientOnly, { children: shortcut }), "+K"]
1163
1205
  }),
1164
1206
  radius: "md",
1165
1207
  ...props.actionProps,
@@ -1201,6 +1243,32 @@ const ThemeButton = (props) => {
1201
1243
  };
1202
1244
  var ThemeButton_default = ThemeButton;
1203
1245
 
1246
+ //#endregion
1247
+ //#region ../../src/core/components/buttons/ToggleSidebarButton.tsx
1248
+ const ToggleSidebarButton = (props) => {
1249
+ const [sidebar, setSidebar] = useStore(alephaSidebarAtom);
1250
+ return /* @__PURE__ */ jsx(ActionButton_default, {
1251
+ icon: sidebar.collapsed ? /* @__PURE__ */ jsx(IconLayoutSidebarRightCollapse, {}) : /* @__PURE__ */ jsx(IconLayoutSidebarLeftCollapse, {}),
1252
+ visibleFrom: "sm",
1253
+ variant: "subtle",
1254
+ size: "md",
1255
+ onClick: () => {
1256
+ const expanding = sidebar.collapsed;
1257
+ setSidebar({
1258
+ ...sidebar,
1259
+ collapsed: !sidebar.collapsed,
1260
+ width: expanding ? sidebar.defaultWidth : sidebar.width
1261
+ });
1262
+ },
1263
+ tooltip: {
1264
+ position: "right",
1265
+ label: sidebar.collapsed ? "Show sidebar" : "Hide sidebar"
1266
+ },
1267
+ ...props
1268
+ });
1269
+ };
1270
+ var ToggleSidebarButton_default = ToggleSidebarButton;
1271
+
1204
1272
  //#endregion
1205
1273
  //#region ../../src/core/utils/icons.tsx
1206
1274
  /**
@@ -1878,9 +1946,9 @@ const ControlQueryBuilder = ({ schema, value = "", onChange, placeholder = "Ente
1878
1946
  const inputRef = useRef(null);
1879
1947
  const fields = schema ? extractSchemaFields(schema) : [];
1880
1948
  const [error, setError] = useState(null);
1881
- const isValid = (value$1) => {
1949
+ const isValid = (value) => {
1882
1950
  try {
1883
- parseQueryString(value$1.trim());
1951
+ parseQueryString(value.trim());
1884
1952
  } catch (e) {
1885
1953
  setError(e.message);
1886
1954
  return false;
@@ -2184,7 +2252,7 @@ const ControlSelect = (props) => {
2184
2252
  });
2185
2253
  }
2186
2254
  if (isArray && itemsEnum || props.multi) {
2187
- const data$1 = itemsEnum?.map((value) => ({
2255
+ const data = itemsEnum?.map((value) => ({
2188
2256
  value,
2189
2257
  label: value
2190
2258
  })) || [];
@@ -2193,7 +2261,7 @@ const ControlSelect = (props) => {
2193
2261
  ...inputProps,
2194
2262
  id,
2195
2263
  leftSection: icon,
2196
- data: data$1,
2264
+ data,
2197
2265
  defaultValue: Array.isArray(props.input.props.defaultValue) ? props.input.props.defaultValue : [],
2198
2266
  onChange: (value) => {
2199
2267
  props.input.set(value);
@@ -2449,7 +2517,7 @@ var Control_default = Control;
2449
2517
  * @example
2450
2518
  * ```tsx
2451
2519
  * import { t } from "alepha";
2452
- * import { useForm } from "@alepha/react/form";
2520
+ * import { useForm } from "alepha/react/form";
2453
2521
  * import { TypeForm } from "@alepha/ui";
2454
2522
  *
2455
2523
  * const form = useForm({
@@ -2616,44 +2684,35 @@ const AppBar = (props) => {
2616
2684
  };
2617
2685
  var AppBar_default = AppBar;
2618
2686
 
2619
- //#endregion
2620
- //#region ../../src/core/components/buttons/ToggleSidebarButton.tsx
2621
- const ToggleSidebarButton = () => {
2622
- const [collapsed, setCollapsed] = useStore("alepha.ui.sidebar.collapsed");
2623
- return /* @__PURE__ */ jsx(Flex$1, { children: /* @__PURE__ */ jsx(ActionButton_default, {
2624
- icon: collapsed ? /* @__PURE__ */ jsx(IconLayoutSidebarRightCollapse, {}) : /* @__PURE__ */ jsx(IconLayoutSidebarLeftCollapse, {}),
2625
- variant: "subtle",
2626
- size: "md",
2627
- onClick: () => setCollapsed(!collapsed),
2628
- tooltip: {
2629
- position: "right",
2630
- label: collapsed ? "Show sidebar" : "Hide sidebar"
2631
- }
2632
- }) });
2633
- };
2634
- var ToggleSidebarButton_default = ToggleSidebarButton;
2635
-
2636
2687
  //#endregion
2637
2688
  //#region ../../src/core/components/layout/Sidebar.tsx
2638
2689
  const Sidebar = (props) => {
2639
2690
  const router = useRouter();
2640
2691
  const { onItemClick } = props;
2692
+ const divider = (key) => {
2693
+ return /* @__PURE__ */ jsx(Flex$1, {
2694
+ h: 1,
2695
+ bg: "var(--alepha-border)",
2696
+ my: "xs",
2697
+ mx: props.collapsed ? 0 : "sm"
2698
+ }, key);
2699
+ };
2641
2700
  const renderNode = (item, key) => {
2642
2701
  if ("type" in item) {
2643
- if (item.type === "spacer") return /* @__PURE__ */ jsx(Flex$1, { h: 16 }, key);
2644
- if (item.type === "divider") return /* @__PURE__ */ jsx(Flex$1, {
2645
- h: 1,
2646
- bg: "var(--alepha-border)",
2647
- my: "md",
2648
- mx: "sm"
2702
+ if (item.type === "spacer") {
2703
+ if (props.collapsed) return null;
2704
+ return /* @__PURE__ */ jsx(Flex$1, { h: 16 }, key);
2705
+ }
2706
+ if (item.type === "divider") return divider(key);
2707
+ if (item.type === "search") return /* @__PURE__ */ jsx(Flex$1, {
2708
+ mb: "xs",
2709
+ children: /* @__PURE__ */ jsx(OmnibarButton_default, { collapsed: props.collapsed })
2649
2710
  }, key);
2650
- if (item.type === "search") return /* @__PURE__ */ jsx(OmnibarButton_default, { collapsed: props.collapsed }, key);
2651
2711
  if (item.type === "toggle") return /* @__PURE__ */ jsx(ToggleSidebarButton_default, {}, key);
2652
2712
  if (item.type === "section") {
2653
- if (props.collapsed) return;
2713
+ if (props.collapsed) return divider(key);
2654
2714
  return /* @__PURE__ */ jsxs(Flex$1, {
2655
2715
  mt: "md",
2656
- mb: "xs",
2657
2716
  align: "center",
2658
2717
  gap: "xs",
2659
2718
  children: [renderIcon(item.icon), /* @__PURE__ */ jsx(Text$1, {
@@ -2662,7 +2721,7 @@ const Sidebar = (props) => {
2662
2721
  tt: "uppercase",
2663
2722
  fw: "bold",
2664
2723
  children: item.label
2665
- }, key)]
2724
+ })]
2666
2725
  }, key);
2667
2726
  }
2668
2727
  }
@@ -2698,13 +2757,13 @@ const Sidebar = (props) => {
2698
2757
  return [];
2699
2758
  };
2700
2759
  const padding = "md";
2701
- const gap = props.items ? props.gap : "xs";
2702
- const menu = useMemo(() => getSidebarNodes(), []);
2760
+ const gap = props.items ? props.gap ?? 2 : "xs";
2761
+ const menu = useMemo(() => getSidebarNodes(), [props.items, props.autoPopulateMenu]);
2703
2762
  return /* @__PURE__ */ jsxs(Flex$1, {
2704
2763
  flex: 1,
2705
2764
  py: padding,
2706
2765
  direction: "column",
2707
- className: "overflow-auto",
2766
+ className: "alepha-sidebar-scroll",
2708
2767
  ...props.flexProps,
2709
2768
  children: [
2710
2769
  /* @__PURE__ */ jsx(Flex$1, {
@@ -2718,7 +2777,7 @@ const Sidebar = (props) => {
2718
2777
  px: padding,
2719
2778
  direction: "column",
2720
2779
  flex: 1,
2721
- className: "overflow-auto",
2780
+ className: "alepha-sidebar-scroll",
2722
2781
  children: menu.filter((it) => !it.position).map((item, index) => renderNode(item, index))
2723
2782
  }),
2724
2783
  /* @__PURE__ */ jsx(Flex$1, {
@@ -2734,9 +2793,9 @@ const SidebarItem = (props) => {
2734
2793
  const { item, level } = props;
2735
2794
  const maxLevel = 2;
2736
2795
  const router = useRouter();
2737
- const isActive = useCallback((item$1) => {
2738
- if (!item$1.children) return false;
2739
- for (const child of item$1.children) {
2796
+ const isActive = useCallback((item) => {
2797
+ if (!item.children) return false;
2798
+ for (const child of item.children) {
2740
2799
  if (child.href) {
2741
2800
  if (router.isActive(child.href)) return true;
2742
2801
  }
@@ -2809,31 +2868,15 @@ const SidebarItem = (props) => {
2809
2868
  };
2810
2869
  const SidebarCollapsedItem = (props) => {
2811
2870
  const { item, level } = props;
2812
- const router = useRouter();
2813
- const isActive = useCallback((item$1) => {
2814
- if (!item$1.children) return false;
2815
- for (const child of item$1.children) {
2816
- if (child.href) {
2817
- if (router.isActive(child.href)) return true;
2818
- }
2819
- if (isActive(child)) return true;
2820
- }
2821
- return false;
2822
- }, []);
2823
- const [isOpen, setIsOpen] = useState(isActive(item));
2824
- const handleItemClick = (e) => {
2825
- if (!props.item.target) e.preventDefault();
2826
- if (item.children && item.children.length > 0) setIsOpen(!isOpen);
2827
- else {
2828
- props.onItemClick?.(item);
2829
- item.onClick?.();
2830
- }
2871
+ const handleItemClick = () => {
2872
+ props.onItemClick?.(item);
2873
+ item.onClick?.();
2831
2874
  };
2832
2875
  return /* @__PURE__ */ jsx(ActionButton_default, {
2833
2876
  size: props.item.theme?.size ?? props.theme.button?.size ?? (level === 0 ? "sm" : "xs"),
2834
2877
  variant: "subtle",
2835
2878
  variantActive: "default",
2836
- tooltip: item.children ? void 0 : {
2879
+ tooltip: {
2837
2880
  label: item.label,
2838
2881
  position: "right"
2839
2882
  },
@@ -2842,16 +2885,6 @@ const SidebarCollapsedItem = (props) => {
2842
2885
  icon: renderIcon(item.icon) ?? /* @__PURE__ */ jsx(IconSquareRounded, {}),
2843
2886
  href: props.item.href,
2844
2887
  target: props.item.target,
2845
- menu: item.children ? {
2846
- position: "right",
2847
- on: "hover",
2848
- items: item.children.filter((child) => !child.can || child.can()).map((child) => ({
2849
- label: child.label,
2850
- href: child.href,
2851
- icon: renderIcon(child.icon),
2852
- children: child.children?.filter((c) => !c.can || c.can())
2853
- }))
2854
- } : void 0,
2855
2888
  ...props.item.actionProps
2856
2889
  });
2857
2890
  };
@@ -2860,8 +2893,129 @@ const SidebarCollapsedItem = (props) => {
2860
2893
  //#region ../../src/core/components/layout/AdminShell.tsx
2861
2894
  const AdminShell = (props) => {
2862
2895
  const router = useRouter();
2863
- const [opened, setOpened] = useStore("alepha.ui.sidebar.opened");
2864
- const [collapsed] = useStore("alepha.ui.sidebar.collapsed", props.sidebarProps?.collapsed);
2896
+ const [sidebar, setSidebar] = useStore(alephaSidebarAtom);
2897
+ const { opened, collapsed } = sidebar;
2898
+ useEffect(() => {
2899
+ if (props.sidebarProps?.collapsed !== void 0) setSidebar({
2900
+ ...sidebar,
2901
+ collapsed: props.sidebarProps.collapsed
2902
+ });
2903
+ }, []);
2904
+ const [isResizing, setIsResizing] = useState(false);
2905
+ const [isHovering, setIsHovering] = useState(false);
2906
+ const [collapseEffect, setCollapseEffect] = useState({
2907
+ offset: 0,
2908
+ opacity: 1
2909
+ });
2910
+ const resizeRef = useRef(null);
2911
+ const { collapsedWidth, collapseThreshold, maxWidth, hoverDelay, defaultWidth } = sidebar;
2912
+ const handleResizeStart = useCallback((e) => {
2913
+ if (!props.resizable) return;
2914
+ e.preventDefault();
2915
+ if (collapsed) {
2916
+ setSidebar({
2917
+ ...sidebar,
2918
+ collapsed: false,
2919
+ width: defaultWidth
2920
+ });
2921
+ setIsResizing(true);
2922
+ resizeRef.current = {
2923
+ startX: e.clientX,
2924
+ startWidth: defaultWidth
2925
+ };
2926
+ } else {
2927
+ setIsResizing(true);
2928
+ resizeRef.current = {
2929
+ startX: e.clientX,
2930
+ startWidth: sidebar.width
2931
+ };
2932
+ }
2933
+ }, [
2934
+ props.resizable,
2935
+ collapsed,
2936
+ sidebar,
2937
+ setSidebar,
2938
+ defaultWidth
2939
+ ]);
2940
+ useEffect(() => {
2941
+ if (!isResizing) return;
2942
+ const handleMouseMove = (e) => {
2943
+ if (!resizeRef.current) return;
2944
+ const delta = e.clientX - resizeRef.current.startX;
2945
+ const rawWidth = resizeRef.current.startWidth + delta;
2946
+ const newWidth = Math.min(Math.max(rawWidth, collapsedWidth), maxWidth);
2947
+ if (rawWidth < collapseThreshold) {
2948
+ const progress = Math.max(0, (collapseThreshold - rawWidth) / collapseThreshold);
2949
+ setCollapseEffect({
2950
+ offset: -progress * collapsedWidth,
2951
+ opacity: 1 - progress * .7
2952
+ });
2953
+ setSidebar({
2954
+ ...sidebar,
2955
+ width: collapseThreshold,
2956
+ collapsed: false
2957
+ });
2958
+ } else {
2959
+ setCollapseEffect({
2960
+ offset: 0,
2961
+ opacity: 1
2962
+ });
2963
+ setSidebar({
2964
+ ...sidebar,
2965
+ width: newWidth,
2966
+ collapsed: false
2967
+ });
2968
+ }
2969
+ };
2970
+ const handleMouseUp = () => {
2971
+ if (collapseEffect.offset < 0) setSidebar({
2972
+ ...sidebar,
2973
+ collapsed: true
2974
+ });
2975
+ setCollapseEffect({
2976
+ offset: 0,
2977
+ opacity: 1
2978
+ });
2979
+ setIsResizing(false);
2980
+ resizeRef.current = null;
2981
+ };
2982
+ document.addEventListener("mousemove", handleMouseMove);
2983
+ document.addEventListener("mouseup", handleMouseUp);
2984
+ return () => {
2985
+ document.removeEventListener("mousemove", handleMouseMove);
2986
+ document.removeEventListener("mouseup", handleMouseUp);
2987
+ };
2988
+ }, [
2989
+ isResizing,
2990
+ sidebar,
2991
+ setSidebar,
2992
+ collapsedWidth,
2993
+ maxWidth,
2994
+ collapseThreshold,
2995
+ collapseEffect.offset
2996
+ ]);
2997
+ const hoverTimeoutRef = useRef(null);
2998
+ const handleNavbarMouseEnter = useCallback(() => {
2999
+ if (collapsed) hoverTimeoutRef.current = setTimeout(() => {
3000
+ setIsHovering(true);
3001
+ }, hoverDelay);
3002
+ }, [collapsed, hoverDelay]);
3003
+ const handleNavbarMouseLeave = useCallback(() => {
3004
+ if (hoverTimeoutRef.current) {
3005
+ clearTimeout(hoverTimeoutRef.current);
3006
+ hoverTimeoutRef.current = null;
3007
+ }
3008
+ setIsHovering(false);
3009
+ }, []);
3010
+ useEffect(() => {
3011
+ if (collapsed) {
3012
+ setIsHovering(false);
3013
+ if (hoverTimeoutRef.current) {
3014
+ clearTimeout(hoverTimeoutRef.current);
3015
+ hoverTimeoutRef.current = null;
3016
+ }
3017
+ }
3018
+ }, [collapsed]);
2865
3019
  const shouldShowSidebar = () => {
2866
3020
  if (props.noSidebarWhen?.paths) {
2867
3021
  for (const path of props.noSidebarWhen.paths) if (router.isActive(path, { startWith: true })) return false;
@@ -2874,9 +3028,12 @@ const AdminShell = (props) => {
2874
3028
  setShowSidebar(shouldShowSidebar());
2875
3029
  },
2876
3030
  "react:transition:begin": () => {
2877
- setOpened(false);
3031
+ setSidebar({
3032
+ ...sidebar,
3033
+ opened: false
3034
+ });
2878
3035
  }
2879
- }, []);
3036
+ }, [sidebar]);
2880
3037
  const defaultAppBarItems = [{
2881
3038
  position: "left",
2882
3039
  type: "burger"
@@ -2885,14 +3042,19 @@ const AdminShell = (props) => {
2885
3042
  const hasAppBar = hasSidebar || props.appBarProps || props.header;
2886
3043
  const headerHeight = hasAppBar ? 60 : 0;
2887
3044
  const footerHeight = props.footer ? 24 : 0;
2888
- const sidebarWidth = hasSidebar ? collapsed ? 78 : 300 : 0;
3045
+ const expandedWidth = Math.max(sidebar.width, collapsedWidth);
3046
+ const isExpandedByHover = collapsed && isHovering;
3047
+ const effectiveCollapsed = collapsed && !isHovering;
3048
+ const hoverWidth = Math.max(defaultWidth, collapsedWidth);
3049
+ const sidebarWidth = hasSidebar ? effectiveCollapsed ? collapsedWidth : isExpandedByHover ? hoverWidth : expandedWidth : 0;
3050
+ const canResize = props.resizable && !collapsed;
2889
3051
  return /* @__PURE__ */ jsxs(AppShell, {
2890
3052
  w: "100%",
2891
3053
  flex: 1,
2892
3054
  padding: "md",
2893
3055
  header: hasAppBar ? { height: 60 } : void 0,
2894
3056
  navbar: hasSidebar ? {
2895
- width: collapsed ? { base: 78 } : { base: 300 },
3057
+ width: effectiveCollapsed ? { base: collapsedWidth } : isExpandedByHover ? { base: hoverWidth } : { base: expandedWidth },
2896
3058
  breakpoint: "sm",
2897
3059
  collapsed: { mobile: !opened }
2898
3060
  } : void 0,
@@ -2907,13 +3069,32 @@ const AdminShell = (props) => {
2907
3069
  ...props.appBarProps
2908
3070
  })
2909
3071
  }),
2910
- hasSidebar && /* @__PURE__ */ jsx(AppShell.Navbar, {
3072
+ hasSidebar && /* @__PURE__ */ jsxs(AppShell.Navbar, {
2911
3073
  bg: ui.colors.surface,
3074
+ className: "alepha-sidebar-navbar",
3075
+ "data-resizing": isResizing,
3076
+ onMouseEnter: handleNavbarMouseEnter,
3077
+ onMouseLeave: handleNavbarMouseLeave,
3078
+ style: {
3079
+ transform: collapseEffect.offset ? `translateX(${collapseEffect.offset}px)` : void 0,
3080
+ opacity: collapseEffect.opacity
3081
+ },
2912
3082
  ...props.appShellNavbarProps,
2913
- children: /* @__PURE__ */ jsx(Sidebar, {
2914
- collapsed,
2915
- ...props.sidebarProps ?? {}
2916
- })
3083
+ children: [/* @__PURE__ */ jsx(Sidebar, {
3084
+ ...props.sidebarProps ?? {},
3085
+ collapsed: effectiveCollapsed
3086
+ }), (canResize || isExpandedByHover) && /* @__PURE__ */ jsx(Flex$1, {
3087
+ pos: "absolute",
3088
+ right: -2,
3089
+ top: 0,
3090
+ bottom: 0,
3091
+ w: 4,
3092
+ style: {
3093
+ cursor: "col-resize",
3094
+ userSelect: "none"
3095
+ },
3096
+ onMouseDown: handleResizeStart
3097
+ })]
2917
3098
  }),
2918
3099
  /* @__PURE__ */ jsx(AppShell.Main, {
2919
3100
  pl: sidebarWidth,
@@ -2923,6 +3104,8 @@ const AdminShell = (props) => {
2923
3104
  display: "flex",
2924
3105
  flex: 1,
2925
3106
  style: { flexDirection: "column" },
3107
+ className: "alepha-sidebar-main",
3108
+ "data-resizing": isResizing,
2926
3109
  ...props.appShellMainProps,
2927
3110
  children: props.children ?? /* @__PURE__ */ jsx(NestedView, {})
2928
3111
  }),
@@ -3618,7 +3801,25 @@ const useDialog = () => {
3618
3801
  //#endregion
3619
3802
  //#region ../../src/core/index.ts
3620
3803
  /**
3621
- * Mantine
3804
+ * | type | quality | stability |
3805
+ * |------|---------|-----------|
3806
+ * | frontend | rare | experimental |
3807
+ *
3808
+ * Core UI components based on Mantine UI v8.
3809
+ *
3810
+ * **Features:**
3811
+ * - Mantine integration with theme support
3812
+ * - ActionButton, BurgerButton, ClipboardButton, DarkModeButton, LanguageButton, ThemeButton
3813
+ * - AlertDialog, ConfirmDialog, PromptDialog
3814
+ * - Form controls: Control, ControlArray, ControlDate, ControlNumber, ControlObject, ControlSelect, ControlQueryBuilder
3815
+ * - TypeForm for automatic form generation from TypeBox schemas
3816
+ * - AdminShell layout component
3817
+ * - AppBar with configurable elements
3818
+ * - Sidebar navigation with sections and menu items
3819
+ * - Omnibar for command palette / search
3820
+ * - DataTable with filtering, sorting, pagination
3821
+ * - Toast notifications
3822
+ * - Theme system with dark mode
3622
3823
  *
3623
3824
  * @module alepha.ui
3624
3825
  */
@@ -3639,7 +3840,21 @@ const AlephaUI = $module({
3639
3840
  alepha.with(ToastService);
3640
3841
  }
3641
3842
  });
3843
+ /**
3844
+ * Register UI components and get the RootRouter instance.
3845
+ */
3846
+ const $ui = (opts = {}) => {
3847
+ const { alepha } = $context();
3848
+ /**
3849
+ * If multi ui, should we have N themes ? or one $atom theme but with change based on current ui app ?
3850
+ *
3851
+ * App (theme=T1) -> Admin (theme=T2) ?
3852
+ *
3853
+ * > It can be done with onLeave()/onEnter() of the RootRouter to set the theme atom.
3854
+ */
3855
+ return alepha.inject(RootRouter);
3856
+ };
3642
3857
 
3643
3858
  //#endregion
3644
- export { ActionButton_default as ActionButton, AdminShell_default as AdminShell, AlephaMantineProvider_default as AlephaMantineProvider, AlephaUI, AlertDialog_default as AlertDialog, AppBar_default as AppBar, BurgerButton_default as BurgerButton, ClipboardButton_default as ClipboardButton, ConfirmDialog_default as ConfirmDialog, Control_default as Control, ControlArray_default as ControlArray, ControlDate_default as ControlDate, ControlNumber_default as ControlNumber, ControlObject_default as ControlObject, ControlQueryBuilder_default as ControlQueryBuilder, ControlSelect_default as ControlSelect, DarkModeButton_default as DarkModeButton, DataTable_default as DataTable, DialogService, Flex, LanguageButton_default as LanguageButton, OPERATOR_INFO, Omnibar_default as Omnibar, OmnibarButton_default as OmnibarButton, PromptDialog_default as PromptDialog, RootRouter, Sidebar, Text, ThemeButton_default as ThemeButton, ThemeProvider, ToastService, TypeForm_default as TypeForm, alephaThemeAtom, alephaThemeListAtom, capitalize, defaultTheme, extractSchemaFields, getDefaultIcon, getOperatorsForField, midnightTheme, prettyName, ui, useDialog, useToast };
3859
+ export { $ui, ActionButton_default as ActionButton, AdminShell_default as AdminShell, AlephaMantineProvider_default as AlephaMantineProvider, AlephaUI, AlertDialog_default as AlertDialog, AppBar_default as AppBar, BurgerButton_default as BurgerButton, ClipboardButton_default as ClipboardButton, ConfirmDialog_default as ConfirmDialog, Control_default as Control, ControlArray_default as ControlArray, ControlDate_default as ControlDate, ControlNumber_default as ControlNumber, ControlObject_default as ControlObject, ControlQueryBuilder_default as ControlQueryBuilder, ControlSelect_default as ControlSelect, DarkModeButton_default as DarkModeButton, DataTable_default as DataTable, DialogService, Flex, LanguageButton_default as LanguageButton, OPERATOR_INFO, Omnibar_default as Omnibar, OmnibarButton_default as OmnibarButton, PromptDialog_default as PromptDialog, RootRouter, Sidebar, Text, ThemeButton_default as ThemeButton, ThemeProvider, ToastService, ToggleSidebarButton_default as ToggleSidebarButton, TypeForm_default as TypeForm, alephaSidebarAtom, alephaThemeAtom, alephaThemeListAtom, capitalize, defaultTheme, extractSchemaFields, getDefaultIcon, getOperatorsForField, midnightTheme, prettyName, ui, useDialog, useToast };
3645
3860
  //# sourceMappingURL=index.js.map