From 400d879093de16f496f4f27f1eee82f55b8014a6 Mon Sep 17 00:00:00 2001 From: gahusb Date: Sat, 16 May 2026 04:09:18 +0900 Subject: [PATCH] =?UTF-8?q?refactor(shell):=20KakaoFloatButton=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94=EC=B6=9C=20=E2=80=94=20?= =?UTF-8?q?PublicShell=20=EC=9D=B8=EB=9D=BC=EC=9D=B8=20=E2=86=92=20?= =?UTF-8?q?=EB=B3=84=EB=8F=84=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit D 트랙 2/4. P1 Task 3 review I-1 후속: - PublicShell의 인라인 카카오 버튼 JSX + style 블록 → KakaoFloatButton.tsx - KAKAO_OPENCHAT_URL은 lib/contact 에서 import - SVG에 aria-hidden 추가 (parent aria-label 우선) 향후 admin shell 또는 다른 surface에서 재사용 가능. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/components/KakaoFloatButton.tsx | 62 +++++++++++++++++++++++++++++ app/components/PublicShell.tsx | 53 +----------------------- 2 files changed, 64 insertions(+), 51 deletions(-) create mode 100644 app/components/KakaoFloatButton.tsx diff --git a/app/components/KakaoFloatButton.tsx b/app/components/KakaoFloatButton.tsx new file mode 100644 index 0000000..16e3f69 --- /dev/null +++ b/app/components/KakaoFloatButton.tsx @@ -0,0 +1,62 @@ +import { KAKAO_OPENCHAT_URL } from '@/lib/contact'; + +/** + * 카카오 1:1 상담 플로팅 버튼. + * PublicShell footer 다음에 마운트되어 모든 공개 페이지에 노출. + */ +export default function KakaoFloatButton() { + return ( + <> + + + + + 1:1 상담 + + + + + ); +} diff --git a/app/components/PublicShell.tsx b/app/components/PublicShell.tsx index 9e335a3..d07b064 100644 --- a/app/components/PublicShell.tsx +++ b/app/components/PublicShell.tsx @@ -1,5 +1,6 @@ import TopNav from './TopNav'; import Link from 'next/link'; +import KakaoFloatButton from './KakaoFloatButton'; export default function PublicShell({ children }: { children: React.ReactNode }) { return ( @@ -116,57 +117,7 @@ export default function PublicShell({ children }: { children: React.ReactNode }) - {/* 카카오 오픈채팅 플로팅 버튼 */} - - - - - 1:1 상담 - - - + ); }