@vef-framework/starter 1.0.128 → 1.0.129
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/cjs/api.cjs +1 -16
- package/cjs/app.cjs +1 -26
- package/cjs/components/index.cjs +1 -19
- package/cjs/components/vef-access-denied-page/index.cjs +1 -26
- package/cjs/components/vef-access-denied-page/props.cjs +0 -2
- package/cjs/components/vef-app/index.cjs +1 -18
- package/cjs/components/vef-app/props.cjs +0 -2
- package/cjs/components/vef-dev-assistant/index.cjs +4 -132
- package/cjs/components/vef-dev-assistant/props.cjs +0 -2
- package/cjs/components/vef-error-page/index.cjs +1 -23
- package/cjs/components/vef-error-page/props.cjs +0 -2
- package/cjs/components/vef-login-page/index.cjs +1 -40
- package/cjs/components/vef-login-page/props.cjs +0 -2
- package/cjs/components/vef-not-found-page/index.cjs +1 -25
- package/cjs/components/vef-not-found-page/props.cjs +0 -2
- package/cjs/components/vef-router-provider/index.cjs +1 -21
- package/cjs/components/vef-router-provider/props.cjs +0 -2
- package/cjs/constants.cjs +1 -16
- package/cjs/helper.cjs +1 -21
- package/cjs/index.cjs +1 -46
- package/cjs/router.cjs +1 -66
- package/cjs/routes/access-denied.cjs +1 -13
- package/cjs/routes/index.cjs +1 -13
- package/cjs/routes/layout.cjs +1 -135
- package/cjs/routes/login.cjs +1 -30
- package/cjs/routes/root.cjs +1 -23
- package/cjs/store.cjs +1 -20
- package/esm/api.js +1 -14
- package/esm/app.js +1 -24
- package/esm/components/index.js +1 -9
- package/esm/components/vef-access-denied-page/index.js +1 -22
- package/esm/components/vef-app/index.js +1 -14
- package/esm/components/vef-dev-assistant/index.js +4 -128
- package/esm/components/vef-error-page/index.js +1 -19
- package/esm/components/vef-login-page/index.js +1 -36
- package/esm/components/vef-not-found-page/index.js +1 -21
- package/esm/components/vef-router-provider/index.js +1 -17
- package/esm/constants.js +1 -9
- package/esm/helper.js +1 -19
- package/esm/index.js +1 -21
- package/esm/router.js +1 -64
- package/esm/routes/access-denied.js +1 -11
- package/esm/routes/index.js +1 -6
- package/esm/routes/layout.js +1 -133
- package/esm/routes/login.js +1 -28
- package/esm/routes/root.js +1 -21
- package/esm/store.js +1 -18
- package/package.json +5 -5
package/esm/router.js
CHANGED
|
@@ -1,65 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import
|
|
3
|
-
import { VefText, VefLoadingPlaceholder } from '@vef-framework/components';
|
|
4
|
-
import { showErrorNotification } from '@vef-framework/shared';
|
|
5
|
-
import { createElement } from 'react';
|
|
6
|
-
|
|
7
|
-
"use strict";
|
|
8
|
-
const defaultGcTime = 10 * 60 * 1e3;
|
|
9
|
-
function createRouter({
|
|
10
|
-
routeTree,
|
|
11
|
-
history
|
|
12
|
-
}) {
|
|
13
|
-
const router = createRouter$1({
|
|
14
|
-
routeTree,
|
|
15
|
-
trailingSlash: "never",
|
|
16
|
-
caseSensitive: true,
|
|
17
|
-
history: history === "hash" ? createHashHistory() : createBrowserHistory(),
|
|
18
|
-
search: {
|
|
19
|
-
strict: true
|
|
20
|
-
},
|
|
21
|
-
notFoundMode: "root",
|
|
22
|
-
defaultPendingComponent: () => createElement(
|
|
23
|
-
VefLoadingPlaceholder,
|
|
24
|
-
{
|
|
25
|
-
size: "large"
|
|
26
|
-
}
|
|
27
|
-
),
|
|
28
|
-
defaultPendingMs: 500,
|
|
29
|
-
defaultPendingMinMs: 300,
|
|
30
|
-
defaultSsr: false,
|
|
31
|
-
defaultStructuralSharing: true,
|
|
32
|
-
defaultHashScrollIntoView: {
|
|
33
|
-
behavior: "smooth",
|
|
34
|
-
block: "start",
|
|
35
|
-
inline: "center"
|
|
36
|
-
},
|
|
37
|
-
defaultPreload: "intent",
|
|
38
|
-
defaultPreloadDelay: 50,
|
|
39
|
-
defaultPreloadGcTime: defaultGcTime,
|
|
40
|
-
defaultGcTime,
|
|
41
|
-
defaultOnCatch(error, errorInfo) {
|
|
42
|
-
showErrorNotification(
|
|
43
|
-
error.message || error.name,
|
|
44
|
-
createElement(
|
|
45
|
-
VefText,
|
|
46
|
-
{
|
|
47
|
-
color: "error",
|
|
48
|
-
children: createElement("pre", {
|
|
49
|
-
style: {
|
|
50
|
-
maxHeight: "480px",
|
|
51
|
-
overflowY: "auto",
|
|
52
|
-
scrollbarWidth: "thin",
|
|
53
|
-
scrollbarColor: "rgba(0, 0, 0, 0.2) transparent"
|
|
54
|
-
},
|
|
55
|
-
children: error.stack || errorInfo.componentStack || "No stack trace available"
|
|
56
|
-
})
|
|
57
|
-
}
|
|
58
|
-
)
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
return router;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export { createRouter };
|
|
2
|
+
import{createRouter as l,createHashHistory as n,createBrowserHistory as s}from"@tanstack/react-router";import{VefText as c,VefLoadingPlaceholder as d}from"@vef-framework/components";import{showErrorNotification as u}from"@vef-framework/shared";import{createElement as r}from"react";const t=10*60*1e3;function f({routeTree:o,history:a}){return l({routeTree:o,trailingSlash:"never",caseSensitive:!0,history:a==="hash"?n():s(),search:{strict:!0},notFoundMode:"root",defaultPendingComponent:()=>r(d,{size:"large"}),defaultPendingMs:500,defaultPendingMinMs:300,defaultSsr:!1,defaultStructuralSharing:!0,defaultHashScrollIntoView:{behavior:"smooth",block:"start",inline:"center"},defaultPreload:"intent",defaultPreloadDelay:50,defaultPreloadGcTime:t,defaultGcTime:t,defaultOnCatch(e,i){u(e.message||e.name,r(c,{color:"error",children:r("pre",{style:{maxHeight:"480px",overflowY:"auto",scrollbarWidth:"thin",scrollbarColor:"rgba(0, 0, 0, 0.2) transparent"},children:e.stack||i.componentStack||"No stack trace available"})}))}})}export{f as createRouter};
|
|
@@ -1,12 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import
|
|
3
|
-
import VefAccessDeniedPage from '../components/vef-access-denied-page/index.js';
|
|
4
|
-
|
|
5
|
-
"use strict";
|
|
6
|
-
function createAccessDeniedRouteOptions() {
|
|
7
|
-
return {
|
|
8
|
-
component: VefAccessDeniedPage
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export { createAccessDeniedRouteOptions };
|
|
2
|
+
import"../components/index.js";import t from"../components/vef-access-denied-page/index.js";function e(){return{component:t}}export{e as createAccessDeniedRouteOptions};
|
package/esm/routes/index.js
CHANGED
|
@@ -1,7 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
export { createLayoutRouteOptions } from './layout.js';
|
|
4
|
-
export { createLoginRouteOptions } from './login.js';
|
|
5
|
-
export { createRootRoute } from './root.js';
|
|
6
|
-
|
|
7
|
-
"use strict";
|
|
2
|
+
import{createAccessDeniedRouteOptions as t}from"./access-denied.js";import{createLayoutRouteOptions as c}from"./layout.js";import{createLoginRouteOptions as s}from"./login.js";import{createRootRoute as u}from"./root.js";export{t as createAccessDeniedRouteOptions,c as createLayoutRouteOptions,s as createLoginRouteOptions,u as createRootRoute};
|
package/esm/routes/layout.js
CHANGED
|
@@ -1,134 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import
|
|
3
|
-
import { useRouter, useNavigate, useLocation, Outlet, redirect } from '@tanstack/react-router';
|
|
4
|
-
import { VefIcon, VefLayout, VefLoadingPlaceholder } from '@vef-framework/components';
|
|
5
|
-
import { useApiContext } from '@vef-framework/core';
|
|
6
|
-
import { buildRouteParentMenusMappings } from '@vef-framework/shared';
|
|
7
|
-
import { HomeIcon } from 'lucide-react';
|
|
8
|
-
import { useMemo, useCallback } from 'react';
|
|
9
|
-
import { INDEX_PAGE_PATH, ACCESS_DENIED_PAGE_PATH, LOGIN_PAGE_PATH } from '../constants.js';
|
|
10
|
-
import { handleClientLogout } from '../helper.js';
|
|
11
|
-
import { useAppStore } from '../store.js';
|
|
12
|
-
|
|
13
|
-
"use strict";
|
|
14
|
-
const indexBreadcrumbItem = {
|
|
15
|
-
key: INDEX_PAGE_PATH,
|
|
16
|
-
label: /* @__PURE__ */ jsx(VefIcon, { children: /* @__PURE__ */ jsx(HomeIcon, {}) })
|
|
17
|
-
};
|
|
18
|
-
function createLayoutRouteOptions({
|
|
19
|
-
title,
|
|
20
|
-
logo,
|
|
21
|
-
getUserDescription
|
|
22
|
-
}) {
|
|
23
|
-
function LayoutComponent() {
|
|
24
|
-
const router = useRouter();
|
|
25
|
-
const navigate = useNavigate();
|
|
26
|
-
const { pathname } = useLocation();
|
|
27
|
-
const [menus, user, routeParentMenusMappings] = useAppStore((state) => [state.menus, state.user, state.routeParentMenusMappings]);
|
|
28
|
-
const defaultOpenedMenuKeys = routeParentMenusMappings?.get(pathname)?.[1].map((it) => it.key);
|
|
29
|
-
const breadcrumbItems = useMemo(() => {
|
|
30
|
-
const mapping = routeParentMenusMappings?.get(pathname);
|
|
31
|
-
if (!mapping) {
|
|
32
|
-
return [];
|
|
33
|
-
}
|
|
34
|
-
const [currentMenu, parentMenus] = mapping;
|
|
35
|
-
return [
|
|
36
|
-
indexBreadcrumbItem,
|
|
37
|
-
...parentMenus.map((menu) => ({
|
|
38
|
-
key: menu.key,
|
|
39
|
-
label: menu.label,
|
|
40
|
-
dropdownItems: menu.children.filter((child) => child.type !== "divider").map((child) => ({
|
|
41
|
-
key: child.key,
|
|
42
|
-
label: child.label
|
|
43
|
-
}))
|
|
44
|
-
})),
|
|
45
|
-
{
|
|
46
|
-
label: currentMenu.label
|
|
47
|
-
}
|
|
48
|
-
];
|
|
49
|
-
}, [pathname, routeParentMenusMappings]);
|
|
50
|
-
const { logoutApi, fetchAuthenticatedUserApi } = useApiContext();
|
|
51
|
-
const { mutate: logout } = logoutApi.useMutation();
|
|
52
|
-
const handleLogout = useCallback(async () => {
|
|
53
|
-
await logout();
|
|
54
|
-
await handleClientLogout(router, fetchAuthenticatedUserApi);
|
|
55
|
-
}, [logout, router, fetchAuthenticatedUserApi]);
|
|
56
|
-
const handleMenuSwitch = useCallback((menuKey) => {
|
|
57
|
-
navigate({
|
|
58
|
-
to: menuKey
|
|
59
|
-
});
|
|
60
|
-
}, [navigate]);
|
|
61
|
-
return /* @__PURE__ */ jsx(
|
|
62
|
-
VefLayout,
|
|
63
|
-
{
|
|
64
|
-
activeMenuKey: pathname,
|
|
65
|
-
breadcrumbItems,
|
|
66
|
-
defaultOpenedMenuKeys,
|
|
67
|
-
logo,
|
|
68
|
-
menuItems: menus,
|
|
69
|
-
title,
|
|
70
|
-
userAvatar: user?.avatar,
|
|
71
|
-
userDescription: getUserDescription?.(user),
|
|
72
|
-
userGender: user?.gender,
|
|
73
|
-
userName: user?.name,
|
|
74
|
-
onActiveMenuKeyChange: handleMenuSwitch,
|
|
75
|
-
onBreadcrumbClick: handleMenuSwitch,
|
|
76
|
-
onLogout: handleLogout,
|
|
77
|
-
children: /* @__PURE__ */ jsx(Outlet, {})
|
|
78
|
-
}
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
return {
|
|
82
|
-
beforeLoad: ({ location }) => {
|
|
83
|
-
const { isAuthenticated, routeParentMenusMappings } = useAppStore.getState();
|
|
84
|
-
if (!isAuthenticated) {
|
|
85
|
-
throw redirect({
|
|
86
|
-
to: LOGIN_PAGE_PATH,
|
|
87
|
-
search: {
|
|
88
|
-
redirect: location.href
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
if (routeParentMenusMappings && !routeParentMenusMappings.has(location.pathname)) {
|
|
93
|
-
throw redirect({
|
|
94
|
-
to: ACCESS_DENIED_PAGE_PATH,
|
|
95
|
-
replace: true
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
loader: async ({ context, location }) => {
|
|
100
|
-
const { fetchAuthenticatedUserApi } = context;
|
|
101
|
-
const {
|
|
102
|
-
menus,
|
|
103
|
-
permissions,
|
|
104
|
-
...user
|
|
105
|
-
} = await fetchAuthenticatedUserApi.fetchQuery();
|
|
106
|
-
const routeParentMenusMappings = Object.freeze(buildRouteParentMenusMappings(menus));
|
|
107
|
-
useAppStore.setState({
|
|
108
|
-
user: Object.freeze(user),
|
|
109
|
-
menus: Object.freeze(menus),
|
|
110
|
-
permissions: Object.freeze(new Set(permissions)),
|
|
111
|
-
routeParentMenusMappings
|
|
112
|
-
});
|
|
113
|
-
if (!routeParentMenusMappings.has(location.pathname)) {
|
|
114
|
-
throw redirect({
|
|
115
|
-
to: ACCESS_DENIED_PAGE_PATH,
|
|
116
|
-
replace: true
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
pendingComponent: () => /* @__PURE__ */ jsx(
|
|
121
|
-
VefLoadingPlaceholder,
|
|
122
|
-
{
|
|
123
|
-
size: "large",
|
|
124
|
-
tip: "系统加载中,请稍后..."
|
|
125
|
-
}
|
|
126
|
-
),
|
|
127
|
-
component: LayoutComponent,
|
|
128
|
-
staleTime: Infinity,
|
|
129
|
-
gcTime: 0,
|
|
130
|
-
shouldReload: false
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export { createLayoutRouteOptions };
|
|
2
|
+
import{jsx as i}from"@emotion/react/jsx-runtime";import{useRouter as O,useNavigate as E,useLocation as _,Outlet as v,redirect as p}from"@tanstack/react-router";import{VefIcon as S,VefLayout as j,VefLoadingPlaceholder as z}from"@vef-framework/components";import{useApiContext as D}from"@vef-framework/core";import{buildRouteParentMenusMappings as G}from"@vef-framework/shared";import{HomeIcon as H}from"lucide-react";import{useMemo as N,useCallback as g}from"react";import{INDEX_PAGE_PATH as T,ACCESS_DENIED_PAGE_PATH as b,LOGIN_PAGE_PATH as x}from"../constants.js";import{handleClientLogout as R}from"../helper.js";import{useAppStore as l}from"../store.js";const K={key:T,label:i(S,{children:i(H,{})})};function U({title:A,logo:y,getUserDescription:M}){function P(){const o=O(),r=E(),{pathname:t}=_(),[s,n,a]=l(e=>[e.menus,e.user,e.routeParentMenusMappings]),u=a?.get(t)?.[1].map(e=>e.key),k=N(()=>{const e=a?.get(t);if(!e)return[];const[I,L]=e;return[K,...L.map(c=>({key:c.key,label:c.label,dropdownItems:c.children.filter(m=>m.type!=="divider").map(m=>({key:m.key,label:m.label}))})),{label:I.label}]},[t,a]),{logoutApi:w,fetchAuthenticatedUserApi:f}=D(),{mutate:d}=w.useMutation(),C=g(async()=>{await d(),await R(o,f)},[d,o,f]),h=g(e=>{r({to:e})},[r]);return i(j,{activeMenuKey:t,breadcrumbItems:k,defaultOpenedMenuKeys:u,logo:y,menuItems:s,title:A,userAvatar:n?.avatar,userDescription:M?.(n),userGender:n?.gender,userName:n?.name,onActiveMenuKeyChange:h,onBreadcrumbClick:h,onLogout:C,children:i(v,{})})}return{beforeLoad:({location:o})=>{const{isAuthenticated:r,routeParentMenusMappings:t}=l.getState();if(!r)throw p({to:x,search:{redirect:o.href}});if(t&&!t.has(o.pathname))throw p({to:b,replace:!0})},loader:async({context:o,location:r})=>{const{fetchAuthenticatedUserApi:t}=o,{menus:s,permissions:n,...a}=await t.fetchQuery(),u=Object.freeze(G(s));if(l.setState({user:Object.freeze(a),menus:Object.freeze(s),permissions:Object.freeze(new Set(n)),routeParentMenusMappings:u}),!u.has(r.pathname))throw p({to:b,replace:!0})},pendingComponent:()=>i(z,{size:"large",tip:"系统加载中,请稍后..."}),component:P,staleTime:1/0,gcTime:0,shouldReload:!1}}export{U as createLayoutRouteOptions};
|
package/esm/routes/login.js
CHANGED
|
@@ -1,29 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import
|
|
3
|
-
import { redirect } from '@tanstack/react-router';
|
|
4
|
-
import { z } from '@vef-framework/shared';
|
|
5
|
-
import '../components/index.js';
|
|
6
|
-
import { INDEX_PAGE_PATH } from '../constants.js';
|
|
7
|
-
import { useAppStore } from '../store.js';
|
|
8
|
-
import VefLoginPage from '../components/vef-login-page/index.js';
|
|
9
|
-
|
|
10
|
-
"use strict";
|
|
11
|
-
function createLoginRouteOptions(props) {
|
|
12
|
-
return {
|
|
13
|
-
validateSearch: z.object({
|
|
14
|
-
redirect: z.string().optional().default(INDEX_PAGE_PATH).catch(INDEX_PAGE_PATH)
|
|
15
|
-
}),
|
|
16
|
-
beforeLoad: ({ search }) => {
|
|
17
|
-
if (useAppStore.getState().isAuthenticated) {
|
|
18
|
-
const { redirect: redirectPath } = search;
|
|
19
|
-
throw redirect({
|
|
20
|
-
to: redirectPath,
|
|
21
|
-
replace: true
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
component: () => /* @__PURE__ */ jsx(VefLoginPage, { ...props })
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export { createLoginRouteOptions };
|
|
2
|
+
import{jsx as c}from"@emotion/react/jsx-runtime";import{redirect as m}from"@tanstack/react-router";import{z as t}from"@vef-framework/shared";import"../components/index.js";import{INDEX_PAGE_PATH as r}from"../constants.js";import{useAppStore as p}from"../store.js";import a from"../components/vef-login-page/index.js";function n(o){return{validateSearch:t.object({redirect:t.string().optional().default(r).catch(r)}),beforeLoad:({search:e})=>{if(p.getState().isAuthenticated){const{redirect:i}=e;throw m({to:i,replace:!0})}},component:()=>c(a,{...o})}}export{n as createLoginRouteOptions};
|
package/esm/routes/root.js
CHANGED
|
@@ -1,22 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import
|
|
3
|
-
import { createRootRouteWithContext, Outlet } from '@tanstack/react-router';
|
|
4
|
-
import '../components/index.js';
|
|
5
|
-
import VefNotFoundPage from '../components/vef-not-found-page/index.js';
|
|
6
|
-
import VefErrorPage from '../components/vef-error-page/index.js';
|
|
7
|
-
import VefDevAssistant from '../components/vef-dev-assistant/index.js';
|
|
8
|
-
|
|
9
|
-
"use strict";
|
|
10
|
-
function createRootRoute() {
|
|
11
|
-
return createRootRouteWithContext()({
|
|
12
|
-
component: () => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
13
|
-
/* @__PURE__ */ jsx(Outlet, {}),
|
|
14
|
-
process.env.NODE_ENV === "development" && /* @__PURE__ */ jsx(VefDevAssistant, {})
|
|
15
|
-
] }),
|
|
16
|
-
errorComponent: VefErrorPage,
|
|
17
|
-
notFoundComponent: VefNotFoundPage,
|
|
18
|
-
ssr: false
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export { createRootRoute };
|
|
2
|
+
import{jsxs as t,Fragment as r,jsx as o}from"@emotion/react/jsx-runtime";import{createRootRouteWithContext as e,Outlet as m}from"@tanstack/react-router";import"../components/index.js";import n from"../components/vef-not-found-page/index.js";import p from"../components/vef-error-page/index.js";import i from"../components/vef-dev-assistant/index.js";function s(){return e()({component:()=>t(r,{children:[o(m,{}),process.env.NODE_ENV==="development"&&o(i,{})]}),errorComponent:p,notFoundComponent:n,ssr:!1})}export{s as createRootRoute};
|
package/esm/store.js
CHANGED
|
@@ -1,19 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
"use strict";
|
|
5
|
-
const useAppStore = createStore(
|
|
6
|
-
() => ({
|
|
7
|
-
isAuthenticated: false
|
|
8
|
-
}),
|
|
9
|
-
{
|
|
10
|
-
name: "APP",
|
|
11
|
-
storage: "session",
|
|
12
|
-
selector: (state) => ({
|
|
13
|
-
isAuthenticated: state.isAuthenticated,
|
|
14
|
-
token: state.token
|
|
15
|
-
})
|
|
16
|
-
}
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
export { useAppStore };
|
|
2
|
+
import{createStore as e}from"@vef-framework/shared";const s=e(()=>({isAuthenticated:!1}),{name:"APP",storage:"session",selector:t=>({isAuthenticated:t.isAuthenticated,token:t.token})});export{s as useAppStore};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vef-framework/starter",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.129",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "The starter of the VEF framework",
|
|
7
7
|
"author": "Venus",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"use-sync-external-store": "^1.4.0",
|
|
33
33
|
"@tanstack/react-query-devtools": "5.69.0",
|
|
34
34
|
"@tanstack/router-devtools": "^1.114.27",
|
|
35
|
-
"@vef-framework/components": "1.0.
|
|
36
|
-
"@vef-framework/core": "1.0.
|
|
37
|
-
"@vef-framework/hooks": "1.0.
|
|
38
|
-
"@vef-framework/shared": "1.0.
|
|
35
|
+
"@vef-framework/components": "1.0.129",
|
|
36
|
+
"@vef-framework/core": "1.0.129",
|
|
37
|
+
"@vef-framework/hooks": "1.0.129",
|
|
38
|
+
"@vef-framework/shared": "1.0.129",
|
|
39
39
|
"lucide-react": "0.484.0",
|
|
40
40
|
"motion": "12.6.0",
|
|
41
41
|
"nprogress": "^0.2.0"
|