feat(agent-office): 모바일 사이드패널 전체화면 토글 + music 에이전트 이미지 교체
모바일 바텀시트(Commands/Tasks)가 55vh로 작아 내용 확인이 불편 → 헤더에 전체화면 토글 버튼 추가(100dvh 확장, 데스크톱은 숨김). music 에이전트 이미지를 agent_music_2로 교체. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -195,6 +195,11 @@
|
|||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
color: #94a3b8;
|
color: #94a3b8;
|
||||||
}
|
}
|
||||||
|
.ao-sidepanel-actions {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
.ao-sidepanel-close {
|
.ao-sidepanel-close {
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
@@ -204,6 +209,18 @@
|
|||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
}
|
}
|
||||||
.ao-sidepanel-close:hover { color: #fff; }
|
.ao-sidepanel-close:hover { color: #fff; }
|
||||||
|
/* 전체 화면 토글 — 모바일 전용 (데스크톱에서는 숨김) */
|
||||||
|
.ao-sidepanel-expand {
|
||||||
|
display: none;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
color: #888;
|
||||||
|
font-size: 18px;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 0 4px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.ao-sidepanel-expand:hover { color: #fff; }
|
||||||
|
|
||||||
/* Tabs */
|
/* Tabs */
|
||||||
.ao-sidepanel-tabs {
|
.ao-sidepanel-tabs {
|
||||||
@@ -377,19 +394,31 @@
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
top: auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
height: 55vh;
|
||||||
max-height: 55vh;
|
max-height: 55vh;
|
||||||
border-left: none;
|
border-left: none;
|
||||||
border-top: 1px solid #333;
|
border-top: 1px solid #333;
|
||||||
border-radius: 16px 16px 0 0;
|
border-radius: 16px 16px 0 0;
|
||||||
animation: slideUp 0.25s ease-out;
|
animation: slideUp 0.25s ease-out;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
|
transition: height 0.25s ease, max-height 0.25s ease, border-radius 0.25s ease;
|
||||||
|
}
|
||||||
|
/* 전체 화면으로 확장 */
|
||||||
|
.ao-sidepanel.expanded {
|
||||||
|
top: 0;
|
||||||
|
height: 100dvh;
|
||||||
|
max-height: 100dvh;
|
||||||
|
border-radius: 0;
|
||||||
|
border-top: none;
|
||||||
}
|
}
|
||||||
@keyframes slideUp {
|
@keyframes slideUp {
|
||||||
from { transform: translateY(100%); }
|
from { transform: translateY(100%); }
|
||||||
to { transform: translateY(0); }
|
to { transform: translateY(0); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ao-sidepanel-expand { display: inline-block; }
|
||||||
.ao-sidepanel-header { padding: 8px 12px; }
|
.ao-sidepanel-header { padding: 8px 12px; }
|
||||||
.ao-sidepanel-header::before {
|
.ao-sidepanel-header::before {
|
||||||
content: '';
|
content: '';
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 116 KiB |
@@ -10,6 +10,7 @@ const TABS = ['Commands', 'Tasks', 'Tokens', 'Logs'];
|
|||||||
|
|
||||||
export default function SidePanel({ agentId, agentState, pendingTask, onClose, refreshTrigger }) {
|
export default function SidePanel({ agentId, agentState, pendingTask, onClose, refreshTrigger }) {
|
||||||
const [activeTab, setActiveTab] = useState('Commands');
|
const [activeTab, setActiveTab] = useState('Commands');
|
||||||
|
const [expanded, setExpanded] = useState(false);
|
||||||
const meta = AGENT_META[agentId];
|
const meta = AGENT_META[agentId];
|
||||||
if (!meta) return null;
|
if (!meta) return null;
|
||||||
|
|
||||||
@@ -18,7 +19,7 @@ export default function SidePanel({ agentId, agentState, pendingTask, onClose, r
|
|||||||
: agentState?.state || 'unknown';
|
: agentState?.state || 'unknown';
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="ao-sidepanel">
|
<div className={`ao-sidepanel${expanded ? ' expanded' : ''}`}>
|
||||||
<div className="ao-sidepanel-header">
|
<div className="ao-sidepanel-header">
|
||||||
<div className="ao-sidepanel-agent">
|
<div className="ao-sidepanel-agent">
|
||||||
<div className="ao-sidepanel-icon" style={{ borderColor: meta.color }}>
|
<div className="ao-sidepanel-icon" style={{ borderColor: meta.color }}>
|
||||||
@@ -29,8 +30,18 @@ export default function SidePanel({ agentId, agentState, pendingTask, onClose, r
|
|||||||
<div className="ao-sidepanel-state">● {stateText}</div>
|
<div className="ao-sidepanel-state">● {stateText}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="ao-sidepanel-actions">
|
||||||
|
<button
|
||||||
|
className="ao-sidepanel-expand"
|
||||||
|
onClick={() => setExpanded(e => !e)}
|
||||||
|
aria-label={expanded ? '축소' : '전체 화면'}
|
||||||
|
title={expanded ? '축소' : '전체 화면'}
|
||||||
|
>
|
||||||
|
{expanded ? '⤡' : '⤢'}
|
||||||
|
</button>
|
||||||
<button className="ao-sidepanel-close" onClick={onClose}>×</button>
|
<button className="ao-sidepanel-close" onClick={onClose}>×</button>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="ao-sidepanel-tabs">
|
<div className="ao-sidepanel-tabs">
|
||||||
{TABS.map(tab => (
|
{TABS.map(tab => (
|
||||||
|
|||||||
Reference in New Issue
Block a user