- 메뉴 활성/비활성, 순서, 라벨, 아이콘을 DB(AUTH_SETTING)에서 관리 - GET/PUT /api/menus 엔드포인트 추가 - Zustand menuStore로 메뉴 설정 전역 상태 관리 - TopBar: DB 메뉴 설정 기반 동적 탭 렌더링 (ALL_TABS 하드코딩 제거) - AdminView MenusPanel: API 연동, 이모지 피커(@emoji-mart) 통합 - SETTING_VAL 컬럼 VARCHAR(500) → TEXT 마이그레이션 - dotenv 추가로 .env 파일 자동 로딩 - wing_auth DB 비밀번호 기본값 수정 (JDBC 호환) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
29 lines
691 B
TypeScript
29 lines
691 B
TypeScript
import { create } from 'zustand'
|
|
import { fetchMenuConfig } from '../services/authApi'
|
|
import type { MenuConfigItem } from '../services/authApi'
|
|
|
|
interface MenuState {
|
|
menuConfig: MenuConfigItem[]
|
|
isLoaded: boolean
|
|
loadMenuConfig: () => Promise<void>
|
|
setMenuConfig: (config: MenuConfigItem[]) => void
|
|
}
|
|
|
|
export const useMenuStore = create<MenuState>((set) => ({
|
|
menuConfig: [],
|
|
isLoaded: false,
|
|
|
|
loadMenuConfig: async () => {
|
|
try {
|
|
const config = await fetchMenuConfig()
|
|
set({ menuConfig: config, isLoaded: true })
|
|
} catch {
|
|
set({ isLoaded: true })
|
|
}
|
|
},
|
|
|
|
setMenuConfig: (config: MenuConfigItem[]) => {
|
|
set({ menuConfig: config })
|
|
},
|
|
}))
|