-
Notifications
You must be signed in to change notification settings - Fork 2
[FEAT] 메인 페이지 디자인 변경 및 토론 템플릿 섹션 추가 #356
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
Changes from all commits
ae6e98c
44b253e
55f2d60
6ecaff0
32273ae
fa5a5fb
841740b
cd1cdd3
fe65b93
d155507
89ae5c4
47ec083
7ba79f9
86ff327
b28400c
b863a1e
b5bf70f
bf58e23
56bb10d
71ba905
ac1327e
03b0848
6894a26
9335929
45a6e19
bcfdbab
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| import { useEffect, useState } from 'react'; | ||
| import arrowDown from '../../../assets/landing/bottom_arrow.png'; | ||
| type ScrollHintProps = { | ||
| topThreshold?: number; //최상단 판정 임계값 (px) | ||
| }; | ||
|
|
||
| export default function ScrollHint({ topThreshold = 10 }: ScrollHintProps) { | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
| const [visible, setVisible] = useState(true); | ||
|
|
||
| useEffect(() => { | ||
| const onScroll = () => { | ||
| const atTop = window.scrollY <= topThreshold; | ||
| // 최상단이면 보이고, 아니면 숨김 | ||
| setVisible(atTop); | ||
| }; | ||
| onScroll(); | ||
|
|
||
| window.addEventListener('scroll', onScroll, { passive: true }); | ||
| return () => window.removeEventListener('scroll', onScroll); | ||
| }, [topThreshold]); | ||
|
|
||
| return ( | ||
| <div | ||
| className={` | ||
| pointer-events-none fixed inset-x-0 bottom-10 flex justify-center | ||
| transition-all duration-300 | ||
| ${visible ? 'translate-y-0 opacity-100' : 'translate-y-2 opacity-0'} | ||
| `} | ||
| aria-hidden={!visible} | ||
| > | ||
| <div | ||
| className={` | ||
| pointer-events-auto flex items-center gap-2 rounded-full | ||
| bg-default-white/90 px-4 py-2 text-[min(max(0.85rem,1.2vw),1rem)] font-medium shadow-[0_6px_18px_rgba(0,0,0,0.12)] | ||
| ring-1 | ||
| ring-black/5 backdrop-blur | ||
| transition-colors hover:bg-default-white | ||
| `} | ||
| > | ||
| <img | ||
| src={arrowDown} | ||
| alt="아래로 스크롤" | ||
| className="pointer-events-auto h-4 w-20 animate-bounce" | ||
| /> | ||
| </div> | ||
| </div> | ||
| ); | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,5 @@ | ||
| import section301 from '../../../assets/landing/section3-1.png'; | ||
| import section302 from '../../../assets/landing/section3-2.png'; | ||
| import section301 from '../../../assets/landing/debate_info_setting.png'; | ||
| import section302 from '../../../assets/landing/table_list.png'; | ||
|
|
||
| interface TableSectionProps { | ||
| onLogin: () => void; | ||
|
|
@@ -14,21 +14,23 @@ export default function TableSection({ onLogin }: TableSectionProps) { | |
| <span className="absolute bottom-0 left-0 z-0 h-4 w-full bg-brand/70"></span> | ||
| </div> | ||
| <h2 className="mt-4 text-left text-[min(max(1.25rem,2.75vw),2.5rem)] font-bold"> | ||
| 토론 정보 관리 및 기록 | ||
| 토론 정보 <br /> | ||
| 관리 및 기록 | ||
| </h2> | ||
| </div> | ||
| <div className="flex flex-row items-center justify-center gap-8 px-4"> | ||
| <img src={section301} alt="section301" className="flex w-1/2" /> | ||
| <div className="flex w-1/2 flex-col items-center gap-4"> | ||
| <h3 className="text-[min(max(1.1rem,1.75vw),1.8rem)] font-semibold"> | ||
| 종소리 설정 | ||
| 토론 기본 정보 설정 | ||
| </h3> | ||
| <p className="text-[min(max(0.875rem,1.5vw),1.4rem)] font-medium text-neutral-600"> | ||
| 원하는 종소리만 골라서 설정할 수 있어요. | ||
| 시간표 이름부터 주제까지! | ||
| </p> | ||
| </div> | ||
| <img src={section301} alt="section301" className="flex w-1/2" /> | ||
| </div> | ||
| <div className="flex flex-row items-center justify-center gap-8 px-4"> | ||
| <img src={section302} alt="section302" className="flex w-1/2" /> | ||
| <div className="flex w-1/2 flex-col items-center gap-4"> | ||
| <h3 className="text-[min(max(1.1rem,1.75vw),1.8rem)] font-semibold"> | ||
| 시간표 목록 | ||
|
|
@@ -37,12 +39,11 @@ export default function TableSection({ onLogin }: TableSectionProps) { | |
| 내가 만든 시간표를 저장하고 싶나요? | ||
| </p> | ||
| </div> | ||
| <img src={section302} alt="section302" className="flex w-1/2" /> | ||
| </div> | ||
|
|
||
| <div className="flex flex-col items-center justify-center gap-1 text-[min(max(1.25rem,2.75vw),2.5rem)] font-bold"> | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 바꾸는 김에 로그인해 주세요.로 띄어쓰기 해주면 좋을 것 같아요!
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 수정했습니다 |
||
| <p>시간표를 저장하려면,</p> | ||
| <p>디베이트 타이머에 로그인해보세요!</p> | ||
| <p>디베이트 타이머에 로그인해 보세요!</p> | ||
| <button | ||
| className="mt-14 rounded-full border border-neutral-300 bg-brand px-5 py-2 text-[min(max(0.875rem,1.25vw),1.2rem)] font-medium text-default-black transition-all duration-100 hover:bg-semantic-table hover:text-default-white" | ||
| onClick={onLogin} | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| import section501 from '../../../assets/landing/section5-1.png'; | ||
| import { LANDING_URLS } from '../../../constants/urls'; | ||
|
|
||
| export default function TemplateApplicationSection() { | ||
| return ( | ||
| <section className="flex flex-row justify-between gap-1"> | ||
| <div className="flex flex-col items-start justify-center gap-4"> | ||
| <p className="text-[min(max(1.2rem,2vw),2.3rem)] font-semibold"> | ||
| 템플릿 신청하기 | ||
| </p> | ||
| <p className="text-[min(max(0.875rem,1.25vw),1.2rem)] text-neutral-400"> | ||
| 새로운 템플릿도 신청해 볼까요? | ||
| </p> | ||
| <button | ||
| onClick={() => | ||
| window.open( | ||
| LANDING_URLS.TEMPLATE_REGISTER_URL, | ||
| '_blank', | ||
| 'noopener,noreferrer', | ||
| ) | ||
| } | ||
| className="rounded-full border border-neutral-300 bg-neutral-200 px-9 py-2 text-[min(max(0.875rem,1.25vw),1.2rem)] font-medium text-default-black transition-all duration-100 hover:bg-brand" | ||
| > | ||
| 신청하기 | ||
| </button> | ||
| </div> | ||
| <img src={section501} alt="section501" className="w-[30%]" /> | ||
| </section> | ||
| ); | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| import { DebateTemplate } from '../../../type/type'; | ||
| import clsx from 'clsx'; | ||
|
|
||
| export default function TemplateCard({ | ||
| title, | ||
| subtitle, | ||
| logoSrc, | ||
| actions, | ||
| className, | ||
| }: DebateTemplate) { | ||
| return ( | ||
| <article | ||
| className={clsx( | ||
| 'flex flex-col rounded-3xl border-4 border-white bg-gradient-to-b from-default-white to-brand', | ||
| 'ring-3 ring-brand/20', | ||
| 'p-6 shadow-[0_0_32px_rgba(255,165,0,0.1)] md:p-7', | ||
| className, | ||
| )} | ||
| > | ||
| {/* 헤더 */} | ||
| <div className="flex justify-between"> | ||
| <div className="flex flex-col gap-2"> | ||
| <h3 className="text-[min(max(0.9rem,1.4vw),1.1rem)] font-semibold leading-tight"> | ||
| {title} | ||
| </h3> | ||
| <p className="mt-1 min-h-[1.25rem] text-[min(max(0.75rem,1.1vw),0.9rem)] text-neutral-700"> | ||
| {subtitle ?? ''} | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* 로고 */} | ||
| {logoSrc && ( | ||
| <img | ||
| src={logoSrc} | ||
| alt={`${title} 로고`} | ||
| className="h-12 w-12 shrink-0 rounded-full object-contain" | ||
| /> | ||
| )} | ||
| </div> | ||
|
|
||
| {/* 액션 리스트 */} | ||
| <ul className="mt-5 flex flex-col gap-1"> | ||
| {actions.map((action, index) => ( | ||
| <li key={`${action.label}-${index}`}> | ||
| <div className="flex items-center justify-between gap-3 rounded-md bg-white px-3 py-2"> | ||
| <span className="truncate text-[min(max(0.75rem,1.1vw),0.9rem)] font-medium text-neutral-800"> | ||
| {action.label} | ||
| </span> | ||
|
|
||
| <a | ||
| href={action.href} | ||
| className="shrink-0 rounded-full border border-neutral-300 bg-brand px-4 py-1.5 text-[min(max(0.75rem,1.1vw),0.9rem)] font-medium text-default-black transition-colors duration-100 hover:bg-semantic-table hover:text-white" | ||
| aria-label={`${action.label} 토론하기`} | ||
| > | ||
| 토론하기 | ||
| </a> | ||
| </div> | ||
| </li> | ||
| ))} | ||
| </ul> | ||
| </article> | ||
| ); | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| import { DebateTemplate } from '../../../type/type'; | ||
| import TemplateCard from './TemplateCard'; | ||
|
|
||
| interface TemplateListProps { | ||
| data: DebateTemplate[]; | ||
| } | ||
| export default function TemplateList({ data }: TemplateListProps) { | ||
| return ( | ||
| <div | ||
| className={'grid grid-cols-2 gap-5 lg:grid-cols-3'} // 2열, lg에서 3열 | ||
| > | ||
| {data.map((template) => ( | ||
| <TemplateCard key={template.title} {...template} /> | ||
| ))} | ||
| </div> | ||
| ); | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| import { DEBATE_TEMPLATE } from '../../../constants/debate_template'; | ||
| import TemplateApplicationSection from './TemplateApplicationSection'; | ||
| import TemplateList from './TemplateList'; | ||
|
|
||
| export default function TemplateSelection() { | ||
| return ( | ||
| <section id="template-selection" className="flex flex-col gap-12"> | ||
| <div> | ||
| <h2 className="mt-4 text-left text-[min(max(1.25rem,2.75vw),2.5rem)] font-bold"> | ||
| 다양한 토론 템플릿을 원클릭으로 만나보세요! | ||
| </h2> | ||
| </div> | ||
| <TemplateList data={DEBATE_TEMPLATE.ONE} /> | ||
| <div className="mx-auto h-px w-11/12 bg-neutral-200" /> {/* 구분선 */} | ||
| <TemplateList data={DEBATE_TEMPLATE.TWO} /> | ||
| <div className="mx-auto h-px w-11/12 bg-neutral-200" /> | ||
| <TemplateList data={DEBATE_TEMPLATE.THREE} /> | ||
| <TemplateApplicationSection /> | ||
| </section> | ||
| ); | ||
| } |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,32 +1,59 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import section101 from '../../../assets/landing/section1-1.png'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import section102 from '../../../assets/landing/section1-2.png'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import timeboxStep from '../../../assets/landing/timebox_step.png'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import timeboxButtons from '../../../assets/landing/timebox_step_button.png'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import bellSetting from '../../../assets/landing/bell_setting.png'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import twoTimer from '../../../assets/landing/two_timer.png'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import timeboxAddButton from '../../../assets/landing/timebox_add_button.png'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| export default function TimeTableSection() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| return ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <section id="section1" className="flex flex-col gap-24"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div className="relative inline-block text-[min(max(0.875rem,1.5vw),1.4rem)] font-semibold"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <span className="relative z-10">시간표 설정 화면</span> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <span className="relative z-10">시간표 설정화면</span> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 라벨 표기 어색한 띄어쓰기 “시간표 설정화면” → “시간표 설정 화면”이 자연스럽습니다. - <span className="relative z-10">시간표 설정화면</span>
+ <span className="relative z-10">시간표 설정 화면</span>📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <span className="absolute bottom-0 left-0 z-0 h-4 w-full bg-brand/70"></span> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h1 className="mt-4 text-left text-[min(max(1.25rem,2.75vw),2.5rem)] font-bold"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 드래그 앤 드롭으로 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <br /> 간편하게 시간표 구성 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </h1> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h2 className="mt-4 text-left text-[min(max(1.25rem,2.75vw),2.5rem)] font-bold"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 간편한 시간표 구성 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </h2> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <img src={section101} alt="section101" className="w-full" /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <img src={section102} alt="section102" className="mt-5 w-full" /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div className="flex flex-col items-center gap-1"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p className="mb-2 text-center text-[min(max(1.1rem,1.75vw),1.8rem)] font-semibold"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 두 가지 타이머 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p className="text-center text-[min(max(0.875rem,1.5vw),1.4rem)] font-medium text-neutral-600"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 일반형과 자유토론형 타이머로, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p className="text-center text-[min(max(0.875rem,1.5vw),1.4rem)] font-medium text-neutral-600"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 다양한 토론 방식을 지원해요. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div className="flex flex-row items-center justify-center gap-8 px-4"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <img src={timeboxStep} alt="section301" className="flex w-1/2" /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <img src={timeboxButtons} alt="section301" className="flex w-1/3" /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+18
to
+21
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 모바일 가독성·접근성 개선(반응형 방향/alt/지연로딩)
- <div className="flex flex-row items-center justify-center gap-8 px-4">
- <img src={timeboxStep} alt="section301" className="flex w-1/2" />
- <img src={timeboxButtons} alt="section301" className="flex w-1/3" />
+ <div className="flex flex-col items-center justify-center gap-8 px-4 md:flex-row">
+ <img
+ src={timeboxStep}
+ alt="시간표 단계 안내 화면"
+ loading="lazy"
+ decoding="async"
+ className="w-full md:w-1/2"
+ />
+ <img
+ src={timeboxButtons}
+ alt="시간표 단계별 버튼 모음"
+ loading="lazy"
+ decoding="async"
+ className="w-full md:w-1/3"
+ />📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div className="mt-4 flex items-center gap-4"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h2 className="text-left text-[min(max(1.25rem,2.75vw),2.5rem)] font-bold"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 시간표 추가 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </h2> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <img | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| src={timeboxAddButton} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| alt="시간표 추가 버튼" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| className="h-[min(max(1.7rem,3vw),2.7rem)] w-auto" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+23
to
+30
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 헤딩 계층(A11y) 및 아이콘 대체텍스트
- <h2 className="text-left text-[min(max(1.25rem,2.75vw),2.5rem)] font-bold">
+ <h3 className="text-left text-[min(max(1.25rem,2.75vw),2.5rem)] font-bold">
시간표 추가
- </h2>
+ </h3>
<img
src={timeboxAddButton}
- alt="시간표 추가 버튼"
+ alt=""
+ aria-hidden="true"
className="h-[min(max(1.7rem,3vw),2.7rem)] w-auto"
/>📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div className="flex flex-row items-center justify-center gap-8 px-4"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <img src={twoTimer} alt="section302" className="flex w-1/2" /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div className="flex w-1/2 flex-col items-center gap-4"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h3 className="text-[min(max(1.1rem,1.75vw),1.8rem)] font-semibold"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 두가지 타이머 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </h3> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p className="text-[min(max(0.875rem,1.5vw),1.4rem)] font-medium text-neutral-600"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 일반형과 자유토론형 타이머로, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <br /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 다양한 토론 방식을 지원해요. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+32
to
+43
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 반응형 방향 전환 및 카피 띄어쓰기
- <div className="flex flex-row items-center justify-center gap-8 px-4">
- <img src={twoTimer} alt="section302" className="flex w-1/2" />
- <div className="flex w-1/2 flex-col items-center gap-4">
+ <div className="flex flex-col items-center justify-center gap-8 px-4 md:flex-row">
+ <img
+ src={twoTimer}
+ alt="두 가지 타이머 화면"
+ loading="lazy"
+ decoding="async"
+ className="w-full md:w-1/2"
+ />
+ <div className="flex w-full flex-col items-center gap-4 md:w-1/2">
<h3 className="text-[min(max(1.1rem,1.75vw),1.8rem)] font-semibold">
- 두가지 타이머
+ 두 가지 타이머
</h3>📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div className="flex flex-row items-center justify-center gap-8 px-4"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <div className="flex w-1/2 flex-col items-center gap-4"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <h3 className="text-[min(max(1.1rem,1.75vw),1.8rem)] font-semibold"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 종소리 설정 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </h3> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <p className="text-[min(max(0.875rem,1.5vw),1.4rem)] font-medium text-neutral-600"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 시간에 따른 종소리를 내마음대로 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <br /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 커스터마이징 할 수 있어요. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </p> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <img src={bellSetting} alt="section302" className="flex w-1/2" /> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+45
to
57
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 텍스트 품질·접근성(띄어쓰기/외래어·alt/lazy)
- <div className="flex flex-row items-center justify-center gap-8 px-4">
- <div className="flex w-1/2 flex-col items-center gap-4">
+ <div className="flex flex-col items-center justify-center gap-8 px-4 md:flex-row">
+ <div className="flex w-full flex-col items-center gap-4 md:w-1/2">
<h3 className="text-[min(max(1.1rem,1.75vw),1.8rem)] font-semibold">
종소리 설정
</h3>
<p className="text-[min(max(0.875rem,1.5vw),1.4rem)] font-medium text-neutral-600">
- 시간에 따른 종소리를 내마음대로
+ 시간에 따른 종소리를 내 마음대로
<br />
- 커스터마이징 할 수 있어요.
+ 사용자 지정할 수 있어요.
</p>
</div>
- <img src={bellSetting} alt="section302" className="flex w-1/2" />
+ <img
+ src={bellSetting}
+ alt="종소리 설정 화면"
+ loading="lazy"
+ decoding="async"
+ className="w-full md:w-1/2"
+ />📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| </section> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


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.
아하 홈설정에 리뷰가 원래 함께 들어가 있었는데 이번에 바뀌면서 분리를 한 것이군요?
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.
넵 기존에는 배경색이 둘다 같아서 같이 두었는데 이번에 배경색이 변경되면서 분리되었습니다