@alepha/ui 0.15.4 → 0.15.5

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 (99) hide show
  1. package/dist/admin/AdminApiKeys-DsmGnHNh.js +3 -0
  2. package/dist/admin/AdminApiKeys-GMORg-1l.js +442 -0
  3. package/dist/admin/AdminApiKeys-GMORg-1l.js.map +1 -0
  4. package/dist/admin/AdminAudits-8SM96viT.js +3 -0
  5. package/dist/admin/{AdminAudits-Oh7iAfQa.js → AdminAudits-pkWrjq1Z.js} +2 -2
  6. package/dist/admin/{AdminAudits-Oh7iAfQa.js.map → AdminAudits-pkWrjq1Z.js.map} +1 -1
  7. package/dist/admin/AdminFiles-B56ocq4H.js +3 -0
  8. package/dist/admin/{AdminFiles-Cu8GHgQ3.js → AdminFiles-WeQbsCsl.js} +2 -2
  9. package/dist/admin/{AdminFiles-Cu8GHgQ3.js.map → AdminFiles-WeQbsCsl.js.map} +1 -1
  10. package/dist/admin/AdminJobs-B-q9iGO3.js +697 -0
  11. package/dist/admin/AdminJobs-B-q9iGO3.js.map +1 -0
  12. package/dist/admin/AdminJobs-CED1syCn.js +3 -0
  13. package/dist/admin/AdminLayout-BX4FIpXv.css +143 -0
  14. package/dist/admin/AdminLayout-BX4FIpXv.css.map +1 -0
  15. package/dist/admin/{AdminLayout-QJLIesuG.js → AdminLayout-BqZiXx4H.js} +3 -2
  16. package/dist/admin/AdminLayout-BqZiXx4H.js.map +1 -0
  17. package/dist/admin/AdminNotifications-B0B1rdc4.js +3 -0
  18. package/dist/admin/{AdminNotifications-CgYkBuG_.js → AdminNotifications-Ds5Un0NJ.js} +2 -2
  19. package/dist/admin/{AdminNotifications-CgYkBuG_.js.map → AdminNotifications-Ds5Un0NJ.js.map} +1 -1
  20. package/dist/admin/{AdminParameters-Cl-R0nXt.js → AdminParameters-BU3lATdJ.js} +1 -1
  21. package/dist/admin/{AdminParameters-hjNG_KXb.js → AdminParameters-CfDUpc78.js} +4 -4
  22. package/dist/admin/{AdminParameters-hjNG_KXb.js.map → AdminParameters-CfDUpc78.js.map} +1 -1
  23. package/dist/admin/AdminSessions-BDGK2MS6.js +3 -0
  24. package/dist/admin/{AdminSessions-Bey9cuy1.js → AdminSessions-DzIOxM3b.js} +2 -2
  25. package/dist/admin/{AdminSessions-Bey9cuy1.js.map → AdminSessions-DzIOxM3b.js.map} +1 -1
  26. package/dist/admin/{AdminUserAudits-C7AN9jx7.js → AdminUserAudits-CiUPN2BC.js} +2 -2
  27. package/dist/admin/{AdminUserAudits-C7AN9jx7.js.map → AdminUserAudits-CiUPN2BC.js.map} +1 -1
  28. package/dist/admin/{AdminUserAudits-Cp_ERd2g.js → AdminUserAudits-Cj79gENT.js} +1 -1
  29. package/dist/admin/{AdminUserCreate-BVIm4JdN.js → AdminUserCreate-BwQKr4xE.js} +2 -2
  30. package/dist/admin/{AdminUserCreate-BVIm4JdN.js.map → AdminUserCreate-BwQKr4xE.js.map} +1 -1
  31. package/dist/admin/{AdminUserCreate-C1aInRDk.js → AdminUserCreate-Cq-mUmBs.js} +1 -1
  32. package/dist/admin/{AdminUserDetails-Dcn3OwMC.js → AdminUserDetails-DRjVAPFd.js} +1 -1
  33. package/dist/admin/{AdminUserDetails-yM4x8JE6.js → AdminUserDetails-uqtC5aJ1.js} +2 -2
  34. package/dist/admin/{AdminUserDetails-yM4x8JE6.js.map → AdminUserDetails-uqtC5aJ1.js.map} +1 -1
  35. package/dist/admin/{AdminUserLayout-gb-nbggz.js → AdminUserLayout-CGzmHHby.js} +1 -1
  36. package/dist/admin/{AdminUserLayout-BnfBC1gD.js → AdminUserLayout-CiPay35T.js} +2 -2
  37. package/dist/admin/{AdminUserLayout-BnfBC1gD.js.map → AdminUserLayout-CiPay35T.js.map} +1 -1
  38. package/dist/admin/{AdminUserSessions-kmkXG-xf.js → AdminUserSessions-DAE8Nf1F.js} +2 -2
  39. package/dist/admin/{AdminUserSessions-kmkXG-xf.js.map → AdminUserSessions-DAE8Nf1F.js.map} +1 -1
  40. package/dist/admin/AdminUserSessions-DcdzuNZ9.js +3 -0
  41. package/dist/admin/AdminUserSettings-D7V6-ceX.js +3 -0
  42. package/dist/admin/{AdminUserSettings-DZ9iWhJW.js → AdminUserSettings-EbahaV2a.js} +2 -2
  43. package/dist/admin/{AdminUserSettings-DZ9iWhJW.js.map → AdminUserSettings-EbahaV2a.js.map} +1 -1
  44. package/dist/admin/AdminUsers-D9nyzGqQ.js +3 -0
  45. package/dist/admin/{AdminUsers-D6Y5K8Am.js → AdminUsers-Dcjh0KNW.js} +2 -2
  46. package/dist/admin/{AdminUsers-D6Y5K8Am.js.map → AdminUsers-Dcjh0KNW.js.map} +1 -1
  47. package/dist/admin/index.d.ts +24 -36
  48. package/dist/admin/index.d.ts.map +1 -1
  49. package/dist/admin/index.js +52 -169
  50. package/dist/admin/index.js.map +1 -1
  51. package/dist/auth/AuthLayout-BaD7RD2h.css +143 -0
  52. package/dist/auth/AuthLayout-BaD7RD2h.css.map +1 -0
  53. package/dist/auth/AuthLayout-Dj5K4SIN.js.map +1 -1
  54. package/dist/auth/index.d.ts +9 -1
  55. package/dist/auth/index.d.ts.map +1 -1
  56. package/dist/auth/index.js +1 -2
  57. package/dist/auth/index.js.map +1 -1
  58. package/dist/core/index.d.ts +13 -21
  59. package/dist/core/index.d.ts.map +1 -1
  60. package/dist/core/index.js +26 -38
  61. package/dist/core/index.js.map +1 -1
  62. package/dist/demo/{DemoLogin-S-b15cmE.js → DemoLogin-CvCG2WVh.js} +3 -1
  63. package/dist/demo/{DemoLogin-S-b15cmE.js.map → DemoLogin-CvCG2WVh.js.map} +1 -1
  64. package/dist/demo/{DemoRegister-B29MdAaZ.js → DemoRegister-CmeHbOAs.js} +3 -1
  65. package/dist/demo/{DemoRegister-B29MdAaZ.js.map → DemoRegister-CmeHbOAs.js.map} +1 -1
  66. package/dist/demo/{DemoResetPassword-CPTy88iK.js → DemoResetPassword-CKO5iA_6.js} +3 -1
  67. package/dist/demo/{DemoResetPassword-CPTy88iK.js.map → DemoResetPassword-CKO5iA_6.js.map} +1 -1
  68. package/dist/demo/index.js +3 -3
  69. package/package.json +3 -3
  70. package/src/admin/AdminRouter.ts +34 -0
  71. package/src/admin/components/AdminLayout.tsx +2 -0
  72. package/src/admin/components/jobs/AdminJobs.tsx +733 -119
  73. package/src/admin/components/keys/AdminApiKeys.tsx +537 -0
  74. package/src/admin/components/parameters/AdminParameters.tsx +2 -3
  75. package/src/admin/index.ts +3 -5
  76. package/src/auth/AuthRouter.ts +1 -2
  77. package/src/auth/components/AuthLayout.tsx +1 -0
  78. package/src/core/components/buttons/ActionButton.tsx +15 -2
  79. package/src/core/components/buttons/DarkModeButton.css +6 -0
  80. package/src/core/components/buttons/DarkModeButton.tsx +18 -71
  81. package/src/core/components/buttons/LanguageButton.tsx +2 -7
  82. package/src/core/components/buttons/ThemeButton.tsx +2 -6
  83. package/src/core/components/layout/AdminShell.tsx +17 -1
  84. package/src/core/components/layout/AppBar.tsx +5 -8
  85. package/src/core/index.ts +0 -1
  86. package/src/core/styles.css +1 -0
  87. package/src/demo/components/auth/DemoLogin.tsx +2 -0
  88. package/src/demo/components/auth/DemoRegister.tsx +2 -0
  89. package/src/demo/components/auth/DemoResetPassword.tsx +2 -0
  90. package/dist/admin/AdminAudits-BU-p1g7A.js +0 -3
  91. package/dist/admin/AdminFiles-Bg9feLFH.js +0 -3
  92. package/dist/admin/AdminLayout-BfeFXiul.js +0 -3
  93. package/dist/admin/AdminLayout-QJLIesuG.js.map +0 -1
  94. package/dist/admin/AdminNotifications-DmfGPqHe.js +0 -3
  95. package/dist/admin/AdminSessions-Cn4_jB04.js +0 -3
  96. package/dist/admin/AdminUserSessions-rvA0ztxn.js +0 -3
  97. package/dist/admin/AdminUserSettings-Dg-wTRzN.js +0 -3
  98. package/dist/admin/AdminUsers-RCaxccEW.js +0 -3
  99. package/src/admin/MainRouter.ts +0 -23
