diff --git a/src/app/(main)/project/workspace/[id]/page.tsx b/src/app/(main)/project/workspace/[id]/page.tsx index 5643d5b..73b229d 100644 --- a/src/app/(main)/project/workspace/[id]/page.tsx +++ b/src/app/(main)/project/workspace/[id]/page.tsx @@ -301,15 +301,24 @@ export default function ProjectPage() { }; if (tasksLoading) { - return ( -
-

불러오는 중...

-
+ return ( +
+
+ {[1, 2, 3].map((i) => ( +
+
+ {[1, 2, 3].map((j) => ( +
+ ))} +
+ ))} +
+
); } return ( -
+
{/* 메인 콘텐츠 */} diff --git a/src/app/globals.css b/src/app/globals.css index 0bbabcb..24cfacc 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -143,48 +143,43 @@ } .dark { - --background: #0D2530; - --foreground: #E8F5F7; - --card: #1A4A5A; - --card-foreground: #E8F5F7; - --popover: #1A4A5A; - --popover-foreground: #E8F5F7; - --primary: #E8F5F7; - --primary-foreground: #0D2530; - --secondary: #9DD8E3; - --secondary-foreground: #0D2530; - --muted: #2A6070; - --muted-foreground: #9DD8E3; - --accent: #6DD5E8; - --accent-foreground: #0D2530; - --destructive: #EF9A9A; - --destructive-foreground: #0D2530; - --border: #2A6070; - --input: #1A4A5A; - --ring: #6DD5E8; - --chart-1: #3a6fd8; + --background: #0F1117; + --foreground: #C8D4DC; + --card: #161B27; + --card-foreground: #C8D4DC; + --popover: #1E2333; + --popover-foreground: #C8D4DC; + --primary: #C8D4DC; + --primary-foreground: #0F1117; + --secondary: #6BBAC8; + --secondary-foreground: #0F1117; + --muted: #1E2535; + --muted-foreground: #7A8FA0; + --accent: #4FACBA; + --accent-foreground: #C8D4DC; + --destructive: #F87171; + --destructive-foreground: #0F1117; + --border: #252D40; + --input: #1E2535; + --ring: #4FACBA; --chart-1: oklch(0.488 0.243 264.376); - --chart-2: #4db89a; --chart-2: oklch(0.696 0.17 162.48); - --chart-3: #c8a030; --chart-3: oklch(0.769 0.188 70.08); - --chart-4: #9b4fd8; --chart-4: oklch(0.627 0.265 303.9); - --chart-5: #d84a3a; --chart-5: oklch(0.645 0.246 16.439); - --sidebar: #0D2530; - --sidebar-foreground: #E8F5F7; - --sidebar-primary: #6DD5E8; - --sidebar-primary-foreground: #0D2530; - --sidebar-accent: #2A6070; - --sidebar-accent-foreground: #E8F5F7; - --sidebar-border: #2A6070; - --sidebar-ring: #6DD5E8; - - --dark-title: #E8F5F7; - --dark-body: #E8F5F7; - --dark-description: #9DD8E3; - --dark-border: #2A6070; + --sidebar: #0B0F1A; + --sidebar-foreground: #C8D4DC; + --sidebar-primary: #4FACBA; + --sidebar-primary-foreground: #0F1117; + --sidebar-accent: #1E2535; + --sidebar-accent-foreground: #C8D4DC; + --sidebar-border: #252D40; + --sidebar-ring: #4FACBA; + + --dark-title: #C8D4DC; + --dark-body: #A8B8C2; + --dark-description: #7A8FA0; + --dark-border: #252D40; } @layer base { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index e8627fe..25c8711 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,5 +1,5 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono, Inter } from "next/font/google"; +import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; import { Header } from "@/components/layout/Header"; import Provider from "@/providers/providers"; @@ -16,11 +16,9 @@ const geistMono = Geist_Mono({ subsets: ["latin"], }); -const inter = Inter({ subsets: ["latin"] }); - export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: "Taskry", + description: "팀 프로젝트 관리 플랫폼", }; export default function RootLayout({ @@ -29,9 +27,9 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - + diff --git a/src/components/features/kanban/KanbanColumn.tsx b/src/components/features/kanban/KanbanColumn.tsx index 6e0135c..006bad0 100644 --- a/src/components/features/kanban/KanbanColumn.tsx +++ b/src/components/features/kanban/KanbanColumn.tsx @@ -105,7 +105,7 @@ const KanbanColumn = ({ `} > {/* 컬럼 헤더 */} -
+
{collapsible && ( ); diff --git a/src/components/layout/Navigation.tsx b/src/components/layout/Navigation.tsx deleted file mode 100644 index 8a0f691..0000000 --- a/src/components/layout/Navigation.tsx +++ /dev/null @@ -1,27 +0,0 @@ -"use client"; // TODO use client 추가 - -import Link from "next/link"; - -export function Navigation() { - return ( - - ); -} diff --git a/src/components/ui/Modal.tsx b/src/components/ui/Modal.tsx index 0e7d2f0..62c64eb 100644 --- a/src/components/ui/Modal.tsx +++ b/src/components/ui/Modal.tsx @@ -12,12 +12,12 @@ const modalInnerClasses = clsx( "relative w-[calc(100%-2rem)] max-w-xl min-h-(--fluid-modal-min-h)", "py-(--fluid-modal-py) px-(--fluid-modal-px)", "flex flex-col items-center justify-center", - "border border-gray-100 dark:border-gray-700 rounded-2xl shadow-sm bg-white dark:bg-gray-800" + "border border-border rounded-2xl shadow-sm bg-card" ); const modalIconClasses = clsx( "size-15 flex items-center justify-center", "absolute -top-8 left-1/2 transform -translate-x-1/2", - "shadow-lg rounded-full bg-white dark:bg-gray-800" + "shadow-lg rounded-full bg-card" ); export default function Modal({ @@ -93,7 +93,7 @@ export default function Modal({ )} @@ -103,10 +103,10 @@ export default function Modal({ children ) : ( <> -

+

{finalTitle}

-

+

{finalDescription}

diff --git a/src/features/project/ui/ProjectInfoPanel.tsx b/src/features/project/ui/ProjectInfoPanel.tsx index 39807e9..b0b4974 100644 --- a/src/features/project/ui/ProjectInfoPanel.tsx +++ b/src/features/project/ui/ProjectInfoPanel.tsx @@ -201,7 +201,7 @@ export default function ProjectInfoPanel({ {projectName} {projectDescription && ( -

+

{projectDescription}

)} @@ -210,7 +210,7 @@ export default function ProjectInfoPanel({ {/* 프로젝트 기간 & 타임라인 */} {timeline && (
-
+
프로젝트 기간
@@ -218,10 +218,10 @@ export default function ProjectInfoPanel({
{/* 날짜 표시 */}
- + {timeline.startStr} - + {timeline.status === "before" && ( 시작까지 D-{Math.abs(timeline.elapsedDays)} @@ -241,14 +241,14 @@ export default function ProjectInfoPanel({ 종료됨 )} - + {timeline.endStr}
{/* 타임라인 바 */}
-
+
{/* 기간 정보 */} -
+
총 {timeline.totalDays}일 {timeline.progressPercent}% 경과
@@ -284,7 +284,7 @@ export default function ProjectInfoPanel({ {/* 작업 현황 */}
-
+
작업 현황
@@ -293,7 +293,7 @@ export default function ProjectInfoPanel({ {/* 상태별 개수 */}
-
+
할일
@@ -323,11 +323,11 @@ export default function ProjectInfoPanel({ {/* 완료율 바 */}
-
+
완료율 {stats.completionRate}%
-
+
0 || stats.todayDue > 0 || stats.upcoming > 0) && (
-
+
주의 사항
@@ -373,7 +373,7 @@ export default function ProjectInfoPanel({ {/* 팀원 */}
-
+
팀원 @@ -399,14 +399,14 @@ export default function ProjectInfoPanel({ {/* 정보 */}
- + {member.users.user_name} {member.role === "leader" && ( )}
-
+
{member.users.email}