feat: 가계부·게시판 프론트엔드 구현 + Slim Budget 브랜딩/모바일 대응

- 가계부: 대시보드(예산 대비 지출·분류별 파이·기간별 막대·순자산 추이),
  내역(검색·필터·태그), 계좌(은행/카드/대출/투자), 예산, 분류, 정기 거래,
  태그, 투자 포트폴리오(종목·매수/매도·평가손익)
- 게시판: 목록/상세/작성(마크다운)/댓글/태그/열람제한
- 공통: 인증(Bearer 토큰·401 처리), 모바일 반응형(드로어·아이콘 버튼),
  Slim Budget 브랜딩(로고/타이틀/푸터), 홈 대시보드 자리
- 문서: docs/FRONTEND.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ByungCheol
2026-05-31 15:42:52 +09:00
parent 2485ea05bf
commit 13308a82ef
39 changed files with 7385 additions and 111 deletions
+43
View File
@@ -0,0 +1,43 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'
// 전역 UI 상태 (로그인/회원가입 레이어 팝업 등)
export const useUiStore = defineStore('ui', () => {
const loginOpen = ref(false)
const signupOpen = ref(false)
const redirectPath = ref('')
// 모바일 사이드바 드로어
const sidebarOpen = ref(false)
function toggleSidebar() {
sidebarOpen.value = !sidebarOpen.value
}
function closeSidebar() {
sidebarOpen.value = false
}
// 로그인 팝업 (회원가입 팝업은 닫고 전환)
function openLogin(redirect = '') {
redirectPath.value = redirect || ''
signupOpen.value = false
loginOpen.value = true
}
function closeLogin() {
loginOpen.value = false
redirectPath.value = ''
}
// 회원가입 팝업 (로그인 팝업은 닫고 전환)
function openSignup() {
loginOpen.value = false
signupOpen.value = true
}
function closeSignup() {
signupOpen.value = false
}
return {
loginOpen, signupOpen, redirectPath, openLogin, closeLogin, openSignup, closeSignup,
sidebarOpen, toggleSidebar, closeSidebar,
}
})