diff --git a/src/widgets/control-center-sheet/ui/ControlCenterSheetWidget.tsx b/src/widgets/control-center-sheet/ui/ControlCenterSheetWidget.tsx index 4e5c958..6fb3c52 100644 --- a/src/widgets/control-center-sheet/ui/ControlCenterSheetWidget.tsx +++ b/src/widgets/control-center-sheet/ui/ControlCenterSheetWidget.tsx @@ -16,9 +16,11 @@ interface ControlCenterSheetWidgetProps { rooms: RoomTheme[]; selectedRoomId: string; selectedTimerLabel: string; + isImmersionMode: boolean; sceneRecommendedSoundLabel: string; sceneRecommendedTimerLabel: string; timerPresets: TimerPreset[]; + onImmersionModeChange: (next: boolean) => void; onSelectRoom: (roomId: string) => void; onSelectTimer: (timerLabel: string) => void; onLockedClick: (source: string) => void; @@ -47,9 +49,11 @@ export const ControlCenterSheetWidget = ({ rooms, selectedRoomId, selectedTimerLabel, + isImmersionMode, sceneRecommendedSoundLabel, sceneRecommendedTimerLabel, timerPresets, + onImmersionModeChange, onSelectRoom, onSelectTimer, onLockedClick, @@ -70,6 +74,41 @@ export const ControlCenterSheetWidget = ({ return (
+
+
+

모드

+
+ + +
+
+

+ {isImmersionMode ? '필수만 남기고 숨김' : '모든 컨트롤 표시'} +

+
+
void; statusLine: HudStatusLineItem | null; onStatusAction: () => void; @@ -19,6 +20,7 @@ export const SpaceFocusHudWidget = ({ goal, timerLabel, visible, + isImmersionMode, onGoalUpdate, statusLine, onStatusAction, @@ -108,7 +110,7 @@ export const SpaceFocusHudWidget = ({ } : null } - isImmersionMode + isImmersionMode={isImmersionMode} className="pr-[4.2rem]" onGoalCompleteRequest={handleOpenCompleteSheet} onStatusAction={onStatusAction} diff --git a/src/widgets/space-tools-dock/ui/SpaceToolsDockWidget.tsx b/src/widgets/space-tools-dock/ui/SpaceToolsDockWidget.tsx index f69e191..09a6151 100644 --- a/src/widgets/space-tools-dock/ui/SpaceToolsDockWidget.tsx +++ b/src/widgets/space-tools-dock/ui/SpaceToolsDockWidget.tsx @@ -20,6 +20,7 @@ import { QuickSoundPopover } from './popovers/QuickSoundPopover'; import { InboxToolPanel } from './panels/InboxToolPanel'; interface SpaceToolsDockWidgetProps { isFocusMode: boolean; + isImmersionMode: boolean; rooms: RoomTheme[]; selectedRoomId: string; selectedTimerLabel: string; @@ -42,12 +43,14 @@ interface SpaceToolsDockWidgetProps { onRestoreThought: (thought: RecentThought) => void; onClearInbox: () => RecentThought[]; onResetToSceneRecommended: () => void; + onImmersionModeChange: (next: boolean) => void; onStatusMessage: (payload: HudStatusLinePayload) => void; onExitRequested: () => void; } export const SpaceToolsDockWidget = ({ isFocusMode, + isImmersionMode, rooms, selectedRoomId, selectedTimerLabel, @@ -70,6 +73,7 @@ export const SpaceToolsDockWidget = ({ onRestoreThought, onClearInbox, onResetToSceneRecommended, + onImmersionModeChange, onStatusMessage, onExitRequested, }: SpaceToolsDockWidgetProps) => { @@ -411,9 +415,11 @@ export const SpaceToolsDockWidget = ({ rooms={rooms} selectedRoomId={selectedRoomId} selectedTimerLabel={selectedTimerLabel} + isImmersionMode={isImmersionMode} sceneRecommendedSoundLabel={sceneRecommendedSoundLabel} sceneRecommendedTimerLabel={sceneRecommendedTimerLabel} timerPresets={timerPresets} + onImmersionModeChange={onImmersionModeChange} onSelectRoom={(roomId) => { onRoomSelect(roomId); }} diff --git a/src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx b/src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx index b62feb4..acb5f4b 100644 --- a/src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx +++ b/src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx @@ -167,6 +167,7 @@ export const SpaceWorkspaceWidget = () => { ); const [workspaceMode, setWorkspaceMode] = useState('setup'); + const [isImmersionMode, setImmersionMode] = useState(false); const [selectedRoomId, setSelectedRoomId] = useState(initialRoomId); const [selectedTimerLabel, setSelectedTimerLabel] = useState(initialTimerLabel); const [goalInput, setGoalInput] = useState(initialGoal); @@ -377,6 +378,7 @@ export const SpaceWorkspaceWidget = () => { goal={goalInput.trim()} timerLabel={selectedTimerLabel} visible={isFocusMode} + isImmersionMode={isImmersionMode} statusLine={activeStatus} onStatusAction={runActiveAction} onStatusMessage={pushStatusLine} @@ -405,6 +407,8 @@ export const SpaceWorkspaceWidget = () => { onSetSoundVolume={setMasterVolume} isSoundMuted={isMuted} onSetSoundMuted={setMuted} + isImmersionMode={isImmersionMode} + onImmersionModeChange={setImmersionMode} onCaptureThought={(note) => addThought(note, selectedRoom.name)} onDeleteThought={removeThought} onSetThoughtCompleted={setThoughtCompleted}