@vef-framework-react/starter 2.2.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/layout/components/header/index.cjs +1 -1
- package/dist/cjs/components/layout/components/header/user-avatar.cjs +1 -1
- package/dist/cjs/components/layout/index.cjs +1 -1
- package/dist/cjs/helpers/auth.cjs +1 -1
- package/dist/cjs/routes/layout.cjs +1 -1
- package/dist/cjs/stores/app.cjs +1 -1
- package/dist/es/components/access-denied/access-denied-icon.js +1 -1
- package/dist/es/components/access-denied/index.js +1 -1
- package/dist/es/components/app/index.js +1 -1
- package/dist/es/components/base-layout/index.js +1 -1
- package/dist/es/components/base-layout/styles.js +1 -1
- package/dist/es/components/base-layout/use-base-layout.js +1 -1
- package/dist/es/components/error/error-icon.js +1 -1
- package/dist/es/components/error/index.js +1 -1
- package/dist/es/components/index.js +1 -1
- package/dist/es/components/layout/components/footer.js +1 -1
- package/dist/es/components/layout/components/header/boy-icon.js +1 -1
- package/dist/es/components/layout/components/header/breadcrumb-navigation.js +1 -1
- package/dist/es/components/layout/components/header/color-scheme.js +1 -1
- package/dist/es/components/layout/components/header/fullscreen.js +1 -1
- package/dist/es/components/layout/components/header/girl-icon.js +1 -1
- package/dist/es/components/layout/components/header/index.js +12 -11
- package/dist/es/components/layout/components/header/menu-burger.js +1 -1
- package/dist/es/components/layout/components/header/menu-fold-left-icon.js +1 -1
- package/dist/es/components/layout/components/header/menu-unfold-left-icon.js +1 -1
- package/dist/es/components/layout/components/header/search.js +1 -1
- package/dist/es/components/layout/components/header/theme-config.js +1 -1
- package/dist/es/components/layout/components/header/user-avatar.js +39 -40
- package/dist/es/components/layout/components/honeycomb-pattern.js +1 -1
- package/dist/es/components/layout/components/index.js +1 -1
- package/dist/es/components/layout/components/logo.js +1 -1
- package/dist/es/components/layout/components/menu.js +1 -1
- package/dist/es/components/layout/components/search/index.js +1 -1
- package/dist/es/components/layout/components/search/keyboard-arrow-down-icon.js +1 -1
- package/dist/es/components/layout/components/search/keyboard-arrow-up-icon.js +1 -1
- package/dist/es/components/layout/components/search/keyboard-control-icon.js +1 -1
- package/dist/es/components/layout/components/search/keyboard-esc-icon.js +1 -1
- package/dist/es/components/layout/components/search/keyboard-help.js +1 -1
- package/dist/es/components/layout/components/search/keyboard-return-icon.js +1 -1
- package/dist/es/components/layout/components/search/keyboard-shift-icon.js +1 -1
- package/dist/es/components/layout/components/search/keyboard.js +1 -1
- package/dist/es/components/layout/components/search/letter-s-icon.js +1 -1
- package/dist/es/components/layout/components/search/search-result-item.js +1 -1
- package/dist/es/components/layout/components/search/search-result.js +1 -1
- package/dist/es/components/layout/components/sidebar.js +1 -1
- package/dist/es/components/layout/components/tabs/context-menu.js +1 -1
- package/dist/es/components/layout/components/tabs/index.js +1 -1
- package/dist/es/components/layout/components/tabs/main-content-maximum.js +1 -1
- package/dist/es/components/layout/components/tabs/reload.js +1 -1
- package/dist/es/components/layout/components/tabs/tab-item.js +1 -1
- package/dist/es/components/layout/components/tabs/tab-list.js +1 -1
- package/dist/es/components/layout/components/tabs/tabs-container.js +1 -1
- package/dist/es/components/layout/components/theme-config/color-scheme-switcher.js +1 -1
- package/dist/es/components/layout/components/theme-config/color-scheme.js +1 -1
- package/dist/es/components/layout/components/theme-config/config-item.js +1 -1
- package/dist/es/components/layout/components/theme-config/index.js +1 -1
- package/dist/es/components/layout/components/theme-config/menu-layout-card.js +1 -1
- package/dist/es/components/layout/components/theme-config/menu-layout.js +1 -1
- package/dist/es/components/layout/components/theme-config/operations.js +1 -1
- package/dist/es/components/layout/components/theme-config/theme-color-picker.js +1 -1
- package/dist/es/components/layout/components/theme-config/theme-colors.js +1 -1
- package/dist/es/components/layout/hooks/index.js +1 -1
- package/dist/es/components/layout/hooks/use-color-scheme-updater.js +1 -1
- package/dist/es/components/layout/hooks/use-menu-navigate.js +1 -1
- package/dist/es/components/layout/hooks/use-tab-navigate.js +1 -1
- package/dist/es/components/layout/index.js +12 -11
- package/dist/es/components/layout/store.js +1 -1
- package/dist/es/components/layout/styles.js +1 -1
- package/dist/es/components/login/icon-login.js +1 -1
- package/dist/es/components/login/index.js +1 -1
- package/dist/es/components/login/styles.js +1 -1
- package/dist/es/components/login/welcome-messages.js +1 -1
- package/dist/es/components/n-progress/components/bar.js +1 -1
- package/dist/es/components/n-progress/components/container.js +1 -1
- package/dist/es/components/n-progress/components/index.js +1 -1
- package/dist/es/components/n-progress/event.js +1 -1
- package/dist/es/components/n-progress/index.js +1 -1
- package/dist/es/components/not-found/index.js +1 -1
- package/dist/es/components/not-found/not-found-icon.js +1 -1
- package/dist/es/components/router-provider/context.js +1 -1
- package/dist/es/components/router-provider/index.js +1 -1
- package/dist/es/components/theme-config-provider/global-style.js +1 -1
- package/dist/es/components/theme-config-provider/index.js +1 -1
- package/dist/es/components/theme-config-provider/use-color-mode-effect.js +1 -1
- package/dist/es/components/theme-config-provider/use-theme-config.js +1 -1
- package/dist/es/constants/event.js +1 -1
- package/dist/es/constants/index.js +1 -1
- package/dist/es/constants/router.js +1 -1
- package/dist/es/constants/storage.js +1 -1
- package/dist/es/helpers/api.js +1 -1
- package/dist/es/helpers/app-version.js +1 -1
- package/dist/es/helpers/app.js +1 -1
- package/dist/es/helpers/auth.js +10 -2
- package/dist/es/helpers/event.js +1 -1
- package/dist/es/helpers/index.js +1 -1
- package/dist/es/helpers/query.js +1 -1
- package/dist/es/helpers/router.js +1 -1
- package/dist/es/hooks/index.js +1 -1
- package/dist/es/hooks/use-route-full-path.js +1 -1
- package/dist/es/index.js +1 -1
- package/dist/es/routes/access-denied.js +1 -1
- package/dist/es/routes/index.js +1 -1
- package/dist/es/routes/layout.js +20 -18
- package/dist/es/routes/login.js +1 -1
- package/dist/es/routes/root.js +1 -1
- package/dist/es/stores/app.js +8 -4
- package/dist/es/stores/index.js +1 -1
- package/dist/es/stores/tab.js +1 -1
- package/dist/es/stores/theme.js +1 -1
- package/dist/types/components/layout/components/header/index.d.ts +2 -2
- package/dist/types/components/layout/components/header/user-avatar.d.ts +2 -2
- package/dist/types/components/layout/index.d.ts +1 -1
- package/dist/types/components/layout/props.d.ts +7 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/routes/index.d.ts +1 -1
- package/dist/types/routes/layout.d.ts +19 -16
- package/dist/types/stores/app.d.ts +4 -3
- package/dist/types/types/common.d.ts +8 -2
- package/package.json +5 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import "../../constants/router.js";
|
|
3
3
|
import { NotFoundIcon as e } from "./not-found-icon.js";
|
|
4
4
|
import { Button as t, Center as n, Icon as r, Result as i } from "@vef-framework-react/components";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { jsx as e, jsxs as t } from "@emotion/react/jsx-runtime";
|
|
3
3
|
//#region src/components/not-found/not-found-icon.tsx
|
|
4
4
|
function n(n) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { createContext as e, use as t } from "react";
|
|
3
3
|
//#region src/components/router-provider/context.ts
|
|
4
4
|
var n = e(null);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { useRouterContextHook as e } from "./context.js";
|
|
3
3
|
import { useMemo as t } from "react";
|
|
4
4
|
import { jsx as n } from "@emotion/react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import "@emotion/react";
|
|
3
3
|
//#region src/components/theme-config-provider/global-style.ts
|
|
4
4
|
function e() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { useColorModeEffect as e } from "./use-color-mode-effect.js";
|
|
3
3
|
import { useThemeConfig as t } from "./use-theme-config.js";
|
|
4
4
|
import { ConfigProvider as n } from "@vef-framework-react/components";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { useThemeStore as e } from "../../stores/theme.js";
|
|
3
3
|
import { useEffect as t } from "react";
|
|
4
4
|
//#region src/components/theme-config-provider/use-color-mode-effect.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { useThemeStore as e } from "../../stores/theme.js";
|
|
3
3
|
import { globalStyle as t } from "./global-style.js";
|
|
4
4
|
import { useShallow as n } from "@vef-framework-react/core";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
//#region src/constants/event.ts
|
|
3
3
|
var e = "__vef_access_denied_event", t = "__vef_unauthenticated_event";
|
|
4
4
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
//#region src/constants/router.ts
|
|
3
3
|
var e = "/login", t = "/_common/login", n = "/", r = "/_layout", i = "/access-denied", a = "/_common/access-denied";
|
|
4
4
|
//#endregion
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
//#endregion
|
package/dist/es/helpers/api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { useAppStore as e } from "../stores/app.js";
|
|
3
3
|
import { emitAccessDenied as t, emitUnauthenticated as n } from "./event.js";
|
|
4
4
|
import { showErrorMessage as r, showInfoMessage as i, showSuccessMessage as a, showWarningMessage as o } from "@vef-framework-react/components";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { Button as e, Group as t, Icon as n, Text as r, globalCssVars as i, showInfoNotification as a } from "@vef-framework-react/components";
|
|
3
3
|
import { joinPaths as o } from "@vef-framework-react/shared";
|
|
4
4
|
import { Fragment as s, jsx as c, jsxs as l } from "@emotion/react/jsx-runtime";
|
package/dist/es/helpers/app.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { RouterContextHookProvider as e } from "../components/router-provider/context.js";
|
|
3
3
|
import { App as t } from "../components/app/index.js";
|
|
4
4
|
import { StrictMode as n } from "react";
|
package/dist/es/helpers/auth.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { LOGIN_ROUTE_PATH as e } from "../constants/router.js";
|
|
3
3
|
import { useAppStore as t } from "../stores/app.js";
|
|
4
4
|
//#region src/helpers/auth.ts
|
|
5
5
|
async function n(n) {
|
|
6
|
-
t.setState({
|
|
6
|
+
t.setState({
|
|
7
|
+
isAuthenticated: !1,
|
|
8
|
+
authTokens: void 0,
|
|
9
|
+
userInfo: void 0,
|
|
10
|
+
userMenuMap: void 0,
|
|
11
|
+
menuPathMap: void 0,
|
|
12
|
+
menuItems: void 0,
|
|
13
|
+
permissionTokens: void 0
|
|
14
|
+
}), await n.navigate({ to: e }), n.invalidate({
|
|
7
15
|
sync: !0,
|
|
8
16
|
forcePending: !0
|
|
9
17
|
});
|
package/dist/es/helpers/event.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { ACCESS_DENIED_EVENT as e, UNAUTHENTICATED_EVENT as t } from "../constants/event.js";
|
|
3
3
|
import { createEventEmitter as n } from "@vef-framework-react/shared";
|
|
4
4
|
//#region src/helpers/event.ts
|
package/dist/es/helpers/index.js
CHANGED
package/dist/es/helpers/query.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { SYMBOL_PAGINATION as e, SYMBOL_SORT as t } from "@vef-framework-react/components";
|
|
3
3
|
//#region src/helpers/query.ts
|
|
4
4
|
function n(...e) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { ACCESS_DENIED_ROUTE_PATH as e } from "../constants/router.js";
|
|
3
3
|
import { useAppStore as t } from "../stores/app.js";
|
|
4
4
|
import { useTabStore as n } from "../stores/tab.js";
|
package/dist/es/hooks/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import "./use-route-full-path.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { useMemo as e } from "react";
|
|
3
3
|
import { useLocation as t, useRouter as n } from "@tanstack/react-router";
|
|
4
4
|
//#region src/hooks/use-route-full-path.ts
|
package/dist/es/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { ACCESS_DENIED_ROUTE_ID as e, ACCESS_DENIED_ROUTE_PATH as t, INDEX_ROUTE_ID as n, INDEX_ROUTE_PATH as r, LOGIN_ROUTE_ID as i, LOGIN_ROUTE_PATH as a } from "./constants/router.js";
|
|
3
3
|
import { useAppStore as o } from "./stores/app.js";
|
|
4
4
|
import { useTabStore as s } from "./stores/tab.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import "../constants/router.js";
|
|
3
3
|
import { AccessDenied as e } from "../components/access-denied/index.js";
|
|
4
4
|
//#region src/routes/access-denied.ts
|
package/dist/es/routes/index.js
CHANGED
package/dist/es/routes/layout.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { ACCESS_DENIED_ROUTE_PATH as e, LOGIN_ROUTE_PATH as t } from "../constants/router.js";
|
|
3
3
|
import { useAppStore as n } from "../stores/app.js";
|
|
4
4
|
import { Error as r } from "../components/error/index.js";
|
|
@@ -37,38 +37,40 @@ function p(e) {
|
|
|
37
37
|
function m(e) {
|
|
38
38
|
return e.filter((e) => e.type !== "view").map((e) => Object.freeze(p(e)));
|
|
39
39
|
}
|
|
40
|
-
function h({ fetchUserInfo: o,
|
|
41
|
-
function
|
|
40
|
+
function h({ fetchUserInfo: o, beforeLoad: p, loader: h, ...g }) {
|
|
41
|
+
function _() {
|
|
42
42
|
return /* @__PURE__ */ c(i, {
|
|
43
|
-
...
|
|
43
|
+
...g,
|
|
44
44
|
children: /* @__PURE__ */ c(l, {})
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
return {
|
|
48
|
-
beforeLoad: (
|
|
49
|
-
let {
|
|
50
|
-
if (!
|
|
48
|
+
beforeLoad: async (r) => {
|
|
49
|
+
let { location: i } = r, { isAuthenticated: a, userMenuMap: o } = n.getState();
|
|
50
|
+
if (!a) throw u({
|
|
51
51
|
to: t,
|
|
52
|
-
search: { redirect:
|
|
52
|
+
search: { redirect: i.href }
|
|
53
53
|
});
|
|
54
|
-
if (
|
|
54
|
+
if (o && !o.has(i.pathname)) throw u({
|
|
55
55
|
to: e,
|
|
56
56
|
replace: !0
|
|
57
57
|
});
|
|
58
|
+
return await p?.(r) ?? {};
|
|
58
59
|
},
|
|
59
|
-
loader: async (
|
|
60
|
-
let {
|
|
60
|
+
loader: async (t) => {
|
|
61
|
+
let { location: r } = t, { permissionTokens: i, ...a } = await o(), { menus: s } = a, c = Object.freeze(d(s)), l = Object.freeze(f(s)), p = Object.freeze(m(s));
|
|
61
62
|
if (n.setState({
|
|
62
63
|
...n.getState(),
|
|
63
|
-
userInfo: Object.freeze(
|
|
64
|
-
userMenuMap:
|
|
65
|
-
menuPathMap:
|
|
66
|
-
menuItems:
|
|
67
|
-
|
|
68
|
-
}), !
|
|
64
|
+
userInfo: Object.freeze(a),
|
|
65
|
+
userMenuMap: c,
|
|
66
|
+
menuPathMap: l,
|
|
67
|
+
menuItems: p,
|
|
68
|
+
permissionTokens: Object.freeze(new Set(i))
|
|
69
|
+
}), !c.has(r.pathname)) throw u({
|
|
69
70
|
to: e,
|
|
70
71
|
replace: !0
|
|
71
72
|
});
|
|
73
|
+
if (h) return await h(t);
|
|
72
74
|
},
|
|
73
75
|
pendingComponent: () => /* @__PURE__ */ c(s, {
|
|
74
76
|
description: "页面玩命加载中, 请稍后...",
|
|
@@ -77,7 +79,7 @@ function h({ fetchUserInfo: o, ...p }) {
|
|
|
77
79
|
}),
|
|
78
80
|
errorComponent: r,
|
|
79
81
|
notFoundComponent: a,
|
|
80
|
-
component:
|
|
82
|
+
component: _,
|
|
81
83
|
staleTime: Infinity,
|
|
82
84
|
shouldReload: !1
|
|
83
85
|
};
|
package/dist/es/routes/login.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import "../constants/router.js";
|
|
3
3
|
import { useAppStore as e } from "../stores/app.js";
|
|
4
4
|
import { Login as t } from "../components/login/index.js";
|
package/dist/es/routes/root.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { useAppStore as e } from "../stores/app.js";
|
|
3
3
|
import { jsx as t } from "@emotion/react/jsx-runtime";
|
|
4
4
|
import { Outlet as n, useLocation as r, useRouteContext as i } from "@tanstack/react-router";
|
package/dist/es/stores/app.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { createPersistedStore as e } from "@vef-framework-react/core";
|
|
3
3
|
//#region src/stores/app.ts
|
|
4
|
-
var t = e(() => ({
|
|
4
|
+
var t = e(() => ({
|
|
5
|
+
isAuthenticated: !1,
|
|
6
|
+
custom: {}
|
|
7
|
+
}), {
|
|
5
8
|
name: "app",
|
|
6
9
|
storage: "local",
|
|
7
|
-
selector: ({ isAuthenticated: e,
|
|
10
|
+
selector: ({ isAuthenticated: e, custom: t, authTokens: n }) => ({
|
|
8
11
|
isAuthenticated: e,
|
|
9
|
-
|
|
12
|
+
custom: t,
|
|
13
|
+
authTokens: n
|
|
10
14
|
})
|
|
11
15
|
});
|
|
12
16
|
//#endregion
|
package/dist/es/stores/index.js
CHANGED
package/dist/es/stores/tab.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import "../constants/router.js";
|
|
3
3
|
import { createPersistedStore as e, originalState as t } from "@vef-framework-react/core";
|
|
4
4
|
//#region src/stores/tab.ts
|
package/dist/es/stores/theme.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.3.0 made by Venus | 2026-05-22T09:39:55.761Z */
|
|
2
2
|
import { createPersistedStore as e } from "@vef-framework-react/core";
|
|
3
3
|
import { omit as t } from "@vef-framework-react/shared";
|
|
4
4
|
//#region src/stores/theme.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LayoutProps } from '../../props';
|
|
2
|
-
interface HeaderProps extends Pick<LayoutProps, "title" | "logo" | "headerActions" | "userMenuItems" | "onLogout"> {
|
|
2
|
+
interface HeaderProps extends Pick<LayoutProps, "title" | "logo" | "headerActions" | "userMenuItems" | "onUserMenuClick" | "onLogout"> {
|
|
3
3
|
}
|
|
4
|
-
export declare function Header({ title, logo, headerActions, userMenuItems, onLogout }: HeaderProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare function Header({ title, logo, headerActions, userMenuItems, onUserMenuClick, onLogout }: HeaderProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
5
5
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LayoutProps } from '../../props';
|
|
2
|
-
interface UserAvatarProps extends Pick<LayoutProps, "userMenuItems" | "onLogout"> {
|
|
2
|
+
interface UserAvatarProps extends Pick<LayoutProps, "userMenuItems" | "onUserMenuClick" | "onLogout"> {
|
|
3
3
|
className?: string;
|
|
4
4
|
}
|
|
5
|
-
export declare function UserAvatar({ className, userMenuItems, onLogout }: UserAvatarProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function UserAvatar({ className, userMenuItems, onUserMenuClick, onLogout }: UserAvatarProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
6
6
|
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { LayoutProps } from './props';
|
|
2
|
-
export declare function Layout({ title, logo, headerActions, userMenuItems, onLogout, children }: LayoutProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function Layout({ title, logo, headerActions, userMenuItems, onUserMenuClick, onLogout, children }: LayoutProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
3
3
|
export { type LayoutProps } from './props';
|
|
@@ -18,9 +18,15 @@ export interface LayoutProps extends PropsWithChildren {
|
|
|
18
18
|
*/
|
|
19
19
|
headerActions?: ReactNode;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* Extra items appended to the user dropdown menu. They render before the
|
|
22
|
+
* built-in items (e.g. logout), with an automatic divider in between.
|
|
22
23
|
*/
|
|
23
24
|
userMenuItems?: DropdownMenuProps["items"];
|
|
25
|
+
/**
|
|
26
|
+
* Handles clicks on user menu items. The built-in `logout` key is owned by
|
|
27
|
+
* the framework and never forwarded; all other keys are delivered here.
|
|
28
|
+
*/
|
|
29
|
+
onUserMenuClick?: (key: string) => void;
|
|
24
30
|
/**
|
|
25
31
|
* The logout api function.
|
|
26
32
|
*/
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { type LoginChallenge, type LoginChallengeRenderer, type LoginChallengeRendererProps, type LoginChallengeRenderers, type LoginParams, type LoginProps, type LoginResult, type PasswordLoginParams, type ResolveChallengeParams } from './components';
|
|
2
2
|
export { ACCESS_DENIED_ROUTE_ID, ACCESS_DENIED_ROUTE_PATH, INDEX_ROUTE_ID, INDEX_ROUTE_PATH, LOGIN_ROUTE_ID, LOGIN_ROUTE_PATH } from './constants';
|
|
3
3
|
export { createApiClient, createApp, createRouter, dispatchCustomEvent, emitAccessDenied, emitUnauthenticated, extractQueryParams, handleClientLogout, noopMutationFn, setupAppVersionNotification, type ApiClientOptions, type AppChangelog, type AppVersionNotificationOptions, type RouterOptions } from './helpers';
|
|
4
|
-
export { createAccessDeniedRouteOptions, createLayoutRouteOptions, createLoginRouteOptions, createRootRouteOptions } from './routes';
|
|
4
|
+
export { createAccessDeniedRouteOptions, createLayoutRouteOptions, createLoginRouteOptions, createRootRouteOptions, type LayoutBeforeLoadArgs, type LayoutLoaderArgs } from './routes';
|
|
5
5
|
export { useAppStore, useTabStore, useThemeStore, type AppState, type ColorScheme, type Tab, type TabState, type ThemeColors, type ThemeState } from './stores';
|
|
6
6
|
export type * from './types';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { createAccessDeniedRouteOptions } from './access-denied';
|
|
2
|
-
export { createLayoutRouteOptions } from './layout';
|
|
2
|
+
export { createLayoutRouteOptions, type LayoutBeforeLoadArgs, type LayoutLoaderArgs } from './layout';
|
|
3
3
|
export { createLoginRouteOptions } from './login';
|
|
4
4
|
export { createRootRouteOptions } from './root';
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Awaitable, Except } from '@vef-framework-react/shared';
|
|
1
|
+
import { RouteLoaderFn, RouteOptions } from '@tanstack/react-router';
|
|
2
|
+
import { AnyObject, Awaitable, EmptyObject, Except } from '@vef-framework-react/shared';
|
|
3
3
|
import { LayoutProps, Error, NotFound } from '../components';
|
|
4
4
|
import { UserInfo } from '../types';
|
|
5
|
-
|
|
5
|
+
export type LayoutBeforeLoadArgs = Parameters<NonNullable<RouteOptions<unknown, any, any>["beforeLoad"]>>[0];
|
|
6
|
+
type BaseLayoutLoaderArgs = Parameters<RouteLoaderFn<unknown, any, any>>[0];
|
|
7
|
+
export type LayoutLoaderArgs<TBeforeLoadContext extends AnyObject = EmptyObject> = Except<BaseLayoutLoaderArgs, "context"> & {
|
|
8
|
+
context: BaseLayoutLoaderArgs["context"] & TBeforeLoadContext;
|
|
9
|
+
};
|
|
10
|
+
interface LayoutRouteOptions<TBeforeLoadContext extends AnyObject = EmptyObject, TLoaderData = void> extends Except<LayoutProps, "children"> {
|
|
6
11
|
fetchUserInfo: () => Awaitable<UserInfo>;
|
|
12
|
+
beforeLoad?: (args: LayoutBeforeLoadArgs) => Awaitable<TBeforeLoadContext | void>;
|
|
13
|
+
loader?: (args: LayoutLoaderArgs<TBeforeLoadContext>) => Awaitable<TLoaderData>;
|
|
7
14
|
}
|
|
8
|
-
export declare function createLayoutRouteOptions({ fetchUserInfo, ...layoutProps }: LayoutRouteOptions): {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
readonly notFoundComponent: typeof NotFound;
|
|
18
|
-
readonly component: () => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
19
|
-
readonly staleTime: number;
|
|
20
|
-
readonly shouldReload: false;
|
|
15
|
+
export declare function createLayoutRouteOptions<TBeforeLoadContext extends AnyObject = EmptyObject, TLoaderData = void>({ fetchUserInfo, beforeLoad, loader, ...layoutProps }: LayoutRouteOptions<TBeforeLoadContext, TLoaderData>): {
|
|
16
|
+
beforeLoad: (args: LayoutBeforeLoadArgs) => Promise<TBeforeLoadContext>;
|
|
17
|
+
loader: (args: LayoutLoaderArgs<TBeforeLoadContext>) => Promise<TLoaderData | undefined>;
|
|
18
|
+
pendingComponent: () => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
19
|
+
errorComponent: typeof Error;
|
|
20
|
+
notFoundComponent: typeof NotFound;
|
|
21
|
+
component: () => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
22
|
+
staleTime: number;
|
|
23
|
+
shouldReload: boolean;
|
|
21
24
|
};
|
|
22
25
|
export {};
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { MenuItem } from '@vef-framework-react/components';
|
|
2
2
|
import { AuthTokens, UseBoundStoreWithPersist } from '@vef-framework-react/core';
|
|
3
3
|
import { Except } from '@vef-framework-react/shared';
|
|
4
|
-
import { UserInfo, UserMenu } from '../types';
|
|
4
|
+
import { AppCustomState, UserInfo, UserMenu } from '../types';
|
|
5
5
|
export interface AppState {
|
|
6
6
|
isAuthenticated: boolean;
|
|
7
7
|
authTokens?: Readonly<AuthTokens>;
|
|
8
|
-
userInfo?: Readonly<Except<UserInfo, "
|
|
8
|
+
userInfo?: Readonly<Except<UserInfo, "permissionTokens">>;
|
|
9
9
|
userMenuMap?: Readonly<Map<string, Readonly<UserMenu>>>;
|
|
10
10
|
menuPathMap?: Readonly<Map<string, readonly string[]>>;
|
|
11
11
|
menuItems?: ReadonlyArray<Readonly<MenuItem>>;
|
|
12
|
-
|
|
12
|
+
permissionTokens?: Readonly<Set<string>>;
|
|
13
|
+
custom: AppCustomState;
|
|
13
14
|
}
|
|
14
15
|
export declare const useAppStore: UseBoundStoreWithPersist<AppState>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LiteralUnion, MaybeNull } from '@vef-framework-react/shared';
|
|
1
|
+
import { AnyObject, LiteralUnion, MaybeNull } from '@vef-framework-react/shared';
|
|
2
2
|
export type Gender = "male" | "female" | "unknown";
|
|
3
3
|
export type UserMenuType = LiteralUnion<"directory" | "menu" | "view" | "report", string>;
|
|
4
4
|
export interface UserMenu {
|
|
@@ -19,6 +19,9 @@ export interface UserMenu {
|
|
|
19
19
|
* @example
|
|
20
20
|
* declare module "@vef-framework-react/starter" {
|
|
21
21
|
* interface Register {
|
|
22
|
+
* appCustomState: {
|
|
23
|
+
* appId?: string;
|
|
24
|
+
* };
|
|
22
25
|
* userDetails: {
|
|
23
26
|
* department: string;
|
|
24
27
|
* organization: string;
|
|
@@ -35,6 +38,9 @@ export interface UserMenu {
|
|
|
35
38
|
*/
|
|
36
39
|
export interface Register {
|
|
37
40
|
}
|
|
41
|
+
export type AppCustomState = Register extends {
|
|
42
|
+
appCustomState: infer T extends AnyObject;
|
|
43
|
+
} ? T : AnyObject;
|
|
38
44
|
/**
|
|
39
45
|
* Default shape of `UserInfo['details']` before projects augment `Register`.
|
|
40
46
|
*/
|
|
@@ -63,7 +69,7 @@ export interface UserInfo {
|
|
|
63
69
|
name: string;
|
|
64
70
|
gender: Gender;
|
|
65
71
|
avatar?: MaybeNull<string>;
|
|
66
|
-
|
|
72
|
+
permissionTokens: string[];
|
|
67
73
|
menus: UserMenu[];
|
|
68
74
|
details: ResolvedUserDetails;
|
|
69
75
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vef-framework-react/starter",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.3.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Starter for VEF framework",
|
|
7
7
|
"author": {
|
|
@@ -64,10 +64,10 @@
|
|
|
64
64
|
"@tanstack/react-router": "^1.170.1",
|
|
65
65
|
"react": "^19.2.6",
|
|
66
66
|
"react-dom": "^19.2.6",
|
|
67
|
-
"@vef-framework-react/components": "2.
|
|
68
|
-
"@vef-framework-react/core": "2.
|
|
69
|
-
"@vef-framework-react/hooks": "2.
|
|
70
|
-
"@vef-framework-react/shared": "2.
|
|
67
|
+
"@vef-framework-react/components": "2.3.0",
|
|
68
|
+
"@vef-framework-react/core": "2.3.0",
|
|
69
|
+
"@vef-framework-react/hooks": "2.3.0",
|
|
70
|
+
"@vef-framework-react/shared": "2.3.0"
|
|
71
71
|
},
|
|
72
72
|
"scripts": {
|
|
73
73
|
"clean": "rimraf dist",
|