@@ -3,7 +3,7 @@ import { AlephaReactForm, FormValidationError, useForm, useFormState } from "ale
3
3
  import { $head, AlephaReactHead } from "alepha/react/head";
4
4
  import { AlephaReactI18n, useI18n } from "alepha/react/i18n";
5
5
  import { $cookie } from "alepha/server/cookies";
6
- import { ActionIcon, Anchor, AppShell, Autocomplete, Badge, Box, Burger, Button, Card, Checkbox, Collapse, ColorInput, ColorSchemeScript, Container, CopyButton, Divider, Fieldset, FileInput, Flex, Flex as Flex$1, Grid, Group, Image, 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";
6
+ import { ActionIcon, Anchor, AppShell, Autocomplete, Badge, Box, Burger, Button, Card, Checkbox, Collapse, ColorInput, ColorSchemeScript, Container, CopyButton, Divider, Fieldset, FileInput, Flex, Flex as Flex$1, Grid, Group, Image, 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, useMantineColorScheme, useMantineTheme } from "@mantine/core";
7
7
  import { ModalsProvider, modals } from "@mantine/modals";
8
8
  import { IconAlertTriangle, IconArrowDown, IconArrowLeft, 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";
9
9
  import { Children, createElement, isValidElement, useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -1045,19 +1045,24 @@ const ActionClickButton = (props) => {
1045
1045
  * Action for navigation with active state support.
1046
1046
  */
1047
1047
  const ActionNavigationButton = (props) => {
1048
- const { active: options, classNameActive, variantActive, routerGoOptions, ...buttonProps } = props;
1048
+ const { active: options, classNameActive, variantActive, routerGoOptions, onClick: propsOnClick, ...buttonProps } = props;
1049
1049
  const router = useRouter();
1050
1050
  const { isPending, isActive } = useActive(options ? {
1051
1051
  href: props.href,
1052
1052
  ...options
1053
1053
  } : { href: props.href });
1054
1054
  const anchorProps = router.anchor(props.href, routerGoOptions);
1055
+ const combinedOnClick = (e) => {
1056
+ propsOnClick?.(e);
1057
+ anchorProps.onClick?.(e);
1058
+ };
1055
1059
  const className = buttonProps.className || "";
1056
1060
  if (isActive && options !== false && classNameActive) buttonProps.className = `${className} ${classNameActive}`.trim();
1057
1061
  if (props.anchorProps) return /* @__PURE__ */ jsx(Anchor, {
1058
1062
  component: "a",
1059
1063
  ...anchorProps,
1060
1064
  ...props.anchorProps,
1065
+ onClick: combinedOnClick,
1061
1066
  children: props.children
1062
1067
  });
1063
1068
  return /* @__PURE__ */ jsx(Button, {
@@ -1065,6 +1070,7 @@ const ActionNavigationButton = (props) => {
1065
1070
  loading: isPending,
1066
1071
  ...buttonProps,
1067
1072
  ...anchorProps,
1073
+ onClick: combinedOnClick,
1068
1074
  variant: isActive && options !== false ? variantActive ?? "filled" : buttonProps.variant ?? "subtle",
1069
1075
  children: props.children
1070
1076
  });
@@ -1120,49 +1126,26 @@ var ClipboardButton_default = ClipboardButton;
1120
1126
 
1121
1127
  //#endregion
1122
1128
  //#region ../../src/core/components/buttons/DarkModeButton.tsx
1129
+ /**
1130
+ * SSR-safe dark mode toggle button.
1131
+ *
1132
+ * Uses CSS-based icon switching to avoid hydration mismatches.
1133
+ * Both icons are rendered, CSS hides the wrong one based on
1134
+ * `data-mantine-color-scheme` attribute.
1135
+ */
1123
1136
  const DarkModeButton = (props) => {
1124
1137
  const { setColorScheme } = useMantineColorScheme();
1125
- const computedColorScheme = useComputedColorScheme("light");
1126
- const [colorScheme, setColorScheme2] = useState("default");
1127
- const mode = props.mode ?? "minimal";
1128
- useEffect(() => {
1129
- setColorScheme2(computedColorScheme);
1130
- }, [computedColorScheme]);
1131
1138
  const toggleColorScheme = () => {
1132
- setColorScheme(computedColorScheme === "dark" ? "light" : "dark");
1139
+ setColorScheme((document.documentElement.getAttribute("data-mantine-color-scheme") ?? "light") === "dark" ? "light" : "dark");
1133
1140
  };
1134
- if (mode === "segmented") return /* @__PURE__ */ jsx(SegmentedControl, {
1135
- value: colorScheme,
1136
- onChange: (value) => setColorScheme(value),
1137
- data: [{
1138
- value: "light",
1139
- label: /* @__PURE__ */ jsx(Flex$1, {
1140
- h: 20,
1141
- align: "center",
1142
- justify: "center",
1143
- children: /* @__PURE__ */ jsx(IconSun, { size: 16 })
1144
- })
1145
- }, {
1146
- value: "dark",
1147
- label: /* @__PURE__ */ jsx(Flex$1, {
1148
- h: 20,
1149
- align: "center",
1150
- justify: "center",
1151
- children: /* @__PURE__ */ jsx(IconMoon, { size: 16 })
1152
- })
1153
- }],
1154
- w: props.fullWidth ? "100%" : void 0,
1155
- ...props.segmentedProps
1156
- });
1157
1141
  return /* @__PURE__ */ jsx(ActionButton_default, {
1158
1142
  onClick: toggleColorScheme,
1159
1143
  variant: props.variant ?? "subtle",
1160
1144
  size: props.size ?? "sm",
1161
1145
  "aria-label": "Toggle color scheme",
1162
1146
  px: "xs",
1163
- fullWidth: props.fullWidth ?? false,
1164
- icon: colorScheme === "dark" ? IconSun : colorScheme === "light" ? IconMoon : IconSun,
1165
- ...props.actionProps
1147
+ icon: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(IconSun, { className: "alepha-light-hidden" }), /* @__PURE__ */ jsx(IconMoon, { className: "alepha-dark-hidden" })] }),
1148
+ ...props
1166
1149
  });
1167
1150
  };
1168
1151
  var DarkModeButton_default = DarkModeButton;
@@ -1179,7 +1162,7 @@ const LanguageButton = (props) => {
1179
1162
  onClick: () => i18n.setLang(lang),
1180
1163
  active: i18n.lang === lang
1181
1164
  })) },
