Skip to content
7 changes: 7 additions & 0 deletions public/map-search/arrow-right.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions public/map-search/attraction.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions public/map-search/chevron-down.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions public/map-search/clear.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions public/map-search/close.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions public/map-search/hotel.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions public/map-search/location.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions public/map-search/museum.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions public/map-search/pointer.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions public/map-search/reset.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions public/map-search/restaurant.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions public/map-search/search-white.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions public/map-search/search.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions public/map-search/star.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions public/map-search/transit.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 26 additions & 1 deletion src/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,40 @@
*/
@custom-variant mobile (&:where(.is-mobile-device, .is-mobile-device *));

/* 검색 말풍선은 Google 기본 여백·스크롤바 대신 본문에서 사방 12px을 확보한다. */
/* 검색 말풍선의 여백·표면·그림자는 Figma 6156:14635 기준으로 맞춘다. */
.gm-style-iw-c:has([data-search-place-preview]) {
border-radius: 8px;
background: var(--color-fill-subtle);
box-shadow: 0 2px 10px #0000001a;
padding: 0 !important; /* NOSONAR: S9423 — Google Maps가 주입하는 인라인 padding을 검색 말풍선에서만 재정의한다. */
}

.gm-style-iw-d:has([data-search-place-preview]) {
overflow: auto !important; /* NOSONAR: S9423 — Google Maps의 인라인 overflow:scroll에 의한 불필요한 스크롤바를 제거한다. */
}

/* 검색 추천은 기존 상세 패널(z-20) 위에서 선택할 수 있어야 한다. */
.map-discover-toolbar:has(input[aria-expanded="true"]) {
z-index: 25;
}

/* 원본 말풍선 꼬리(14×12)를 Google 기본 삼각형 대신 사용한다. */
.gm-style-iw-t:has([data-search-place-preview]) > .gm-style-iw-tc {
width: 14px;
height: 12px;
filter: drop-shadow(0 2px 5px #0000001a);
}

.gm-style-iw-t:has([data-search-place-preview]) > .gm-style-iw-tc::after {
inset: 0;
width: 14px;
height: 12px;
clip-path: none;
background: url("/map-search/pointer.svg") center / contain no-repeat;
transform: rotate(180deg);
box-shadow: none;
}

/* PC 지도 버튼은 지도 끝에서 아래·좌우 모두 24px — 확대·축소(+/−)의 아래는 저작권 줄과 기본 여백으로 이미 24px이라 오른쪽만 넓힌다. */
[data-map-controls-inset] .gm-bundled-control {
margin-right: 24px !important; /* NOSONAR: S9423 — Google Maps가 주입하는 인라인 margin(10px)을 재정의한다. */
Expand Down
11 changes: 9 additions & 2 deletions src/app/login/page.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,18 @@ vi.mock("@/lib/google-oauth", () => ({
saveOAuthPendingSession: vi.fn(),
}));

import { LoginFallback } from "@/app/login/page";
vi.mock("next/navigation", () => ({
useSearchParams: () => {
// Exercise the page's real Suspense fallback while navigation data is pending.
throw new Promise<never>(() => {});
},
}));

import LoginPage from "@/app/login/page";

describe("LoginFallback", () => {
it("renders meaningful non-interactive login HTML", () => {
const html = renderToStaticMarkup(<LoginFallback />);
const html = renderToStaticMarkup(<LoginPage />);

expect(html).toContain("로그인하고 여행 계획을 이어가세요");
expect(html).toContain("Google로 계속하기");
Expand Down
2 changes: 1 addition & 1 deletion src/app/login/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ function LoginPageContent() {
);
}

export function LoginFallback() {
function LoginFallback() {
return (
<LoginShell>
<button
Expand Down
Loading