-
Notifications
You must be signed in to change notification settings - Fork 0
[Feat/#68] 사물함 신청 전 유의사항 바텀시트 #69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+266
−2
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
0596f86
chore: 사물함 유의사항 일러스트 3종 추가
sangrae2325 99b5cf8
refactor: BottomSheet의 핸들↔내용 간격을 화면이 고르도록 분리
sangrae2325 51e3483
feat: 사물함 신청 전 유의사항 바텀시트 추가
sangrae2325 a711b54
feat: 사물함 유의사항 시트 확인용 임시 라우트 추가
sangrae2325 2f0d0fa
docs: 사물함 시트 구현에서 확정된 WDS 매핑 반영
sangrae2325 5dea85a
fix: 시트가 닫히는 동안 버튼이 비활성 문구로 바뀌던 문제 수정
sangrae2325 ebb9362
fix: 유의사항 시트 버튼 문구를 Figma대로 확인했어요로 수정
sangrae2325 a581ff3
Merge remote-tracking branch 'origin/main' into feat/#68-lockers-noti…
sangrae2325 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| import { Button, Typography } from "@wanteddev/wds"; | ||
| import { useState } from "react"; | ||
|
|
||
| import LockersNoticeSheet from "@/features/lockers/components/LockersNoticeSheet"; | ||
|
|
||
| // 임시 확인용 화면 — 시트를 띄울 진입점이 아직 없어서 둔 자리다. | ||
| // 실제 진입점(홈 "사물함 상태" 퀵링크 `1737:218284` 또는 공지 상세 CTA)이 붙으면 | ||
| // 이 화면과 /lockers/apply 라우트는 지운다. docs/plans/#68-lockers-notice-sheet.md 참고. | ||
| function LockersApplyScreen() { | ||
| const [isOpen, setIsOpen] = useState(false); | ||
| // 시트는 닫아도 380ms 동안 미끄러져 내려간다. 기간 여부를 open과 같은 state에서 파생시키면 | ||
| // 그 사이 버튼이 비활성 문구로 바뀌는 게 보이므로, 닫을 때는 open만 끄고 이 값은 유지한다. | ||
| const [isApplyPeriod, setIsApplyPeriod] = useState(true); | ||
|
|
||
| const openSheet = (applyPeriod: boolean) => { | ||
| setIsApplyPeriod(applyPeriod); | ||
| setIsOpen(true); | ||
| }; | ||
|
|
||
| return ( | ||
| <div className="flex flex-1 flex-col items-center justify-center gap-3 px-5"> | ||
| <Typography as="p" color="semantic.label.alternative" variant="label1"> | ||
| 사물함 유의사항 시트 확인용 임시 화면 | ||
| </Typography> | ||
| <Button onClick={() => openSheet(true)}>신청 기간일 때 열기</Button> | ||
| <Button | ||
| color="assistive" | ||
| onClick={() => openSheet(false)} | ||
| variant="outlined" | ||
| > | ||
| 신청 기간이 아닐 때 열기 | ||
| </Button> | ||
|
|
||
| <LockersNoticeSheet | ||
| isApplyPeriod={isApplyPeriod} | ||
| onClose={() => setIsOpen(false)} | ||
| // 확인 후 이동할 사물함 구역 선택 화면(1737:218452)은 다음 이슈라 지금은 닫기만 한다 | ||
| onConfirm={() => setIsOpen(false)} | ||
| open={isOpen} | ||
| /> | ||
| </div> | ||
| ); | ||
| } | ||
|
|
||
| export default LockersApplyScreen; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,83 @@ | ||
| import { ActionArea, ActionAreaButton, Typography } from "@wanteddev/wds"; | ||
|
|
||
| import BottomSheet from "@/components/ui/BottomSheet"; | ||
| import { LOCKERS_NOTICE_ITEMS } from "@/features/lockers/constants/lockersNotice"; | ||
|
|
||
| interface LockersNoticeSheetProps { | ||
| open: boolean; | ||
| /** 지금이 사물함 신청 기간인지. 아니면 하단 버튼이 잠기고 문구가 바뀐다. */ | ||
| isApplyPeriod: boolean; | ||
| onClose: () => void; | ||
| onConfirm: () => void; | ||
| } | ||
|
|
||
| // Figma: 사물함 신청 전 유의사항 Sheet Body (nodeId 1737:218310) | ||
| // | ||
| // 신청 기간이 아닐 때의 모습은 Figma에 없다 — 유의사항 3줄은 그대로 두고 하단 버튼만 잠가 | ||
| // "신청 기간이 아니에요"를 보여주기로 정했다(docs/plans/#68-lockers-notice-sheet.md 참고). | ||
| function LockersNoticeSheet({ | ||
| open, | ||
| isApplyPeriod, | ||
| onClose, | ||
| onConfirm, | ||
| }: LockersNoticeSheetProps) { | ||
| return ( | ||
| <BottomSheet contentGap={12} onClose={onClose} open={open}> | ||
| {/* pb-7: Figma Sheet Body의 Notice Section ↔ Action Area 간격(28px). | ||
| BottomSheet는 자식 사이에 간격을 두지 않아서 여기서 낸다. */} | ||
| <div className="flex flex-col gap-6 px-5 pb-7"> | ||
| <Typography | ||
| as="h2" | ||
| color="semantic.label.strong" | ||
| variant="heading2" | ||
| weight="bold" | ||
| > | ||
| {/* Figma가 두 줄로 끊어둔 자리라 줄바꿈을 폭에 맡기지 않고 그대로 옮긴다 */} | ||
| 신청 전 아래 내용을 | ||
| <br /> | ||
| 확인해 주세요 | ||
| </Typography> | ||
|
|
||
| <div className="flex flex-col gap-6"> | ||
| {LOCKERS_NOTICE_ITEMS.map((item) => ( | ||
| <div className="flex items-center gap-3" key={item.label}> | ||
| <img alt="" className="size-[42px] shrink-0" src={item.icon} /> | ||
| <div className="flex flex-col"> | ||
| <Typography | ||
| as="p" | ||
| color="semantic.label.alternative" | ||
| variant="label1" | ||
| weight="regular" | ||
| > | ||
| {item.label} | ||
| </Typography> | ||
| <Typography | ||
| as="p" | ||
| color="semantic.label.normal" | ||
| variant="body2" | ||
| weight="medium" | ||
| > | ||
| {item.value} | ||
| </Typography> | ||
| </div> | ||
| </div> | ||
| ))} | ||
| </div> | ||
| </div> | ||
|
|
||
| <ActionArea> | ||
| {/* Figma Main Action은 56px인데 ActionAreaButton은 48px이다. 높이를 고정하면 비활성 | ||
| 문구가 길어져 줄바꿈될 때 잘려서 padding으로 맞춘다(wds-component-usage.md 참고). */} | ||
| <ActionAreaButton | ||
| disabled={!isApplyPeriod} | ||
| onClick={onConfirm} | ||
| sx={{ paddingBlock: "16px" }} | ||
| > | ||
| {isApplyPeriod ? "확인했어요" : "신청 기간이 아니에요"} | ||
| </ActionAreaButton> | ||
| </ActionArea> | ||
| </BottomSheet> | ||
| ); | ||
| } | ||
|
|
||
| export default LockersNoticeSheet; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| import applyPeriodIcon from "@/assets/icons/lockers/apply-period.svg"; | ||
| import onePerPersonIcon from "@/assets/icons/lockers/one-per-person.svg"; | ||
| import usagePeriodIcon from "@/assets/icons/lockers/usage-period.svg"; | ||
|
|
||
| export interface LockersNoticeItem { | ||
| icon: string; | ||
| label: string; | ||
| value: string; | ||
| } | ||
|
|
||
| // Figma: 사물함 신청 전 유의사항 Notice Items (nodeId 1737:218314)의 내용을 그대로 옮긴 목데이터. | ||
| // 이용 기간·신청 기간 API가 붙으면 그 값으로 바뀔 자리다. | ||
| // 위 일러스트 3개는 Figma export가 캔버스·섹션 배경까지 같이 구워 넣어서(42px 회색 네모) | ||
| // 아이콘 그룹만 남기고 걷어낸 SVG다 — 다시 받으면 같은 정리가 필요하다. | ||
| export const LOCKERS_NOTICE_ITEMS: LockersNoticeItem[] = [ | ||
| { | ||
| icon: usagePeriodIcon, | ||
| label: "사물함 이용 기간", | ||
| value: "2026.09.01(화) - 2026.12.15(금)", | ||
| }, | ||
| { | ||
| icon: onePerPersonIcon, | ||
| label: "중복 신청 불가", | ||
| value: "1인당 1개의 사물함만 신청 가능해요.", | ||
| }, | ||
| { | ||
| icon: applyPeriodIcon, | ||
| label: "신청기간", | ||
| value: "2026.09.01(화) - 2026.12.15(금)", | ||
| }, | ||
| ]; | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Correct the weekday in both notice dates.
December 15, 2026, is Tuesday, but this row and the application-period row on Line 29 say Friday. If December 15 is the intended end date, change both weekday labels to
(화). If Friday is intended, confirm and correct the end date instead. Users should not see conflicting deadline information.🤖 Prompt for AI Agents