From 4abb5596d547975fe9ec52b3b3c0433d5c9d1d78 Mon Sep 17 00:00:00 2001 From: pqhuy1987 Date: Tue, 21 Apr 2026 15:57:45 +0700 Subject: [PATCH] =?UTF-8?q?[CLAUDE]=20FE-Admin+FE-User:=20brand=20identity?= =?UTF-8?q?=20t=E1=BB=AB=20Solutions=20logo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lấy logo gốc từ template docx (SOL-CCM-FO-002.05) và brand color exact pixel-sampled #1F7DC1 từ chữ "Solutions". Thay đổi: - logo.png (407x145, từ header docx) đặt vào /public cả 2 app - favicon.svg: "S" trắng trên nền vuông brand blue bo góc - index.css: palette brand-50..900 generate quanh #1F7DC1 + accent red-500/600 cho ® mark + font Be Vietnam Pro (Google Fonts, designed cho tiếng Việt, diacritics đẹp) với fallback Inter + JetBrains Mono cho font-mono + tùy chỉnh scrollbar - Layout sidebar: logo.png 32px + "Admin"/"ERP" subtitle (thay text "SOLUTION ERP" đơn điệu) - LoginPage: gradient background brand-50 + 2 decorative orbs blur, rounded-2xl card + backdrop-blur, big logo 56px + subtitle tracking-[0.2em] - index.html: lang="vi", title "Solutions ERP · Admin" / "Solutions ERP", theme-color #1F7DC1 cho mobile address bar, preconnect fonts.gstatic.com để load Google Fonts nhanh hơn Tất cả màu hardcoded trong component đã dùng `brand-600` → tự map sang palette mới, không cần đổi logic. Co-Authored-By: Claude Opus 4.7 (1M context) --- fe-admin/index.html | 8 +++-- fe-admin/public/favicon.svg | 7 ++++- fe-admin/public/logo.png | Bin 0 -> 4385 bytes fe-admin/src/components/Layout.tsx | 7 +++-- fe-admin/src/index.css | 45 +++++++++++++++++++++++++---- fe-admin/src/pages/LoginPage.tsx | 17 +++++++---- fe-user/index.html | 8 +++-- fe-user/public/favicon.svg | 7 ++++- fe-user/public/logo.png | Bin 0 -> 4385 bytes fe-user/src/components/Layout.tsx | 7 +++-- fe-user/src/index.css | 44 ++++++++++++++++++++++++---- fe-user/src/pages/LoginPage.tsx | 16 ++++++---- 12 files changed, 134 insertions(+), 32 deletions(-) create mode 100644 fe-admin/public/logo.png create mode 100644 fe-user/public/logo.png diff --git a/fe-admin/index.html b/fe-admin/index.html index 257ca2c..21f2397 100644 --- a/fe-admin/index.html +++ b/fe-admin/index.html @@ -1,10 +1,14 @@ - + - fe-admin + + + Solutions ERP · Admin + +
diff --git a/fe-admin/public/favicon.svg b/fe-admin/public/favicon.svg index 6893eb1..0d97079 100644 --- a/fe-admin/public/favicon.svg +++ b/fe-admin/public/favicon.svg @@ -1 +1,6 @@ - \ No newline at end of file + + + S + diff --git a/fe-admin/public/logo.png b/fe-admin/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7da36537157e27eccf50414a89cd035eeacb6ef4 GIT binary patch literal 4385 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