아직 만든 컬렉션이 없어요.
- )} +{updateAliasMutation.error.message}
- )} +공개된 컬렉션이 없습니다
- )} - {/* 287-8/319: MyShelfColumn과 동일하게 flex-1 min-h-0이다 — 팔로우한 책장의 책 수와 무관하게, 부모(ShelfColumn)가 내어주는 세로 공간을 그대로 채운다(319에서 min-h-[360px]/ max-h-[590px] 고정 캡을 없앤 이유는 MyShelfList.tsx 상단 주석 참고). paddingTop/ diff --git a/src/features/home/paperAperture.css b/src/features/home/paperAperture.css index 58cfa7c..47570ba 100644 --- a/src/features/home/paperAperture.css +++ b/src/features/home/paperAperture.css @@ -1088,15 +1088,18 @@ } /* ── 검색 결과 ─────────────────────────────────────────────────────── 결과는 창이 완전히 열린 뒤(--open이 1일 때)에만 존재하므로 종이 판과 겹칠 일이 없다. - 그래도 z-index는 판(6·7)보다 위, 도크(20)보다 아래에 둔다 — 지우다 만 상태에서 - 판이 아직 돌아오는 중일 때 결과가 종이 밑으로 들어가 보이지 않게 하려는 것이다. */ + 좌우 레일의 포스트잇·책은 지도 쪽으로 삐져나오므로 넓은 판형에서는 360px 이상의 안전 여백을 + 예약한다. 1080px 이하에서는 레일 자체가 사라져 원래의 유동 여백으로 되돌린다. + z-index는 판(6·7)보다 위, 도크(20)보다 아래에 둔다 — 지우다 만 상태에서 판이 아직 돌아오는 중일 + 때 결과가 종이 밑으로 들어가 보이지 않게 하려는 것이다. */ .pl-results { position: absolute; z-index: 15; left: 0; right: 0; - bottom: clamp(16px, 4%, 40px); - padding: 0 clamp(22px, 7%, 92px); + top: 50%; + transform: translateY(-50%); + padding: 0 clamp(360px, 25%, 440px); } /* ── 반응형: 축소가 아니라 제본 방식이 바뀐다 ───────────────────────── @@ -1115,6 +1118,9 @@ --pl-sh-b: 26%; --pl-sh-x: 0%; } + .pl-results { + padding: 0 clamp(22px, 7%, 92px); + } .pl-dock { /* 곁열이 없으니 밀 대상도 없다 — 무대의 수학적 중앙이 곧 광학적 중앙이다. */ --pl-dock-nudge: 0px; diff --git a/src/features/records/components/PlaceRecordSheet.tsx b/src/features/records/components/PlaceRecordSheet.tsx index 4989161..4d30181 100644 --- a/src/features/records/components/PlaceRecordSheet.tsx +++ b/src/features/records/components/PlaceRecordSheet.tsx @@ -589,14 +589,16 @@ export function PlaceRecordSheet({ previewMode = false, onRecordSaved }: PlaceRe 통째로 사라진다(S15P11A705-324). 닫기 진입점은 헤더 X 버튼 하나로 통일한다. */}`를 끼우면 그 열의 flex-1 선반 영역만 한 줄만큼 짧아져, 데이터가 있는 + * 이웃 열과 ShelfTier 높이가 달라진다. 문구가 없어도 같은 높이를 예약해 모든 열의 선반 시작점과 + * 끝점을 고정한다. + */ +export function ShelfColumnStatus({ + message = null, + tone = 'muted', +}: { + message?: string | null; + tone?: 'muted' | 'error'; +}) { + return ( +
+ {message ?? '\u00a0'} +
+ ); +} + // 250: 한 행(row)에 들어갈 스파인들. chunkIntoShelfRows(getRowCapacity)로 이미 한 줄 분량으로 잘려 // 들어오므로 줄바꿈·스크롤은 이 레벨에서 다루지 않는다 — ShelfTier/바깥 컨테이너가 담당한다. // 287-4: 행 높이를 실제 책 높이(getSpineHeight, 112~168 가변)와 무관하게 SPINE_MAX_HEIGHT로