1182
- ...props.actionProps
1165
+ ...props
1183
1166
  });
1184
1167
  };
1185
1168
  var LanguageButton_default = LanguageButton;
@@ -1244,7 +1227,7 @@ const ThemeButton = (props) => {
1244
1227
  onClick: () => setTheme({ index }),
1245
1228
  active: theme.name === it.name
1246
1229
  })) },
1247
- ...props.actionProps
1230
+ ...props
1248
1231
  });
1249
1232
  };
1250
1233
  var ThemeButton_default = ThemeButton;
@@ -3111,6 +3094,10 @@ const AdminShell = (props) => {
3111
3094
  const expandedWidth = Math.max(sidebar.width, collapsedWidth);
3112
3095
  const isExpandedByHover = collapsed && isHovering;
3113
3096
  const effectiveCollapsed = collapsed && !isHovering;
3097
+ const handleSidebarItemClick = useCallback((item) => {
3098
+ if (isExpandedByHover) setIsHovering(false);
3099
+ props.sidebarProps?.onItemClick?.(item);
3100
+ }, [isExpandedByHover, props.sidebarProps?.onItemClick]);
3114
3101
  const hoverWidth = Math.max(defaultWidth, collapsedWidth);
3115
3102
  const sidebarWidth = hasSidebar ? effectiveCollapsed || isExpandedByHover ? collapsedWidth : expandedWidth : 0;
3116
3103
  const canResize = props.sidebarResizable && !collapsed;
@@ -3154,7 +3141,8 @@ const AdminShell = (props) => {
3154
3141
  ...props.appShellNavbarProps,
3155
3142
  children: [/* @__PURE__ */ jsx(Sidebar, {
3156
3143
  ...props.sidebarProps ?? {},
3157
- collapsed: effectiveCollapsed
3144
+ collapsed: effectiveCollapsed,
3145
+ onItemClick: handleSidebarItemClick
3158
3146
  }), (canResize || isExpandedByHover) && /* @__PURE__ */ jsx(Flex$1, {
3159
3147
  pos: "absolute",
3160
3148
  right: -6,