- Vite 기본 템플릿 정리 및 index.html 수정 - guideline.html 기반 디자인 토큰 적용 (index.css) - Feature-based 폴더 구조 (8개 feature 모듈) - 18개 placeholder 페이지 + lazy loading 라우터 - 레이아웃 컴포넌트 (AppLayout, AppHeader, AppSidebar, AuthLayout) - Zustand 스토어 (authStore, uiStore) - API 계층 (Axios client, auth.api) - 타입 정의, 유틸리티, 환경변수 설정 - ErrorBoundary, ProtectedRoute, PublicRoute Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
23 lines
741 B
TypeScript
23 lines
741 B
TypeScript
import { format, formatDistanceToNow } from "date-fns";
|
|
import { ko } from "date-fns/locale";
|
|
|
|
/** 날짜 포맷 (YYYY-MM-DD) */
|
|
export function formatDate(date: string | Date): string {
|
|
return format(new Date(date), "yyyy-MM-dd");
|
|
}
|
|
|
|
/** 날짜+시간 포맷 (YYYY-MM-DD HH:mm) */
|
|
export function formatDateTime(date: string | Date): string {
|
|
return format(new Date(date), "yyyy-MM-dd HH:mm");
|
|
}
|
|
|
|
/** 상대 시간 (예: "3분 전") */
|
|
export function formatRelativeTime(date: string | Date): string {
|
|
return formatDistanceToNow(new Date(date), { addSuffix: true, locale: ko });
|
|
}
|
|
|
|
/** 숫자 포맷 (천 단위 콤마) */
|
|
export function formatNumber(value: number): string {
|
|
return new Intl.NumberFormat("ko-KR").format(value);
|
|
}
|