feat(space): 사운드 시트와 몰입 모드 크롬 정리 적용
맥락:
- /space 하단 사운드 바를 제거하고 도구를 우측 도크에 수납해 배경 몰입을 강화하며, 몰입 모드 ON 체감을 높이기 위해
변경사항:
- 하단 사운드 프리셋 바를 제거하고 도크에 🎧 Sound 패널을 추가
- features/sound-preset + widgets/sound-sheet를 추가해 프리셋 선택/믹서 UI(더미) 구성
- features/immersion-mode + shared/ui/Toggle을 추가하고 Quick 시트 토글과 연결
- 몰입 모드 ON 시 상단 Current Room 숨김, 허브 버튼 소형화, 레일 미니화, HUD 저대비, 비네팅/그레인 강화
- widgets/space-chrome를 신설해 /space 상단 크롬 렌더링을 분리
- docs/90_current_state.md, docs/session_brief.md 최신 상태로 갱신
검증:
- npx tsc --noEmit
세션-상태: /space는 사운드 시트 기반 도크 구조와 몰입 모드 UI를 제공함
세션-다음: RoomSheetWidget 인원수 기반 정보를 큐레이션 표현으로 전환
세션-리스크: 터치 환경에서 미니 레일 발견성이 낮을 수 있어 보조 힌트가 필요할 수 있음
This commit is contained in:
39
src/shared/ui/Toggle.tsx
Normal file
39
src/shared/ui/Toggle.tsx
Normal file
@@ -0,0 +1,39 @@
|
||||
import { cn } from '@/shared/lib/cn';
|
||||
|
||||
interface ToggleProps {
|
||||
checked: boolean;
|
||||
onChange: (checked: boolean) => void;
|
||||
ariaLabel: string;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export const Toggle = ({
|
||||
checked,
|
||||
onChange,
|
||||
ariaLabel,
|
||||
className,
|
||||
}: ToggleProps) => {
|
||||
return (
|
||||
<button
|
||||
type="button"
|
||||
role="switch"
|
||||
aria-checked={checked}
|
||||
aria-label={ariaLabel}
|
||||
onClick={() => onChange(!checked)}
|
||||
className={cn(
|
||||
'inline-flex w-11 items-center rounded-full border px-1 py-1 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-200/80',
|
||||
checked
|
||||
? 'border-sky-200/70 bg-sky-300/24'
|
||||
: 'border-white/28 bg-white/9',
|
||||
className,
|
||||
)}
|
||||
>
|
||||
<span
|
||||
className={cn(
|
||||
'h-4 w-4 rounded-full bg-white transition-transform duration-200 motion-reduce:transition-none',
|
||||
checked ? 'translate-x-5' : 'translate-x-0',
|
||||
)}
|
||||
/>
|
||||
</button>
|
||||
);
|
||||
};
|
||||
@@ -5,3 +5,4 @@ export * from './GlassCard';
|
||||
export * from './Modal';
|
||||
export * from './Tabs';
|
||||
export * from './Toast';
|
||||
export * from './Toggle';
|
||||
|
||||
Reference in New Issue
Block a user