diff --git a/src/App.tsx b/src/App.tsx index 31d9967..1a6287e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,52 +1,47 @@ - -import React from 'react'; -import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; +import React, { useEffect } from 'react'; +import { Routes, Route } from 'react-router-dom'; +import { BudgetProvider } from './contexts/budget/BudgetContext'; +import { Toaster } from './components/ui/toaster'; import Index from './pages/Index'; -import Settings from './pages/Settings'; import Login from './pages/Login'; import Register from './pages/Register'; -import ForgotPassword from './pages/ForgotPassword'; -import NotFound from './pages/NotFound'; -import SecurityPrivacySettings from './pages/SecurityPrivacySettings'; -import ProfileManagement from './pages/ProfileManagement'; -import PaymentMethods from './pages/PaymentMethods'; -import NotificationSettings from './pages/NotificationSettings'; -import HelpSupport from './pages/HelpSupport'; -import Analytics from './pages/Analytics'; +import Settings from './pages/Settings'; import Transactions from './pages/Transactions'; -import { AuthProvider } from './contexts/auth'; -import { BudgetProvider } from './contexts/BudgetContext'; -import { Toaster } from '@/components/ui/toaster'; -import { Toaster as SonnerToaster} from '@/components/ui/sonner'; -import SafeAreaContainer from './components/SafeAreaContainer'; +import Analytics from './pages/Analytics'; +import ProfileManagement from './pages/ProfileManagement'; +import NotFound from './pages/NotFound'; +import PaymentMethods from './pages/PaymentMethods'; +import HelpSupport from './pages/HelpSupport'; +import SecurityPrivacySettings from './pages/SecurityPrivacySettings'; +import NotificationSettings from './pages/NotificationSettings'; +import ForgotPassword from './pages/ForgotPassword'; function App() { + useEffect(() => { + document.title = "적자 탈출 가계부"; + }, []); + return ( - - - - - - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - - - - - - + +
+ + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + +
+
); } diff --git a/src/contexts/BudgetContext.tsx b/src/contexts/BudgetContext.tsx index 50f3088..04cc1b9 100644 --- a/src/contexts/BudgetContext.tsx +++ b/src/contexts/BudgetContext.tsx @@ -1,6 +1,5 @@ - import React, { createContext, useState, useContext, useEffect } from 'react'; -import { BudgetContextType, BudgetData, BudgetPeriod, Transaction, CategoryBudget } from './budget/types'; +import { BudgetContextType, BudgetData, Transaction, CategoryBudget } from './budget/types'; import { loadTransactionsFromStorage, saveTransactionsToStorage } from '@/hooks/transactions/storageUtils'; import { v4 as uuidv4 } from 'uuid'; @@ -16,7 +15,7 @@ export const BudgetProvider: React.FC<{ children: React.ReactNode }> = ({ childr weekly: { targetAmount: 0, spentAmount: 0, remainingAmount: 0 }, monthly: { targetAmount: 0, spentAmount: 0, remainingAmount: 0 }, }); - const [selectedTab, setSelectedTab] = useState('monthly'); + const [selectedTab, setSelectedTab] = useState<'daily' | 'weekly' | 'monthly'>('monthly'); useEffect(() => { const storedTransactions = loadTransactionsFromStorage(); @@ -51,7 +50,7 @@ export const BudgetProvider: React.FC<{ children: React.ReactNode }> = ({ childr }; // 예산 목표 업데이트 - const handleBudgetGoalUpdate = (type: BudgetPeriod, amount: number, newCategoryBudgets?: Record) => { + const handleBudgetGoalUpdate = (type: 'daily' | 'weekly' | 'monthly', amount: number, newCategoryBudgets?: Record) => { setBudgetData(prev => ({ ...prev, [type]: { @@ -159,7 +158,7 @@ export const useBudget = () => { return context; }; -// types 내보내기 +// 타입 내보내기를 수정 export type { BudgetContextType }; -export { BudgetPeriod } from './budget/types'; export type { Transaction } from './budget/types'; +export { type BudgetPeriod } from './budget/types'; diff --git a/src/contexts/budget/useBudget.ts b/src/contexts/budget/useBudget.ts index 37001c2..6d362a2 100644 --- a/src/contexts/budget/useBudget.ts +++ b/src/contexts/budget/useBudget.ts @@ -1,38 +1,17 @@ -import { useContext, createContext } from 'react'; -import { BudgetData, BudgetPeriod, Transaction } from './types'; +import { createContext, useContext } from 'react'; +import { BudgetContextType } from './types'; -// 컨텍스트 인터페이스 정의 -export interface BudgetContextType { - transactions: Transaction[]; - selectedTab: BudgetPeriod; - setSelectedTab: (tab: BudgetPeriod) => void; - budgetData: BudgetData; - categoryBudgets: Record; - getCategorySpending: () => Array<{ - title: string; - current: number; - total: number; - }>; - addTransaction: (transaction: Transaction) => void; - updateTransaction: (transaction: Transaction) => void; - deleteTransaction: (id: string) => void; - handleBudgetGoalUpdate: (type: BudgetPeriod, amount: number, newCategoryBudgets?: Record) => void; - getPaymentMethodStats: () => Array<{ method: string; amount: number; percentage: number }>; - resetBudgetData?: () => void; // 선택적 필드로 추가 -} - -// 컨텍스트 생성 +// BudgetContext 생성 export const BudgetContext = createContext(undefined); -/** - * 예산 컨텍스트에 접근하기 위한 커스텀 훅 - * BudgetProvider 내부에서만 사용해야 함 - */ -export const useBudget = (): BudgetContextType => { +// useBudget 훅 +export const useBudget = () => { const context = useContext(BudgetContext); if (context === undefined) { - throw new Error('useBudget는 BudgetProvider 내부에서 사용해야 합니다'); + throw new Error("useBudget must be used within a BudgetProvider"); } return context; }; + +export type { BudgetContextType };