임동욱 임동욱 07-27
feat: WantedSans 폰트 로드 및 앱 아이콘 적용
Co-Authored-By: Claude Opus 5 
@8ddeee0305a068c94ebdd38be92d955ca8648a16
 
app/apple-icon.png (Binary) (added)
+++ app/apple-icon.png
Binary file is not shown
 
app/icon.png (Binary) (added)
+++ app/icon.png
Binary file is not shown
app/layout.tsx
--- app/layout.tsx
+++ app/layout.tsx
@@ -1,5 +1,6 @@
 import type { Metadata } from "next";
-import { Geist, Geist_Mono } from "next/font/google";
+import { Geist_Mono } from "next/font/google";
+import localFont from "next/font/local";
 import { ViewTransition } from "react";
 import { FeedbackHost } from "@/app/_components/feedback-host";
 import { FeedbackProvider } from "@/app/_components/feedback-provider";
@@ -21,11 +22,38 @@
   SPLASH_SHOWN_STORAGE_KEY
 )}))document.documentElement.setAttribute("data-splash-shown","")}catch(e){}})()`;
 
-const geistSans = Geist({
-  variable: "--font-geist-sans",
-  subsets: ["latin"],
+// 어드민 전체 기본 서체(edupay-app 일체화, design 전달 사양) — Geist는 대체되어 제거했다.
+// globals.css `--font-sans`가 이 변수를 우선 참조하고, 로드 전에도 system-ui로 안전하게
+// 폴백하도록 이미 구성돼 있다.
+const wantedSans = localFont({
+  src: [
+    {
+      path: "../public/fonts/wanted-sans-regular.ttf",
+      weight: "400",
+      style: "normal",
+    },
+    {
+      path: "../public/fonts/wanted-sans-medium.ttf",
+      weight: "500",
+      style: "normal",
+    },
+    {
+      path: "../public/fonts/wanted-sans-semibold.ttf",
+      weight: "600",
+      style: "normal",
+    },
+    {
+      path: "../public/fonts/wanted-sans-bold.ttf",
+      weight: "700",
+      style: "normal",
+    },
+  ],
+  variable: "--font-wanted-sans",
+  display: "swap",
 });
 
+// 코드/숫자 표기용 고정폭 서체 — globals.css `--font-mono`가 여전히 이 변수를 직접 참조하므로
+// (폴백 체인 없음) 유지한다.
 const geistMono = Geist_Mono({
   variable: "--font-geist-mono",
   subsets: ["latin"],
@@ -60,7 +88,7 @@
     <html
       lang="ko"
       suppressHydrationWarning
-      className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`}
+      className={`${wantedSans.variable} ${geistMono.variable} h-full antialiased`}
     >
       <head>
         <style dangerouslySetInnerHTML={{ __html: SPLASH_HIDE_STYLE }} />
Add a comment
List