From ac7effc93977eb5d4d706d68219d7763a42891cf Mon Sep 17 00:00:00 2001 From: "jihoon87.lee" Date: Fri, 6 Feb 2026 14:44:14 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=B8=8C=EB=9E=9C=EB=93=9C=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=AC=20=ED=86=A0=ED=81=B0=20=EC=A0=81=EC=9A=A9=20=EB=B0=8F?= =?UTF-8?q?=20=EC=83=89=EC=83=81=20=EA=B7=9C=EC=B9=99=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 6 +++++ app/(home)/page.tsx | 28 +++++++++++------------ app/globals.css | 24 +++++++++++++------ features/home/components/spline-scene.tsx | 2 +- features/layout/components/header.tsx | 2 +- features/layout/components/user-menu.tsx | 2 +- 6 files changed, 40 insertions(+), 24 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index f9208ce..32ebbe0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -27,6 +27,12 @@ pm run start - 함수 및 컴포넌트 JSDoc에 @see 필수 (호출 파일, 함수 또는 이벤트 이름, 목적 포함) - 상태 정의, 이벤트 핸들러, 복잡한 JSX 로직에는 인라인 주석을 충분히 작성 +## 브랜드 색상 규칙 +- 메인 컬러는 헤더 로고/프로필 기준의 보라 계열 `brand` 팔레트를 사용. +- 새 UI 작성 시 `indigo/purple/pink` 하드코딩 대신 `brand-*` 토큰 사용. 예: `bg-brand-500`, `text-brand-600`, `from-brand-500 to-brand-700`. +- 기본 액션 색(버튼/포커스)은 `primary`를 사용하고, `primary`는 `app/globals.css`의 `brand` 팔레트와 같은 톤으로 유지. +- 색상 변경이 필요하면 컴포넌트 개별 수정보다 먼저 `app/globals.css` 토큰을 수정. + ## 설명 방식 - 단계별로 짧게, 예시는 1개만. - 사용자가 요청한 변경과 이유를 함께 설명. diff --git a/app/(home)/page.tsx b/app/(home)/page.tsx index 6601058..8b5ad6b 100644 --- a/app/(home)/page.tsx +++ b/app/(home)/page.tsx @@ -39,14 +39,14 @@ export default async function HomePage() {
{/* Badge */} -
- +
+ The Future of Trading

투자의 미래를
- + 자동화하세요

@@ -63,7 +63,7 @@ export default async function HomePage() { @@ -71,7 +71,7 @@ export default async function HomePage() { @@ -92,7 +92,7 @@ export default async function HomePage() {
{/* Glow Effect */} -
+

강력한 기능,{" "} - 직관적인 경험 + 직관적인 경험

성공적인 투자를 위해 필요한 모든 도구가 준비되어 있습니다. @@ -119,7 +119,7 @@ export default async function HomePage() { {/* Feature 1 */}

-
+
-
+
{/* Feature 2 (Tall) */}
-
+
-
+
{item}
))}
-
+
{/* Feature 3 */}
-
+
-
+
diff --git a/app/globals.css b/app/globals.css index 43d30c9..f3bcce2 100644 --- a/app/globals.css +++ b/app/globals.css @@ -38,6 +38,16 @@ --color-popover: var(--popover); --color-card-foreground: var(--card-foreground); --color-card: var(--card); + --color-brand-50: oklch(0.97 0.02 294); + --color-brand-100: oklch(0.93 0.05 294); + --color-brand-200: oklch(0.87 0.1 294); + --color-brand-300: oklch(0.79 0.15 294); + --color-brand-400: oklch(0.7 0.2 294); + --color-brand-500: oklch(0.62 0.24 294); + --color-brand-600: oklch(0.56 0.26 294); + --color-brand-700: oklch(0.49 0.24 295); + --color-brand-800: oklch(0.4 0.2 296); + --color-brand-900: oklch(0.33 0.14 297); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); @@ -68,7 +78,7 @@ --card-foreground: oklch(0.145 0 0); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); + --primary: oklch(0.56 0.26 294); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.97 0 0); --secondary-foreground: oklch(0.205 0 0); @@ -79,7 +89,7 @@ --destructive: oklch(0.577 0.245 27.325); --border: oklch(0.922 0 0); --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); + --ring: oklch(0.62 0.24 294); --chart-1: oklch(0.646 0.222 41.116); --chart-2: oklch(0.6 0.118 184.704); --chart-3: oklch(0.398 0.07 227.392); @@ -87,7 +97,7 @@ --chart-5: oklch(0.769 0.188 70.08); --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary: oklch(0.56 0.26 294); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.97 0 0); --sidebar-accent-foreground: oklch(0.205 0 0); @@ -102,8 +112,8 @@ --card-foreground: oklch(0.985 0 0); --popover: oklch(0.205 0 0); --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.922 0 0); - --primary-foreground: oklch(0.205 0 0); + --primary: oklch(0.56 0.26 294); + --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.269 0 0); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.269 0 0); @@ -113,7 +123,7 @@ --destructive: oklch(0.704 0.191 22.216); --border: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 15%); - --ring: oklch(0.556 0 0); + --ring: oklch(0.62 0.24 294); --chart-1: oklch(0.488 0.243 264.376); --chart-2: oklch(0.696 0.17 162.48); --chart-3: oklch(0.769 0.188 70.08); @@ -121,7 +131,7 @@ --chart-5: oklch(0.645 0.246 16.439); --sidebar: oklch(0.205 0 0); --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary: oklch(0.56 0.26 294); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.269 0 0); --sidebar-accent-foreground: oklch(0.985 0 0); diff --git a/features/home/components/spline-scene.tsx b/features/home/components/spline-scene.tsx index 53f38ca..2ddefc8 100644 --- a/features/home/components/spline-scene.tsx +++ b/features/home/components/spline-scene.tsx @@ -16,7 +16,7 @@ export function SplineScene({ sceneUrl, className }: SplineSceneProps) {
{isLoading && (
-
+
)}
-
+
AutoTrade diff --git a/features/layout/components/user-menu.tsx b/features/layout/components/user-menu.tsx index 5121d88..f5d2d57 100644 --- a/features/layout/components/user-menu.tsx +++ b/features/layout/components/user-menu.tsx @@ -44,7 +44,7 @@ export function UserMenu({ user }: UserMenuProps) {