@vef-framework-react/starter 2.2.2 → 2.4.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/access-denied/access-denied-icon.cjs +1 -1
- package/dist/cjs/components/access-denied/index.cjs +1 -1
- package/dist/cjs/components/app/index.cjs +1 -1
- package/dist/cjs/components/base-layout/index.cjs +1 -1
- package/dist/cjs/components/base-layout/styles.cjs +1 -1
- package/dist/cjs/components/base-layout/use-base-layout.cjs +1 -1
- package/dist/cjs/components/error/error-icon.cjs +1 -1
- package/dist/cjs/components/error/index.cjs +1 -1
- package/dist/cjs/components/index.cjs +1 -1
- package/dist/cjs/components/layout/components/contour-pattern.cjs +1 -0
- package/dist/cjs/components/layout/components/footer.cjs +1 -1
- package/dist/cjs/components/layout/components/header/app-switcher.cjs +1 -0
- package/dist/cjs/components/layout/components/header/boy-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/header/color-scheme.cjs +1 -1
- package/dist/cjs/components/layout/components/header/fullscreen.cjs +1 -1
- package/dist/cjs/components/layout/components/header/girl-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/header/header-pattern.cjs +1 -0
- package/dist/cjs/components/layout/components/header/index.cjs +1 -1
- package/dist/cjs/components/layout/components/header/menu-burger.cjs +1 -1
- package/dist/cjs/components/layout/components/header/menu-fold-left-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/header/menu-unfold-left-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/header/mixed-menu.cjs +1 -0
- package/dist/cjs/components/layout/components/header/search.cjs +1 -1
- package/dist/cjs/components/layout/components/header/theme-config.cjs +1 -1
- package/dist/cjs/components/layout/components/header/user-avatar.cjs +1 -1
- package/dist/cjs/components/layout/components/index.cjs +1 -1
- package/dist/cjs/components/layout/components/logo.cjs +1 -1
- package/dist/cjs/components/layout/components/menu.cjs +1 -1
- package/dist/cjs/components/layout/components/search/index.cjs +1 -1
- package/dist/cjs/components/layout/components/search/keyboard-arrow-down-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/search/keyboard-arrow-up-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/search/keyboard-control-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/search/keyboard-esc-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/search/keyboard-help.cjs +1 -1
- package/dist/cjs/components/layout/components/search/keyboard-return-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/search/keyboard-shift-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/search/keyboard.cjs +1 -1
- package/dist/cjs/components/layout/components/search/letter-s-icon.cjs +1 -1
- package/dist/cjs/components/layout/components/search/search-result-item.cjs +1 -1
- package/dist/cjs/components/layout/components/search/search-result.cjs +1 -1
- package/dist/cjs/components/layout/components/sidebar.cjs +1 -1
- package/dist/cjs/components/layout/components/tabs/context-menu.cjs +1 -1
- package/dist/cjs/components/layout/components/tabs/index.cjs +1 -1
- package/dist/cjs/components/layout/components/tabs/main-content-maximum.cjs +1 -1
- package/dist/cjs/components/layout/components/tabs/reload.cjs +1 -1
- package/dist/cjs/components/layout/components/tabs/tab-item.cjs +1 -1
- package/dist/cjs/components/layout/components/tabs/tab-list.cjs +1 -1
- package/dist/cjs/components/layout/components/tabs/tabs-container.cjs +1 -1
- package/dist/cjs/components/layout/components/theme-config/color-scheme-switcher.cjs +1 -1
- package/dist/cjs/components/layout/components/theme-config/color-scheme.cjs +1 -1
- package/dist/cjs/components/layout/components/theme-config/config-item.cjs +1 -1
- package/dist/cjs/components/layout/components/theme-config/index.cjs +1 -1
- package/dist/cjs/components/layout/components/theme-config/menu-layout-card.cjs +1 -1
- package/dist/cjs/components/layout/components/theme-config/menu-layout.cjs +1 -1
- package/dist/cjs/components/layout/components/theme-config/operations.cjs +1 -1
- package/dist/cjs/components/layout/components/theme-config/theme-color-picker.cjs +1 -1
- package/dist/cjs/components/layout/components/theme-config/theme-colors.cjs +1 -1
- package/dist/cjs/components/layout/hooks/index.cjs +1 -1
- package/dist/cjs/components/layout/hooks/use-color-scheme-updater.cjs +1 -1
- package/dist/cjs/components/layout/hooks/use-menu-navigate.cjs +1 -1
- package/dist/cjs/components/layout/hooks/use-mixed-menu.cjs +1 -0
- package/dist/cjs/components/layout/hooks/use-tab-navigate.cjs +1 -1
- package/dist/cjs/components/layout/index.cjs +1 -1
- package/dist/cjs/components/layout/store.cjs +1 -1
- package/dist/cjs/components/layout/styles.cjs +1 -1
- package/dist/cjs/components/login/icon-login.cjs +1 -1
- package/dist/cjs/components/login/index.cjs +1 -1
- package/dist/cjs/components/login/styles.cjs +1 -1
- package/dist/cjs/components/n-progress/components/bar.cjs +1 -1
- package/dist/cjs/components/n-progress/components/container.cjs +1 -1
- package/dist/cjs/components/n-progress/components/index.cjs +1 -1
- package/dist/cjs/components/n-progress/event.cjs +1 -1
- package/dist/cjs/components/n-progress/index.cjs +1 -1
- package/dist/cjs/components/not-found/index.cjs +1 -1
- package/dist/cjs/components/not-found/not-found-icon.cjs +1 -1
- package/dist/cjs/components/router-provider/context.cjs +1 -1
- package/dist/cjs/components/router-provider/index.cjs +1 -1
- package/dist/cjs/components/theme-config-provider/global-style.cjs +1 -1
- package/dist/cjs/components/theme-config-provider/index.cjs +1 -1
- package/dist/cjs/components/theme-config-provider/use-color-mode-effect.cjs +1 -1
- package/dist/cjs/components/theme-config-provider/use-theme-config.cjs +1 -1
- package/dist/cjs/constants/index.cjs +1 -1
- package/dist/cjs/helpers/api.cjs +1 -1
- package/dist/cjs/helpers/app-version.cjs +1 -1
- package/dist/cjs/helpers/app.cjs +1 -1
- package/dist/cjs/helpers/auth.cjs +1 -1
- package/dist/cjs/helpers/event.cjs +1 -1
- package/dist/cjs/helpers/index.cjs +1 -1
- package/dist/cjs/helpers/query.cjs +1 -1
- package/dist/cjs/helpers/router.cjs +1 -1
- package/dist/cjs/hooks/index.cjs +1 -1
- package/dist/cjs/hooks/use-route-full-path.cjs +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/routes/access-denied.cjs +1 -1
- package/dist/cjs/routes/index.cjs +1 -1
- package/dist/cjs/routes/layout.cjs +1 -1
- package/dist/cjs/routes/login.cjs +1 -1
- package/dist/cjs/routes/root.cjs +1 -1
- package/dist/cjs/stores/app.cjs +1 -1
- package/dist/cjs/stores/index.cjs +1 -1
- package/dist/cjs/stores/tab.cjs +1 -1
- package/dist/cjs/stores/theme.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 +29 -29
- package/dist/es/components/base-layout/styles.js +15 -8
- package/dist/es/components/base-layout/use-base-layout.js +2 -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/contour-pattern.js +111 -0
- package/dist/es/components/layout/components/footer.js +1 -1
- package/dist/es/components/layout/components/header/app-switcher.js +116 -0
- package/dist/es/components/layout/components/header/boy-icon.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/header-pattern.js +64 -0
- package/dist/es/components/layout/components/header/index.js +118 -53
- 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/mixed-menu.js +16 -0
- 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 +2 -2
- package/dist/es/components/layout/components/index.js +1 -1
- package/dist/es/components/layout/components/logo.js +37 -15
- package/dist/es/components/layout/components/menu.js +40 -32
- package/dist/es/components/layout/components/search/index.js +15 -13
- 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 +3 -3
- 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 +3 -3
- package/dist/es/components/layout/components/search/letter-s-icon.js +1 -1
- package/dist/es/components/layout/components/search/search-result-item.js +4 -4
- package/dist/es/components/layout/components/search/search-result.js +2 -2
- package/dist/es/components/layout/components/sidebar.js +44 -28
- package/dist/es/components/layout/components/tabs/context-menu.js +1 -1
- package/dist/es/components/layout/components/tabs/index.js +5 -5
- 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 +19 -16
- package/dist/es/components/layout/components/tabs/tab-list.js +2 -2
- package/dist/es/components/layout/components/tabs/tabs-container.js +2 -2
- package/dist/es/components/layout/components/theme-config/color-scheme-switcher.js +2 -2
- package/dist/es/components/layout/components/theme-config/color-scheme.js +2 -2
- package/dist/es/components/layout/components/theme-config/config-item.js +2 -2
- package/dist/es/components/layout/components/theme-config/index.js +5 -5
- package/dist/es/components/layout/components/theme-config/menu-layout-card.js +28 -10
- package/dist/es/components/layout/components/theme-config/menu-layout.js +85 -28
- 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 +2 -2
- package/dist/es/components/layout/hooks/index.js +2 -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-mixed-menu.js +42 -0
- package/dist/es/components/layout/hooks/use-tab-navigate.js +1 -1
- package/dist/es/components/layout/index.js +58 -41
- package/dist/es/components/layout/store.js +1 -1
- package/dist/es/components/layout/styles.js +33 -5
- package/dist/es/components/login/icon-login.js +1 -1
- package/dist/es/components/login/index.js +6 -6
- package/dist/es/components/login/styles.js +18 -18
- package/dist/es/components/login/welcome-messages.js +1 -1
- package/dist/es/components/n-progress/components/bar.js +3 -3
- 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 +6 -6
- 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 +3 -3
- 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 +3 -1
- package/dist/types/{components → src/components}/base-layout/props.d.ts +6 -0
- package/dist/types/{components → src/components}/base-layout/styles.d.ts +1 -0
- package/dist/types/{components → src/components}/index.d.ts +1 -1
- package/dist/types/src/components/layout/components/contour-pattern.d.ts +5 -0
- package/dist/types/src/components/layout/components/header/app-switcher.d.ts +10 -0
- package/dist/types/src/components/layout/components/header/header-pattern.d.ts +1 -0
- package/dist/types/src/components/layout/components/header/index.d.ts +10 -0
- package/dist/types/src/components/layout/components/header/mixed-menu.d.ts +5 -0
- package/dist/types/{components → src/components}/layout/components/logo.d.ts +5 -1
- package/dist/types/src/components/layout/components/menu.d.ts +19 -0
- package/dist/types/{components → src/components}/layout/components/search/keyboard.d.ts +1 -1
- package/dist/types/src/components/layout/components/sidebar.d.ts +21 -0
- package/dist/types/{components → src/components}/layout/components/theme-config/menu-layout-card.d.ts +2 -2
- package/dist/types/{components → src/components}/layout/hooks/index.d.ts +1 -0
- package/dist/types/src/components/layout/hooks/use-mixed-menu.d.ts +31 -0
- package/dist/types/src/components/layout/index.d.ts +3 -0
- package/dist/types/src/components/layout/props.d.ts +79 -0
- package/dist/types/{components → src/components}/layout/styles.d.ts +1 -0
- package/dist/types/{index.d.ts → src/index.d.ts} +3 -3
- package/dist/types/{routes → src/routes}/index.d.ts +1 -1
- package/dist/types/src/routes/layout.d.ts +25 -0
- package/dist/types/{stores → src/stores}/app.d.ts +4 -3
- package/dist/types/src/stores/index.d.ts +3 -0
- package/dist/types/{stores → src/stores}/theme.d.ts +15 -1
- package/dist/types/{types → src/types}/common.d.ts +8 -2
- package/package.json +10 -10
- package/dist/cjs/_internal/_rolldown/runtime.cjs +0 -1
- package/dist/cjs/components/layout/components/header/breadcrumb-navigation.cjs +0 -1
- package/dist/cjs/components/layout/components/honeycomb-pattern.cjs +0 -1
- package/dist/es/components/layout/components/header/breadcrumb-navigation.js +0 -66
- package/dist/es/components/layout/components/honeycomb-pattern.js +0 -58
- package/dist/types/components/layout/components/header/breadcrumb-navigation.d.ts +0 -2
- package/dist/types/components/layout/components/header/index.d.ts +0 -5
- package/dist/types/components/layout/components/honeycomb-pattern.d.ts +0 -1
- package/dist/types/components/layout/components/menu.d.ts +0 -7
- package/dist/types/components/layout/components/sidebar.d.ts +0 -6
- package/dist/types/components/layout/index.d.ts +0 -3
- package/dist/types/components/layout/props.d.ts +0 -34
- package/dist/types/routes/layout.d.ts +0 -22
- package/dist/types/stores/index.d.ts +0 -3
- /package/dist/types/{components → src/components}/access-denied/access-denied-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/access-denied/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/app/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/app/props.d.ts +0 -0
- /package/dist/types/{components → src/components}/base-layout/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/base-layout/use-base-layout.d.ts +0 -0
- /package/dist/types/{components → src/components}/error/error-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/error/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/error/props.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/footer.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/boy-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/color-scheme.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/fullscreen.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/girl-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/menu-burger.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/menu-fold-left-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/menu-unfold-left-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/search.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/theme-config.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/header/user-avatar.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/keyboard-arrow-down-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/keyboard-arrow-up-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/keyboard-control-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/keyboard-esc-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/keyboard-help.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/keyboard-return-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/keyboard-shift-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/letter-s-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/search-result-item.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/search/search-result.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/tabs/context-menu.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/tabs/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/tabs/main-content-maximum.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/tabs/reload.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/tabs/tab-item.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/tabs/tab-list.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/tabs/tabs-container.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/theme-config/color-scheme-switcher.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/theme-config/color-scheme.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/theme-config/config-item.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/theme-config/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/theme-config/menu-layout.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/theme-config/operations.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/theme-config/theme-color-picker.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/components/theme-config/theme-colors.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/hooks/use-color-scheme-updater.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/hooks/use-menu-navigate.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/hooks/use-tab-navigate.d.ts +0 -0
- /package/dist/types/{components → src/components}/layout/store.d.ts +0 -0
- /package/dist/types/{components → src/components}/login/icon-login.d.ts +0 -0
- /package/dist/types/{components → src/components}/login/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/login/payload.d.ts +0 -0
- /package/dist/types/{components → src/components}/login/props.d.ts +0 -0
- /package/dist/types/{components → src/components}/login/styles.d.ts +0 -0
- /package/dist/types/{components → src/components}/login/welcome-messages.d.ts +0 -0
- /package/dist/types/{components → src/components}/n-progress/components/bar.d.ts +0 -0
- /package/dist/types/{components → src/components}/n-progress/components/container.d.ts +0 -0
- /package/dist/types/{components → src/components}/n-progress/components/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/n-progress/event.d.ts +0 -0
- /package/dist/types/{components → src/components}/n-progress/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/not-found/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/not-found/not-found-icon.d.ts +0 -0
- /package/dist/types/{components → src/components}/router-provider/context.d.ts +0 -0
- /package/dist/types/{components → src/components}/router-provider/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/router-provider/props.d.ts +0 -0
- /package/dist/types/{components → src/components}/theme-config-provider/global-style.d.ts +0 -0
- /package/dist/types/{components → src/components}/theme-config-provider/index.d.ts +0 -0
- /package/dist/types/{components → src/components}/theme-config-provider/use-color-mode-effect.d.ts +0 -0
- /package/dist/types/{components → src/components}/theme-config-provider/use-theme-config.d.ts +0 -0
- /package/dist/types/{constants → src/constants}/event.d.ts +0 -0
- /package/dist/types/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/types/{constants → src/constants}/router.d.ts +0 -0
- /package/dist/types/{constants → src/constants}/storage.d.ts +0 -0
- /package/dist/types/{helpers → src/helpers}/api.d.ts +0 -0
- /package/dist/types/{helpers → src/helpers}/app-version.d.ts +0 -0
- /package/dist/types/{helpers → src/helpers}/app.d.ts +0 -0
- /package/dist/types/{helpers → src/helpers}/auth.d.ts +0 -0
- /package/dist/types/{helpers → src/helpers}/event.d.ts +0 -0
- /package/dist/types/{helpers → src/helpers}/index.d.ts +0 -0
- /package/dist/types/{helpers → src/helpers}/query.d.ts +0 -0
- /package/dist/types/{helpers → src/helpers}/router.d.ts +0 -0
- /package/dist/types/{hooks → src/hooks}/index.d.ts +0 -0
- /package/dist/types/{hooks → src/hooks}/use-route-full-path.d.ts +0 -0
- /package/dist/types/{models → src/models}/index.d.ts +0 -0
- /package/dist/types/{routes → src/routes}/access-denied.d.ts +0 -0
- /package/dist/types/{routes → src/routes}/login.d.ts +0 -0
- /package/dist/types/{routes → src/routes}/root.d.ts +0 -0
- /package/dist/types/{stores → src/stores}/tab.d.ts +0 -0
- /package/dist/types/{types → src/types}/api.d.ts +0 -0
- /package/dist/types/{types → src/types}/index.d.ts +0 -0
- /package/dist/types/{types → src/types}/router.d.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @vef-framework-react/starter v2.
|
|
1
|
+
/*! @vef-framework-react/starter v2.4.0 made by Venus | 2026-06-15T15:10:34.000Z */
|
|
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.4.0 made by Venus | 2026-06-15T15:10:34.000Z */
|
|
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.4.0 made by Venus | 2026-06-15T15:10:34.000Z */
|
|
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.4.0 made by Venus | 2026-06-15T15:10:34.000Z */
|
|
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.4.0 made by Venus | 2026-06-15T15:10:34.000Z */
|
|
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.4.0 made by Venus | 2026-06-15T15:10:34.000Z */
|
|
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.4.0 made by Venus | 2026-06-15T15:10:34.000Z */
|
|
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.4.0 made by Venus | 2026-06-15T15:10:34.000Z */
|
|
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.4.0 made by Venus | 2026-06-15T15:10:34.000Z */
|
|
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
|
|
@@ -15,6 +15,8 @@ var n = {
|
|
|
15
15
|
isColorBlindMode: !1,
|
|
16
16
|
isMenuAccordionMode: !0,
|
|
17
17
|
menuLayout: "vertical",
|
|
18
|
+
isTabsVisible: !0,
|
|
19
|
+
isDarkSidebar: !0,
|
|
18
20
|
isSidebarCollapsed: !1,
|
|
19
21
|
isMainContentMaximum: !1
|
|
20
22
|
}, r = e(() => ({
|
|
@@ -63,6 +63,12 @@ export interface BaseLayoutProps extends PropsWithChildren {
|
|
|
63
63
|
* The class of the sidebar.
|
|
64
64
|
*/
|
|
65
65
|
sidebarClassName?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Whether the sidebar sits below the header (mixed layout) instead of
|
|
68
|
+
* spanning the full height. When enabled, the header stays full-width and the
|
|
69
|
+
* sidebar starts at the header's bottom edge.
|
|
70
|
+
*/
|
|
71
|
+
isSidebarBelowHeader?: boolean;
|
|
66
72
|
/**
|
|
67
73
|
* The main content maximum state.
|
|
68
74
|
*/
|
|
@@ -3,6 +3,7 @@ export declare const layout: SerializedStyles;
|
|
|
3
3
|
export declare const header: SerializedStyles;
|
|
4
4
|
export declare const tabs: SerializedStyles;
|
|
5
5
|
export declare const sidebar: SerializedStyles;
|
|
6
|
+
export declare const sidebarBelowHeader: SerializedStyles;
|
|
6
7
|
export declare const sidebarGap: SerializedStyles;
|
|
7
8
|
export declare const main: SerializedStyles;
|
|
8
9
|
export declare const footer: SerializedStyles;
|
|
@@ -2,7 +2,7 @@ export { AccessDenied } from './access-denied';
|
|
|
2
2
|
export { App, type AppProps } from './app';
|
|
3
3
|
export { BaseLayout, type BaseLayoutProps } from './base-layout';
|
|
4
4
|
export { Error } from './error';
|
|
5
|
-
export { Layout, type LayoutProps } from './layout';
|
|
5
|
+
export { Layout, type AppItem, type LayoutProps, type UserMenuItem } from './layout';
|
|
6
6
|
export { Login, type LoginChallenge, type LoginChallengeRenderer, type LoginChallengeRendererProps, type LoginChallengeRenderers, type LoginParams, type LoginProps, type LoginResult, type PasswordLoginParams, type ResolveChallengeParams } from './login';
|
|
7
7
|
export { NProgress, nProgressEventEmitter } from './n-progress';
|
|
8
8
|
export { NotFound } from './not-found';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Awaitable } from '@vef-framework-react/shared';
|
|
2
|
+
import { AppItem } from '../../props';
|
|
3
|
+
interface AppSwitcherProps {
|
|
4
|
+
apps: AppItem[];
|
|
5
|
+
currentAppId?: string;
|
|
6
|
+
onAppChange?: (appId: string) => Awaitable<void>;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function AppSwitcher({ apps, currentAppId, onAppChange, className }: AppSwitcherProps): React.JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function HeaderPattern(): React.JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LayoutProps } from '../../props';
|
|
2
|
+
interface HeaderProps extends Pick<LayoutProps, "title" | "logo" | "headerActions" | "userMenuItems" | "onUserMenuClick" | "onLogout" | "apps" | "currentAppId" | "onAppChange"> {
|
|
3
|
+
/**
|
|
4
|
+
* Whether to show the sidebar collapse toggle. True when a collapsible sidebar exists
|
|
5
|
+
* (vertical always; mixed only when the active section has a submenu).
|
|
6
|
+
*/
|
|
7
|
+
showMenuBurger: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function Header({ title, logo, headerActions, userMenuItems, onUserMenuClick, onLogout, apps, currentAppId, onAppChange, showMenuBurger }: HeaderProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -3,6 +3,10 @@ import { Except } from '@vef-framework-react/shared';
|
|
|
3
3
|
import { LayoutProps } from '../props';
|
|
4
4
|
interface LogoProps extends Except<LinkComponentProps, "to" | "title">, Pick<LayoutProps, "title" | "logo"> {
|
|
5
5
|
isTitleVisible?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Render the logo in white, for placement on a colored (primary) surface.
|
|
8
|
+
*/
|
|
9
|
+
inverted?: boolean;
|
|
6
10
|
}
|
|
7
|
-
export declare function Logo({ isTitleVisible, title, logo, ...props }: LogoProps): React.JSX.Element;
|
|
11
|
+
export declare function Logo({ isTitleVisible, inverted, title, logo, ...props }: LogoProps): React.JSX.Element;
|
|
8
12
|
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MenuItem, Orientation } from '@vef-framework-react/components';
|
|
2
|
+
interface MenuProps {
|
|
3
|
+
layout: Orientation;
|
|
4
|
+
isSidebarCollapsed?: boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Menu items to render. Defaults to the full tree from the app store.
|
|
7
|
+
*/
|
|
8
|
+
items?: readonly MenuItem[];
|
|
9
|
+
/**
|
|
10
|
+
* Selected keys override. Defaults to the current route's full path.
|
|
11
|
+
*/
|
|
12
|
+
selectedKeys?: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Select handler override. Defaults to navigating to the picked menu.
|
|
15
|
+
*/
|
|
16
|
+
onSelectMenu?: (key: string) => void;
|
|
17
|
+
}
|
|
18
|
+
export declare function Menu({ layout, isSidebarCollapsed, items, selectedKeys, onSelectMenu }: MenuProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { MenuItem } from '@vef-framework-react/components';
|
|
2
|
+
import { LayoutProps } from '../props';
|
|
3
|
+
interface SidebarProps extends Pick<LayoutProps, "logo" | "title"> {
|
|
4
|
+
/**
|
|
5
|
+
* Whether the sidebar renders on the dark brand surface (vertical layout
|
|
6
|
+
* only). Adds the contour artwork at the bottom; the surface itself is
|
|
7
|
+
* styled by the layout's `sidebarDark` class.
|
|
8
|
+
*/
|
|
9
|
+
isDark?: boolean;
|
|
10
|
+
isSidebarCollapsed?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Menu items to render. Defaults to the full tree from the app store.
|
|
13
|
+
*/
|
|
14
|
+
items?: readonly MenuItem[];
|
|
15
|
+
/**
|
|
16
|
+
* Whether to render the logo. Disabled in mixed layout (logo is in the header).
|
|
17
|
+
*/
|
|
18
|
+
showLogo?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function Sidebar({ isDark, isSidebarCollapsed, logo, title, items, showLogo }: SidebarProps): React.JSX.Element;
|
|
21
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Orientation } from '@vef-framework-react/components';
|
|
2
1
|
import { ComponentProps } from 'react';
|
|
2
|
+
import { MenuLayoutMode } from '../../../../stores';
|
|
3
3
|
interface MenuLayoutCardProps extends ComponentProps<"div"> {
|
|
4
|
-
mode:
|
|
4
|
+
mode: MenuLayoutMode;
|
|
5
5
|
}
|
|
6
6
|
export declare function MenuLayoutCard({ mode, ...props }: MenuLayoutCardProps): React.JSX.Element;
|
|
7
7
|
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { MenuItem } from '@vef-framework-react/components';
|
|
2
|
+
export interface UseMixedMenuResult {
|
|
3
|
+
/**
|
|
4
|
+
* First-level menu entries, flattened for the top header.
|
|
5
|
+
*/
|
|
6
|
+
topLevelItems: MenuItem[];
|
|
7
|
+
/**
|
|
8
|
+
* Path of the first-level section the current route belongs to.
|
|
9
|
+
*/
|
|
10
|
+
activeSectionKey?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Children of the active section, rendered in the sidebar.
|
|
13
|
+
*/
|
|
14
|
+
sectionItems?: MenuItem[];
|
|
15
|
+
/**
|
|
16
|
+
* Whether the active section has a sidebar to show.
|
|
17
|
+
*/
|
|
18
|
+
hasSectionMenu: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Navigate into a top-level section's first reachable leaf.
|
|
21
|
+
*/
|
|
22
|
+
selectTopSection: (key: string) => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Derive the data the mixed menu layout needs from the current route: the
|
|
26
|
+
* flattened first-level items for the header, the active first-level section,
|
|
27
|
+
* and that section's children for the sidebar.
|
|
28
|
+
*
|
|
29
|
+
* @returns The derived mixed-menu data
|
|
30
|
+
*/
|
|
31
|
+
export declare function useMixedMenu(): UseMixedMenuResult;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { LayoutProps } from './props';
|
|
2
|
+
export declare function Layout({ title, logo, headerActions, userMenuItems, onUserMenuClick, onLogout, apps, currentAppId, onAppChange, children }: LayoutProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
3
|
+
export { type AppItem, type LayoutProps, type UserMenuItem } from './props';
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { DropdownMenuItem } from '@vef-framework-react/components';
|
|
2
|
+
import { Awaitable, DistributedOmit } from '@vef-framework-react/shared';
|
|
3
|
+
import { PropsWithChildren, ReactNode } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* A {@link DropdownMenuItem} with `onClick` / `onTitleClick` stripped — clicks
|
|
6
|
+
* on user menu items are always routed through `LayoutProps.onUserMenuClick`
|
|
7
|
+
* by item key, so per-item handlers would be silently ignored.
|
|
8
|
+
*/
|
|
9
|
+
export type UserMenuItem = DistributedOmit<DropdownMenuItem, "onClick" | "onTitleClick">;
|
|
10
|
+
/**
|
|
11
|
+
* A selectable sub-application shown in the Layout's app switcher. Shaped as a
|
|
12
|
+
* plain record so it can be hydrated straight from an API response (no JSX).
|
|
13
|
+
*/
|
|
14
|
+
export interface AppItem {
|
|
15
|
+
/**
|
|
16
|
+
* Stable identifier, handed back to {@link LayoutProps.onAppChange}.
|
|
17
|
+
*/
|
|
18
|
+
id: string;
|
|
19
|
+
/**
|
|
20
|
+
* Display name.
|
|
21
|
+
*/
|
|
22
|
+
name: string;
|
|
23
|
+
/**
|
|
24
|
+
* Optional one-line description (e.g. shown as a tooltip).
|
|
25
|
+
*/
|
|
26
|
+
description?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Optional icon name, resolved through `DynamicIcon` (a kebab-case lucide
|
|
29
|
+
* name such as `"layout-dashboard"`). A string, not a node, so it survives a
|
|
30
|
+
* JSON round-trip from the backend.
|
|
31
|
+
*/
|
|
32
|
+
icon?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The props for the Layout component.
|
|
36
|
+
*/
|
|
37
|
+
export interface LayoutProps extends PropsWithChildren {
|
|
38
|
+
/**
|
|
39
|
+
* The title of the layout.
|
|
40
|
+
*/
|
|
41
|
+
title?: ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* The logo of the layout.
|
|
44
|
+
*/
|
|
45
|
+
logo?: ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* The actions of the header.
|
|
48
|
+
*/
|
|
49
|
+
headerActions?: ReactNode;
|
|
50
|
+
/**
|
|
51
|
+
* Extra items appended to the user dropdown menu. They render before the
|
|
52
|
+
* built-in items (e.g. logout), with an automatic divider in between.
|
|
53
|
+
*/
|
|
54
|
+
userMenuItems?: UserMenuItem[];
|
|
55
|
+
/**
|
|
56
|
+
* Handles clicks on user menu items. The built-in `logout` key is owned by
|
|
57
|
+
* the framework and never forwarded; all other keys are delivered here.
|
|
58
|
+
*/
|
|
59
|
+
onUserMenuClick?: (key: string) => void;
|
|
60
|
+
/**
|
|
61
|
+
* The logout api function.
|
|
62
|
+
*/
|
|
63
|
+
onLogout?: () => Awaitable<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Sub-applications the user can switch between. When non-empty, an app
|
|
66
|
+
* switcher appears next to the logo. Each system supplies its own apps —
|
|
67
|
+
* the framework only renders the control and reports the selection.
|
|
68
|
+
*/
|
|
69
|
+
apps?: AppItem[];
|
|
70
|
+
/**
|
|
71
|
+
* The id of the currently active app, highlighted in the switcher.
|
|
72
|
+
*/
|
|
73
|
+
currentAppId?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Called when the user picks a different app. The project performs the
|
|
76
|
+
* actual switch (e.g. persist the choice, then reload or re-route the shell).
|
|
77
|
+
*/
|
|
78
|
+
onAppChange?: (appId: string) => Awaitable<void>;
|
|
79
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { type LoginChallenge, type LoginChallengeRenderer, type LoginChallengeRendererProps, type LoginChallengeRenderers, type LoginParams, type LoginProps, type LoginResult, type PasswordLoginParams, type ResolveChallengeParams } from './components';
|
|
1
|
+
export { type AppItem, type LoginChallenge, type LoginChallengeRenderer, type LoginChallengeRendererProps, type LoginChallengeRenderers, type LoginParams, type LoginProps, type LoginResult, type PasswordLoginParams, type ResolveChallengeParams, type UserMenuItem } 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';
|
|
5
|
-
export { useAppStore, useTabStore, useThemeStore, type AppState, type ColorScheme, type Tab, type TabState, type ThemeColors, type ThemeState } from './stores';
|
|
4
|
+
export { createAccessDeniedRouteOptions, createLayoutRouteOptions, createLoginRouteOptions, createRootRouteOptions, type LayoutBeforeLoadArgs, type LayoutLoaderArgs } from './routes';
|
|
5
|
+
export { useAppStore, useTabStore, useThemeStore, type AppState, type ColorScheme, type MenuLayoutMode, 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';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { RouteLoaderFn, RouteOptions } from '@tanstack/react-router';
|
|
2
|
+
import { AnyObject, Awaitable, EmptyObject, Except } from '@vef-framework-react/shared';
|
|
3
|
+
import { LayoutProps, Error, NotFound } from '../components';
|
|
4
|
+
import { UserInfo } from '../types';
|
|
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"> {
|
|
11
|
+
fetchUserInfo: () => Awaitable<UserInfo>;
|
|
12
|
+
beforeLoad?: (args: LayoutBeforeLoadArgs) => Awaitable<TBeforeLoadContext | void>;
|
|
13
|
+
loader?: (args: LayoutLoaderArgs<TBeforeLoadContext>) => Awaitable<TLoaderData>;
|
|
14
|
+
}
|
|
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;
|
|
24
|
+
};
|
|
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>;
|
|
@@ -2,6 +2,14 @@ import { Orientation, SemanticColor } from '@vef-framework-react/components';
|
|
|
2
2
|
import { UseBoundStoreWithPersist } from '@vef-framework-react/core';
|
|
3
3
|
export type ColorScheme = "system" | "light" | "dark";
|
|
4
4
|
export type ThemeColors = Record<SemanticColor, string>;
|
|
5
|
+
/**
|
|
6
|
+
* The menu layout mode.
|
|
7
|
+
*
|
|
8
|
+
* - `vertical`: menu lives in the left sidebar.
|
|
9
|
+
* - `horizontal`: menu lives in the top header.
|
|
10
|
+
* - `mixed`: first-level menu in the top header, its children in the left sidebar.
|
|
11
|
+
*/
|
|
12
|
+
export type MenuLayoutMode = Orientation | "mixed";
|
|
5
13
|
export interface ThemeState {
|
|
6
14
|
isThemeConfigVisible: boolean;
|
|
7
15
|
colorScheme: ColorScheme;
|
|
@@ -9,7 +17,13 @@ export interface ThemeState {
|
|
|
9
17
|
isGrayscaleMode: boolean;
|
|
10
18
|
isColorBlindMode: boolean;
|
|
11
19
|
isMenuAccordionMode: boolean;
|
|
12
|
-
menuLayout:
|
|
20
|
+
menuLayout: MenuLayoutMode;
|
|
21
|
+
isTabsVisible: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Render the sidebar as a dark brand surface. Only takes effect in the
|
|
24
|
+
* `vertical` menu layout; other layouts keep the light sidebar.
|
|
25
|
+
*/
|
|
26
|
+
isDarkSidebar: boolean;
|
|
13
27
|
isSidebarCollapsed: boolean;
|
|
14
28
|
isMainContentMaximum: boolean;
|
|
15
29
|
}
|
|
@@ -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.4.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Starter for VEF framework",
|
|
7
7
|
"author": {
|
|
@@ -54,20 +54,20 @@
|
|
|
54
54
|
"react-dom": ">=19"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@ant-design/icons": "^6.2.
|
|
57
|
+
"@ant-design/icons": "^6.2.5",
|
|
58
58
|
"@emotion/react": "^11.14.0",
|
|
59
59
|
"@tanem/react-nprogress": "^6.0.3",
|
|
60
60
|
"compare-versions": "^6.1.1",
|
|
61
|
-
"lucide-react": "^1.
|
|
61
|
+
"lucide-react": "^1.17.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@tanstack/react-router": "^1.170.
|
|
65
|
-
"react": "^19.2.
|
|
66
|
-
"react-dom": "^19.2.
|
|
67
|
-
"@vef-framework-react/
|
|
68
|
-
"@vef-framework-react/
|
|
69
|
-
"@vef-framework-react/shared": "2.
|
|
70
|
-
"@vef-framework-react/
|
|
64
|
+
"@tanstack/react-router": "^1.170.15",
|
|
65
|
+
"react": "^19.2.7",
|
|
66
|
+
"react-dom": "^19.2.7",
|
|
67
|
+
"@vef-framework-react/core": "2.4.0",
|
|
68
|
+
"@vef-framework-react/hooks": "2.4.0",
|
|
69
|
+
"@vef-framework-react/shared": "2.4.0",
|
|
70
|
+
"@vef-framework-react/components": "2.4.0"
|
|
71
71
|
},
|
|
72
72
|
"scripts": {
|
|
73
73
|
"clean": "rimraf dist",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));exports.__toESM=s;
|