feat: Add Zustand for state management and enhance modal handling

- Integrated Zustand for improved state management across components.
- Updated modal components to handle visibility based on active tabs, ensuring better user experience.
- Refactored various components to utilize the new tab store for managing active tab states.
- Enhanced number formatting utility to streamline number and currency display across the application.

Made-with: Cursor
This commit is contained in:
2026-02-27 14:25:53 +09:00
parent 7acdd852a5
commit d04dc4c050
25 changed files with 1437 additions and 135 deletions

View File

@@ -3,6 +3,8 @@
* 다양한 집계 연산을 수행합니다.
*/
import { getFormatRules } from "@/lib/formatting";
import { AggregationType, PivotFieldFormat } from "../types";
// ==================== 집계 함수 ====================
@@ -102,16 +104,18 @@ export function formatNumber(
let formatted: string;
const locale = getFormatRules().number.locale;
switch (type) {
case "currency":
formatted = value.toLocaleString("ko-KR", {
formatted = value.toLocaleString(locale, {
minimumFractionDigits: precision,
maximumFractionDigits: precision,
});
break;
case "percent":
formatted = (value * 100).toLocaleString("ko-KR", {
formatted = (value * 100).toLocaleString(locale, {
minimumFractionDigits: precision,
maximumFractionDigits: precision,
});
@@ -120,7 +124,7 @@ export function formatNumber(
case "number":
default:
if (thousandSeparator) {
formatted = value.toLocaleString("ko-KR", {
formatted = value.toLocaleString(locale, {
minimumFractionDigits: precision,
maximumFractionDigits: precision,
});
@@ -138,7 +142,7 @@ export function formatNumber(
*/
export function formatDate(
value: Date | string | null | undefined,
format: string = "YYYY-MM-DD"
format: string = getFormatRules().date.display
): string {
if (!value) return "-";

View File

@@ -48,7 +48,7 @@ function getFieldValue(
const weekNum = getWeekNumber(date);
return `${date.getFullYear()}-W${String(weekNum).padStart(2, "0")}`;
case "day":
return formatDate(date, "YYYY-MM-DD");
return formatDate(date);
default:
return String(rawValue);
}